Wie du die Daten speicherst ist eigentlich egal. Es muss nur möglichst schnell sein. Mit PHP ist wohl die schnellste Variante das Array, ein DB kommt da wohl aber für den mehrfachen Gebrauch sicher nicht in Frage, ausser die wolltest z.B. alle Züge vorberechnet speichern.
Zwei eindimensionale Arrays sind sehr wahrscheinlich schneller als ein zweidimensionales.
Wenn du nicht den besten Weg findest ist entweder deine Heuristik schlecht oder aber du hast den A*-Algorithmus nicht richtig umgesetzt.
Je nachdem was für eine Karte du has (wie gross und wie kompliziert aufgebaut sie ist) wäre in deinem Fall auch eine Greedy Best First Search sinnvoll.
Wenn du tatsächlich eine sehr grosse und sehr komplex aufgebaute Karte hast, sodass es schwer oder zu aufwändig ist eine genauere Heuristik zu erstellen, dann kannst du bei deinen Weg über Backtracing mit Hilfe des Bresenhams Algorithmus (den kennst du vieleicht vom Linien ziehen in Grafikbearbeitungsprogrammen; es ist das selbe Prinzip, ausser dass du jeweils die Länge der erzeugten Linie + Länge bis zum Ziel + Länge bis zum Start berechnest) noch etwas optimieren, aber der A* alleine sollte eigentlich in den meisten Fällen reichen.
Zwei eindimensionale Arrays sind sehr wahrscheinlich schneller als ein zweidimensionales.
Wenn du nicht den besten Weg findest ist entweder deine Heuristik schlecht oder aber du hast den A*-Algorithmus nicht richtig umgesetzt.
Je nachdem was für eine Karte du has (wie gross und wie kompliziert aufgebaut sie ist) wäre in deinem Fall auch eine Greedy Best First Search sinnvoll.
Wenn du tatsächlich eine sehr grosse und sehr komplex aufgebaute Karte hast, sodass es schwer oder zu aufwändig ist eine genauere Heuristik zu erstellen, dann kannst du bei deinen Weg über Backtracing mit Hilfe des Bresenhams Algorithmus (den kennst du vieleicht vom Linien ziehen in Grafikbearbeitungsprogrammen; es ist das selbe Prinzip, ausser dass du jeweils die Länge der erzeugten Linie + Länge bis zum Ziel + Länge bis zum Start berechnest) noch etwas optimieren, aber der A* alleine sollte eigentlich in den meisten Fällen reichen.
Kommentar