I gefragt wurde kürzlich this question in einem Interview:Wie in polynomialer Zeit zu lösen Rat in Maze Puzzle?
ein Labyrinth als N * N binäre Matrix von Blöcken gegeben, in dem Quellenblock das obere linke meist Block dh, maze [0] [0] und Ziel Block ist unteren rechten Block, dh, Labyrinth [N-1] [N-1]. Eine Ratte startet von der Quelle und muss das Ziel erreichen. Die Ratte kann sich nur in zwei Richtungen bewegen: vorwärts und abwärts. (oder 4 im fortgeschrittenen Problem). In der Labyrinth-Matrix bedeutet 0 , dass der Block eine Sackgasse ist und 1 bedeutet, dass der Block im Pfad von der Quelle zum Ziel verwendet werden kann.
Meine Antwort war die im Link erwähnte, die Backtracking verwendet. High level Pseudo-Code aus dem Link:
If destination is reached
print the solution matrix
Else
a) Mark current cell in solution matrix as 1.
b) Move forward in horizontal direction and recursively check if this
move leads to a solution.
c) If the move chosen in the above step doesn't lead to a solution
then move down and check if this move leads to a solution.
d) If none of the above solutions work then unmark this cell as 0
(BACKTRACK) and return false.
Der Interviewer ganz durch meine Antwort überrascht war, und war offenbar ein Polynom Zeit Lösung zu erwarten.
Gibt es eine polynomielle Zeitlösung für dieses Problem?
Nehmen Sie sich Zeit, um alle notwendigen Details in Ihrem Post hier aufzunehmen und vermeiden Sie sich auf externe Websites verlassen. Siehe die Seite [Wie zu fragen] (http://stackoverflow.com/help/how-to-ask). – ray
@amit danke für die Zeit nehmen, um meine Frage zu bearbeiten und eine Antwort zu geben. @ Ray Ich würde auf jeden Fall darauf achten, Ihren Rat zu befolgen und wie Sie Richtlinien in meinen zukünftigen Posts fragen. –