Lernpfad:Rekursion in Java/Rekursion bei Schachproblemen: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 6: Zeile 6:


Ein rekursiver Algorithmus könnte wie folgt aussehen:  
Ein rekursiver Algorithmus könnte wie folgt aussehen:  
<code>
<syntaxhighlight >
dame(t, zeilen, n)  
dame(t, zeilen)  
   Falls t < n ist
   Falls t < 8 ist
   DANN
   DANN
     pos = erste Leere Zeile
     pos = erste Leere Zeile
     wiederhole solange pos < n ist
     wiederhole solange pos < 8 ist
       setze die Dame auf die Position
       setze die Dame auf die Position
       prüfe ob die Dame mit einer anderen kollidiert
       prüfe ob die Dame mit einer anderen kollidiert
Zeile 17: Zeile 17:
         nächste freie Zeile verwenden
         nächste freie Zeile verwenden
       Falls nein
       Falls nein
         loesung = dame(t+1)
         loesung = dame(t+1, zeilen)
     Falls !loesung  
     Falls !loesung  
     DANN  
     DANN  
Zeile 24: Zeile 24:
     speicher die Lösung / gib die Lösung aus  
     speicher die Lösung / gib die Lösung aus  
     gib true zurueck
     gib true zurueck
</code>
</syntaxhighlight >
# Springerproblem  
# Springerproblem  
## https://de.wikipedia.org/wiki/Springerproblem
## https://de.wikipedia.org/wiki/Springerproblem

Version vom 8. Januar 2019, 11:24 Uhr

Im Kontext des Schachspiels gibt es zwei sehr bekannte Problemstellungen. An dieser Stelle sollen einfach nur ein paar Links für interessierte hinzugefügt werden:

  1. Dameproblem

Man versucht 8 Damen auf dem Schachbrett zu positionieren. Dabei müssen die Damen so aufgestellt werden, dass sich keine Damen gegenseitig schlagen.

Ein rekursiver Algorithmus könnte wie folgt aussehen:

dame(t, zeilen) 
  Falls t < 8 ist
  DANN
    pos = erste Leere Zeile
    wiederhole solange pos < 8 ist
      setze die Dame auf die Position
      prüfe ob die Dame mit einer anderen kollidiert
      Falls ja
        nächste freie Zeile verwenden
      Falls nein
        loesung = dame(t+1, zeilen)
    Falls !loesung 
    DANN 
      gib false zurueck
  SONST
    speicher die Lösung / gib die Lösung aus 
    gib true zurueck
  1. Springerproblem
    1. https://de.wikipedia.org/wiki/Springerproblem
    2. http://www.axel-conrad.de/springer/springer.html
    3. https://docplayer.org/41857208-Backtracking-mit-heuristiken.html
  1. https://www.mathe-online.at/materialien/matroid/files/schach/schachbrett.html
  1. Labyrinth http://www.erasmus-reinhold-gymnasium.de/info/rekursion-iteration/Backtracking_final.pdf