Warum ist das sogenannte backtracking?
Habe ich in der Wikipedia nachgelesen und auch Gegoogelt,
aber ich kann nicht herausfinden, was "Backtracking-Algorithmus" bedeutet.
Sah ich diese Lösung von "Cracking the Code-Interviews"
und Frage mich, warum ist das ein backtracking-Algorithmus?
dieser code Risse das interview, weil er gegen Java-code style
Weil Sie beim ersten check-Schubladen in den ersten Raum, aber nicht gefunden, so dass Sie zurück aus dem ersten Raum zu überprüfen, die Schubladen in den nächsten Raum. Es ist auch als Trial & Error.
Weil Sie beim ersten check-Schubladen in den ersten Raum, aber nicht gefunden, so dass Sie zurück aus dem ersten Raum zu überprüfen, die Schubladen in den nächsten Raum. Es ist auch als Trial & Error.
InformationsquelleAutor Elad Benda2 | 2014-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Backtracking" ist ein Begriff, der Auftritt in der Aufzählung algorithmen.
Baute man eine "Lösung" (das ist eine Struktur, wo jeder variable wird ein Wert zugewiesen).
Es ist jedoch möglich, dass während der Bau -, merkt man, dass die Lösung ist nicht erfolgreich (nicht erfüllen bestimmte Einschränkungen), dann backtrack: Sie rückgängig machen, bestimmte Zuordnungen von Werten zu Variablen, um Ihnen zuordnen.
Beispiel:
Basierend auf Ihrem Beispiel, das Sie wollen, bauen Sie einen Pfad in einem 2D-raster. So starten Sie die Generierung Pfade von (0,0). Zum Beispiel:
Nein. Manchmal sind Sie daran interessiert, alle Lösungen, oder die "besten" fünf (wenn Sie vergleichen, können zwei Lösungen). Aber von dem moment an, die Sie manchmal brauchen, um die "zerstören", ein Teil von dem, was Sie konstruiert haben, die früher um zu zuweisen, der Variablen, spricht man von einem backtracking-Algorithmus.
InformationsquelleAutor Willem Van Onsem
Backtracking ist eine form von Rekursion, mal.
Diese boolean-based-Algorithmus wird konfrontiert mit einer Wahl, dann die Wahl-und dann präsentiert sich mit einer neuen Reihe von Möglichkeiten nach, die erste Wahl.
Konzeptionell, starten Sie an der Wurzel des Baumes; der Baum hat wahrscheinlich einige gute Blätter und einige schlechte Blätter, obwohl es sein kann, dass die Blätter sind alle gut oder alle schlecht. Sie wollen sich auf ein gutes Blatt. An jedem Knoten beginnend mit der Wurzel, die Sie wählen, eines seiner Kinder zu bewegen, und halten Sie diese, bis man zu einem Blatt.(Siehe Bild unten)
Erläuterung Beispiel:
Quelle: upenn.edu
so dass Sie don ' r einmal versuchen, F? ist das nur für algorithmen, die auf der Suche nach ein gutes Ergebnis nur?
In diesem Beispiel im wesentlichen. Dies Rekursion/enumeration; man ändern könnte, um zu suchen ALLE gute Blätter. Aber in dieser situation, wir waren auf der Suche nur für einen (den ersten Zugriff). @user1065869
InformationsquelleAutor Josef E.
Vom Wikipedia:
Backtracking einfach zu realisieren ist, als ein rekursiver Algorithmus. Sie suchen für die Lösung eines Problems der Größe n durch die Suche nach Lösungen, die der Größe n - 1 und so weiter. Wenn die kleine Lösung nicht funktioniert, verwerfen.
Ist im Grunde, was der code oben tut: es gibt true zurück in die base, sonst ist es 'versucht' den rechten Weg oder den linken Pfad verwerfen Sie die Lösung, die nicht funktioniert.
Da der code oben ist es rekursiv ist, ist es vielleicht nicht klar, wo die "backtracking" ins Spiel kommt, aber was der Algorithmus eigentlich tut, ist die Erstellung einer Lösung einer partiellen, wo die kleinste mögliche Lösung behandelt wird in Zeile 5 in deinem Beispiel. Eine nicht rekursive version des Algorithmus starten zu müssen, von der kleinsten Lösung und bauen von dort aus.
InformationsquelleAutor Giovanni Botta
Ein Algorithmus ist eine "back-tracking", wenn er versucht eine Lösung, und auf Fehler, liefert eine einfachere Lösung als basis für neue versuche.
In dieser Implementierung
geht zurück entlang dem Pfad, wenn der aktuelle Pfad nicht erfolgreich ist, so dass ein Anrufer können versuchen, eine andere Variante der Pfad führte
current_path
.InformationsquelleAutor Mike Samuel
Backtracking bedeutet im Grunde versuchen alle möglichen Optionen. Es ist in der Regel die naive, ineffiziente Lösungen zu Problemen.
In deinem Beispiel-Lösung, das ist genau das, was Los ist - Sie versuchen alle möglichen Wege, rekursiv:
Sie versuchen jede mögliche Richtung, wenn Sie ein erfolgreicher Weg - gut. wenn nicht - backtrack und versuchen eine andere Richtung.
InformationsquelleAutor Jenian