Algorithmus 42 nDamen(i, 〈x1,...,xi−1〉) (Backtracking) FOR y = 1,...,n DO IF y /∈ {x1,...,xi−1} THEN IF es gibt kein j ∈ {1,...,i − 1}, so dass |i − j| = |y − x j| THEN IF i = n THEN gib 〈x1,...,xn−1,y〉 als Lösung aus ELSE nDamen(i+1, 〈x1,...,xi−1,y〉) FI FI FI OD 171
Als Beispiel betrachten wir den Fall n = 5. Die gestrichelten Pfeile auf der Folie deuten das Backtracking an. Mit dieser Vorgehensweise werden <strong>für</strong> das 5-Damen-Problem lediglich 9 Knoten generiert bis die erste Lösung gefunden wird. Der gesamte Aufzählungsbaum hat dagegen 5! = 120 Blätter und 326 Knoten. Das allgemeine Schema <strong>für</strong> Backtracking Das allgemeine Schema <strong>für</strong> Backtracking benutzt einen rekursiven Algorithmus, welcher die Knoten des Aufzählungsbaum im Preorder-Prinzip erzeugt. In dem in Algorithmus 43 angegebenen Schema gehen wir zur Vereinfachung von einem Aufzählungsbaum aus, dessen “Lösungsblätter” allesamt dieselbe Tiefe n haben. Das Schema ist entsprechend umzuformulieren, wenn ein Aufzählungsbaum vorliegt, in dem die Lösungen durch Blätter unterschiedlicher Tiefe repräsentiert sind. Für unendliche Aufzählungsbäume sind zusätzliche Tricks nötig. Die Knoten des Aufzählungsbaum kann man sich als Tupel 〈x1,...,xi−1〉 vorstellen, die <strong>für</strong> die bisher probeweise durchgeführten “Schritte” stehen. Zusätzlich können natürlich noch andere Werte übergeben werden. Die Hilfsfunktion PossibleValues(x1,...,xi−1) generiert alle potentiellen Werte y <strong>für</strong> xi. Dies sind genau diejenigen Werte y, so daß 〈x1,...,xi−1,y〉 ein Knoten im Aufzählungsbaum ist. Oftmals wird die Funktion PossibleValues(...) so gewählt, dass sie lediglich den zulässigen Wertebereich <strong>für</strong> xi berücksichtigt. Die Randbedingungen, die eine Forderung an die Beziehung der Werte x1,...,xi untereinander stellen, werden in einem zweiten Schritt geprüft. Soweit möglich ist es jedoch sinnvoll, auch die Randbedingungen in die Funktion PossibleValues(...) zu integrieren, um den Aufzählungsbaum zu verkleinern. Die angegebene Parametrisierung dient der Anschauung. In vielen Fällen ist es unnötig, die kompletten Werte x1,...,xi−1 zu übergeben, statt dessen können andere Parameter sinnvoll sein. 172
- Seite 1 und 2: 5 Entwurfsmethoden für Algorithmen
- Seite 3 und 4: der Eingabegröße ⌊7/10 · n⌋,
- Seite 5 und 6: T(m) ≤ Cm k logm für alle m < n
- Seite 7 und 8: T(n) = Θ(n)+T( n 7 5 )+T( 10n), di
- Seite 9 und 10: 5.2 Backtracking und Branch & Bound
- Seite 11 und 12: Bemerkung 5.2.2 (Aufzählungsbäume
- Seite 13: Mit dieser Variante des Aufzählung
- Seite 17 und 18: Graphfärben Eine klassische Instan
- Seite 19 und 20: Tatsächlich können wir keinen der
- Seite 21 und 22: In der j-ten Klausel wählen wir ei
- Seite 23 und 24: Das Rucksackproblem Gegeben sind n
- Seite 25 und 26: Gewinn 1,1, 2 2 3 = 30+50+ 3 · 6
- Seite 27 und 28: übergeben werden. Dies entspricht
- Seite 29 und 30: Bemerkung 5.2.7 (Effiziente Berechn
- Seite 31 und 32: nicht nur deren Wert) berechnen, da
- Seite 33 und 34: Algorithmus 51 Branch & Bound Algor
- Seite 35 und 36: jenigen der beiden Söhne mit der b
- Seite 37 und 38: Algorithmus 54 Schema der Least Cos
- Seite 39 und 40: Zielkonfiguration überein, so setz
- Seite 41 und 42: 2 4 5 7 sign(x) = 1 10 12 13 15 Wir
- Seite 43 und 44: Diese formale Sicht eines Spiels al
- Seite 45 und 46: Die beschriebene Technik läßt sic
- Seite 47 und 48: 5.3.1 Das Minimax-Verfahren Mit der
- Seite 49 und 50: Algorithmus 55 Minimax(v,ℓ) IF v
- Seite 51 und 52: Algorithmus 56 α-β-Pruning MaxVal
- Seite 53 und 54: stattfinden. Durch den Einsatz geei
- Seite 55 und 56: 5.4.1 Huffman-Codes Bei der Nachric
- Seite 57 und 58: Definition 5.4.2 (Präfixcode). Sei
- Seite 59 und 60: Algorithmus 58 Algorithmus zur Erst
- Seite 61 und 62: da v ein Knoten maximaler Tiefe ist
- Seite 63 und 64: 5.4.2 Matroide Bevor wir weitere Be
- Seite 65 und 66:
Da die Elemente x1,...,xn nach ihre
- Seite 67 und 68:
• w(L) = max{w(A) : A istU-maxima
- Seite 69 und 70:
Zunächst bilden wir die Problemste
- Seite 71 und 72:
gibt es eine Reihe von Problemen, d
- Seite 73 und 74:
des Automaten kann vorgenommen werd
- Seite 75 und 76:
Auf den ersten Blick könnte man me
- Seite 77 und 78:
5.5.2 Das Wortproblem für kontextf
- Seite 79 und 80:
Die so generierte GrammatikG ′ is
- Seite 81 und 82:
Es ist offensichtlich, daß die Lau
- Seite 83 und 84:
Tatsächlich werden nur n(n+1)/2 Te
- Seite 85 und 86:
Tatsächlich ist also der nicht-AVL
- Seite 87 und 88:
optimaler Suchbaum für x1,...,x k
- Seite 89 und 90:
Beweis. Seien T(i,i + ℓ) die Kost
- Seite 91 und 92:
Beispiele für mögliche Instanzen
- Seite 93 und 94:
Löse Optimierungsvariante 2 mit ei
- Seite 95 und 96:
minimal ist unter allen Paaren ( j,
- Seite 97 und 98:
Diese Überlegungen führen zu dem
- Seite 99:
Aus der binomischen Formel (a+b) m