Ich bin völlig neu in herauszufinden, wie Graph funktioniert (DFS). Ich habe viele Tutorials darüber gelesen, wie man mit DFS einen Labyrinth-Pfad-Such-Löser erstellt, und es gibt einen Teil, den ich nicht bekomme. Wie in der Welt finde ich heraus, wer die Nachbarn einer Ecke sind? Forinstens Ich habe dieses Labyrinth: mazeDFS Labyrinth Problem, wie Nachbarn zu finden
Ich habe alle Zeichenfolgen in einem zweidimensionalen Array namens "Namen" platziert. Also, wenn ich forinstens schreiben:
names[0,0] // it contains the string +
wenn ich schreibe:
names[0,1] // it contains the string -
wenn ich schreibe:
names[1,0] //it contains the string B
usw. Aber wie Namen nicht [1,0] kennt seine Nachbarn Namen [0,0], Namen [2,0] und Namen [1,1]?
Sie bauen mit vier Eigenschaften eine Node-Klasse: Ein intelligentes Packschema verwendet wie oben line = 1, rechtse Linie zu machen = 2, unter dem Strich = 4, linke Linie = 8. Das gesamte Labyrinth kann wie folgt definiert werden : Oben, Unten, Links, Rechts, zeigt an, ob ein Knoten für jede der vier Richtungen einen Nachbarn hat. Dein Labyrinth ist Node [,] Labyrinth. – jdweng
@jdweng aber wie weiß ein Knoten, ob er einen Nachbarn hat? Forinstens sagen wir haben einen gerichteten Graphen, wo A auf B zeigt. Wie weiß A, dass es auf B zeigt und wie weiß B, dass es nicht auf a zeigt? Es sei denn, ich gehe natürlich hinein und füge jeden Nachbarn manuell zu jedem Knoten hinzu. aber da es wie 400 Knoten ist, scheint es eine schlechte Idee zu sein. – cop77
Nein. Schauen Sie sich das Labyrinth sorgfältig an. Einige Pluszeichen haben eine vertikale/horizontale Linie zwischen ihnen und andere nicht. Ein Knoten ist das Quadrat zwischen 4 Pluszeichen. Es gibt 4 Eigenschaften, die boolesche (Nachbarn) sind: Oben, Unten, Links, Rechts, die eine vertikale/horizontale Linie haben können. Wenn die vertikale/horizontale Linie vorhanden ist, ist der Wahrheitswert wahr, was anzeigt, dass es keinen Nachbarn gibt, da die Richtung blockiert ist. Wenn ein Nachbar (keine Linie) vorhanden ist, können Sie 1 addieren/subtrahieren, um die Nachbarposition in dem Array zu erhalten. – jdweng