Ich stieß auf ein Problem, wo ich ein kleines Feature zu meinen Hausaufgaben hinzufügen wollte und es erwies sich als überwältigend für mich (lesen Sie fetteste Sätze für Fragen ohne Kontext).Gebäude Adjazenz Grafik aus Schachbrett (für Dijkstra)
Mein Programm enthält eine Liste von ungefähr 35 Elementen, die Informationen über die Karte enthalten, mit der ich arbeiten soll. Es können die folgenden Elemente aufweisen:
- "Wand" mit seinen Koordinaten (X, Y), in der Dijkstra es soll an Gewicht 100.
- "Baum" mit Korden (X, Y) haben, 3 Gewicht
ich habe eine 10x10 Karte wie ein Schachbrett angelegt, die zu 100 Kacheln bedeuten, und 35 Elemente. "Nichts" in der Liste bedeutet Gewicht 1 in Dijkstra (es bedeutet eine normale Route)
Um die Dijkstra arbeiten zu lassen und in der Lage zu sein, den kürzesten Weg zwischen zwei Kacheln zu finden, muss ich ein Adjazenzdiagramm erstellen. Mein Problem hier ist, wie Kacheln "um" die aktuelle Kachel zu definieren, wenn alles, was ich habe, ist diese Liste?
Nur benachbarte Kacheln in Form von „+“ haben Kanten in der Grafik zwischen ihnen, aber ich habe durch die Liste laufen jedes Mal, um zu überprüfen, ob es etwas drauf ist?
Jeder Hinweis auf das Problem würde sehr geschätzt werden, auch wenn Sie mich auf eine Quelle mit einem Codebeispiel zeigen können, das könnte auch tun. Ich sehe nur wirklich chaotischen Code mit vielen "If-elseif-elseif ...", um das zu lösen.
Vielen Dank für Ihre Zeit!
Edit: Ich endete mit @kraskevichs vorgeschlagenen Weg, und es funktioniert ausgezeichnet, aber alle Antworten und Vorschläge waren wirklich nützlich, vielen Dank allen!
Dies scheint auf einem Missverständnis beruht, gibt es keine Notwendigkeit t o * tatsächlich * ein Diagramm für Dijkstra zu erstellen, ist es völlig in Ordnung (und tatsächlich häufiger), das Diagramm implizit "existieren" zu lassen. – harold
@harold Hast du irgendwo einen Pseudocode oder nur eine Beschreibung, aus der ich den Dijkstra ohne Graph erstellen könnte? Ich würde es lieben! – Dragonturtle
Der Pseudo-Code ist genau der gleiche, er erwähnt überhaupt keine Graphen. Es sei denn, Sie betrachten seltsam niedrigen Pseudo-Code. – harold