2013-02-24 3 views
5

Я работаю над проектом с виртуальным роботом (Черепахи в ModCraft для PocketCraft), где робот будет находиться в лабиринте туннелей и должен перемещаться по ним. Мир теперь уже разделен на плитки (2D-декартовский граф из них с булевым пропускаемым/непередаваемым значением для каждого), а построение робота туннелей будет отображать их по ходу.Отслеживание с помощью телепортов

Кроме того, в местах, где роботы должны быстро добраться между ними, есть «ярлыки» телепортера.

Вопрос в следующем: какой лучший способ иметь робот-путь к месту назначения? Как система идентифицирует области, которые нуждаются в телепортерах? A * - самый известный алгоритм, но есть ли другие, которые могут удовлетворить приложение лучше? Пожалуйста, имейте в виду, что у меня очень мало опыта в алгоритмах поиска путей, поэтому вам, возможно, придется разобраться с базовыми условиями, чтобы я мог понять. Какие-либо предложения?

+3

Почему бы не попробовать A * сначала и посмотреть, как он работает? –

+0

Я, конечно, мог бы, но я бы предположил, что A * не принимает «ярлыки», как телепорты, без учета взлома. Мне нужно будет изучить, как алгоритм работает немного больше. – Schilcote

+0

Какой взлом? Я думаю, что A * отлично работает с краями нулевой длины. Мне любопытно. –

ответ

2

Проблема с использованием A *: найти admissible heuristic для вашей проблемы. К счастью, это уже было ответило here.

Как система идентифицирует области, которые нуждаются в телепортерах?

Это зависит от того, где черепаха действительно перемещается в/из. Если он всегда перемещается в/из одинаковых начальных/конечных точек, ответ тривиален: добавьте телепорты в начале и в конце. Для более сложных настроек я предполагал, что это NP-hard; если это правда, вам нужно будет посмотреть global-optimization strategies(или просто попробуйте кучу случайных позиций и возьмите лучший).

Смежные вопросы