Algorithmus des N-queens
Algorithm NQueens ( k, n) //Prints all Solution to the n-queens problem
{
for i := 1 to n do
{
if Place (k, i) then
{
x[k] := i;
if ( k = n) then write ( x [1 : n]
else NQueens ( k+1, n);
}
}
}
Algorithm Place (k, i)
{
for j := 1 to k-1 do
if (( x[ j ] = //in the same column
or (Abs( x [ j ] - i) =Abs ( j – k ))) //or in the same diagonal
then return false;
return true;
}
Dem obigen code ist für die Lösung des N-Damen-problem mit backtracking.Ich denke, dass es kann legen die ersten 2 queens von zwei Zeilen in den jeweiligen Spalten und dann, wenn es um die 3. Zeile Königin kann es nicht aufgestellt werden, da keine Königin muss angreifen, und es wird einfach die Ausfahrt vom Algorithmus N queens...Also, wie ist dieser Algorithmus implementiert backtracking?
InformationsquelleAutor user2967440 | 2013-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Geheimnis hier ist die Rekursion.
Lassen Sie jedes level der Einrückung unten deuten auf eine Ebene der Rekursion.
(nicht das, was tatsächlich geschieht, als der Dritte Königin kann leicht platziert werden, aber es wäre einfach genommen haben, schon ein bisschen mehr schreiben und/oder denken zu bekommen, zu einem Fall, der tatsächlich nicht)
Etwas mehr im Einklang mit dem, was der code tatsächlich tut: (immer noch nicht, was tatsächlich geschieht)
Ich hoffe, das hilft.
InformationsquelleAutor Dukeling
InformationsquelleAutor Juvenik
Habe ich code für diese ohne Verwendung von backtracking, aber das schöne ist, es ist mit Zeit-Komplexität von big-oh(n).
Dieser code funktioniert gut und gibt eine Lösung, aber jetzt bin ich auf der Suche immer alle möglichen Lösungen mit diesem Algorithmus.
InformationsquelleAutor Rachna Raj