У меня действительно сложная проблема, и я просто задаюсь вопросом, какой алгоритм можно использовать для поиска самого быстрого маршрута. Неориентированный граф состоит из положительной и отрицательной корректировок, эти корректировки влияют на бота или предмет, который перемещается по лабиринту. Проблема у меня есть лабиринты, которые содержат циклы, которые могут быть + или -. Пример может помочь: -Каков наилучший алгоритм для перемещения графика с отрицательными узлами и узлами петли
узел А дает 10 баллов до объекта
узел В принимает 15 от объекта
узел С дает 20 баллов до объекта
route = ""
стартовый узел - это A, а endin г узел С
дал граф структура, как: -
a(+10)-----b(-15)-----c+20
node() means the node loops to itself - and + are the adjustments
узлы с нет петель не с + 20, так что узел с имеет положительную регулировку 20, но не имеет петель
если бот или объект имеет 10 очков в его ресурс, то лучший путь будет: -
a > b > c the object would have 25 points when it arrives at c
маршрут = «а, б, в»
это довольно просто реализовать, следующая задача - знать, как вернуться к хорошему узлу, допустим, что на каждом узле вы можете найти любой из узлов своего соседа и уровень их настройки. вот следующий пример: -
если бот начал только 5 очков, то лучший путь будет
a > a > b > c the bot would have 25 points when arriving at c
маршрут = «а, а, б, в»
это было очень простой график, но когда у вас много других узлов, боту становится очень сложно узнать, следует ли зацикливаться на хорошем узле или переходить от одного хорошего узла к другому, отслеживая возможный маршрут.
такой маршрут будет очередью возврата.
Более трудный пример приведет много вперед и назад
бот имеет 10 очков
a(+10)-----b(-5)-----c-30
а> Ь> а> Ь> а> Ь> а> Ь> а> Ь > c с 5 очками влево.
другой способ бот может сделать это: -
а> а> а> Ь> с
это более эффективный способ, но как, черт возьми, вы можете запрограммировать это отчасти мой вопрос ,
Кто-нибудь знает о хорошем алгоритме для решения этого вопроса, ив уже изучал Беллман-Форды и Дейкстра, но они дают простой путь, а не цикл.
может быть рекурсивным в некотором роде или в какой-то форме эвристики?
со ссылкой на вашу аналогию: -
Я думаю, что я получаю то, что вы имеете в виду, немного псевдо будет понятнее, до сих пор маршрут()
q.add(v)
best=v
hash visited(v,true)
while(q is not empty)
q.remove(v)
for each u of v in G
if u not visited before
visited(u,true)
best=u=>v.dist
else
best=v=>u.dist
Из примера я выводя, что:. «бот имеет номер ресурса, который представляет собой целое число, которое не может быть позволено упасть ниже нуля ,Каждый узел имеет значение; при посещении узла ресурс бота изменяется на это значение ». Правильно ли это? – gcbenison