Frage

Gibt es einen guten Weg, um einen Multi-Thread A zu tun * suchen? Single-Threaded ist ziemlich einfach, wie angegeben in (zum Beispiel) Künstliche Intelligenz. Ein moderner Ansatz, aber ich habe nicht über eine gute Multi-Thread-Version kommt

Nehmen wir eine vernünftige Sprache wie Java oder C # oder Lisp, wo wir Thread-Pools und Arbeitsblöcke haben, und natürlich die Garbage Collection.

War es hilfreich?

Lösung

Ich empfehle die Lektüre dieses Papiers:

"Parallel bidirektionalen A * Suche auf einer Symmetrie Multi-Prozessor"

Es gibt auch ein anderes Papier, auch bei IEEE genannt:

"Parallel Astar-Suche auf Message-Passing-Architekturen"

Beide Papiere finden, neue Verfahren für einiges an Speedup zu gewinnen.

Andere Tipps

Ich höre, was Sie sagen, aber ich bin nicht sicher, dass Sie sich wünschen. In einem A * suchen Sie den optimalsten Weg nehmen wollen, und Sie wollen nicht zweimal alle Berechnungen für den gleichen Weg zu tun.

Blick auf die Fakten:

  • Die ‚besten‘ Plätze zu wählen, sind alle nebeneinander
  • Die Berechnung für jeden anderen Platz anders als die ‚beste‘ Wahl ist eine vorzeitige Berechnung. Der Punkt von A * ist, dass es die Entscheidungen effizient sind.

Wenn Sie die Anwendung Gewinde müssten Sie:

  • 'Kellner , um sicher zu stellen, dass kein Thread den gleichen Platz berühren und sie neue Plätze zu geben caclulate. Sie würden alle in einem so engen Strickbereich arbeiten, dass sie für den Weg Ressourcen würden kämpfen, weil alle der ‚besten‘ Plätze sind nebeneinander.

Dieses Problem ist verfahrens- und hat keine schöne Art und Weise es die Zerschlagung in einzelne Teile und ist daher nicht eine gute Wahl für Threading. Kurz gesagt niemand hat es getan, weil es keine wünschenswerte Sache zu tun ist. Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top