Шон,
Для меня это звучит как работа по алгоритму Британского музея ... с сыром, конечно.
Под сыром я подразумеваю, что «стоимость» (или «прибыль» в вашем случае) прохождения определенного узла (общий приоритет) может быть функцией этого узла в сочетании со всеми его предшественниками в этом пути , Обход любого конкретного узла будет ОЧЕНЬ дороже в вычислительном отношении, чем традиционный "лабиринт", где каждый узел имеет фиксированную стоимость обхода (например, длину улицы) ... но с максимальной длиной пути всего шесть узлы, которые вы должны всегда иметь возможность быстро достигать наилучшего результата (то есть менее секунды).
Чтобы избежать дублирования, просто не добавляйте узел A к пути, который уже содержит узел A.
Я не вижу причин, почему вы не должны реализовывать это в javascript, но я полагаю, вам нужно реализовать собственную очередь приоритетов, и это довольно сложно само по себе ... Хорошая новость заключается в том, что это опубликовал структуру данных, так что я бы начал с Википедии, чтобы разобраться с этим, а затем в Google трудно понять, смогу ли я найти «приличную» реализацию javascript ... или не смог бы просто перенести реализацию Java.
Это небольшая сложная проблема. Мне будет интересно посмотреть, что вы придумали, и что другие люди предлагают по пути. Держите меня в курсе Вилли?
И еще один совет: чаще всего для игры лучше НЕ принимать оптимальных решений; потому что ваш противник, «простой человек», совершенно не способен рассчитать хорошую (не говоря уже об оптимальной) комбинацию «6 из 25 сил» за секунду, и вероятность того, что они получат лучшую комбинацию случайно, составляет 1 в 25 * 24 * 23 * 22 * 21 * 20 = 127 512 000 ... особенно, если эти "способности" используют друг друга "секретными" способами ... даже если секреты будут опубликованы, "математикам понадобится", чтобы заняться математикой достаточно для достижения результата «выше среднего». Вы понимаете, о чем я?
Приветствия. Кит.