У меня есть ориентированный ациклический граф и вам нужно найти кратчайшие пути с ограничениями ресурсов. Мое ограничение состоит в том, что выбранные пути должны иметь минимальное количество потребляемого ресурса.Кратчайшие пути с ограничениями ресурсов
В настоящее время я использую Yen's K Shortest Path algorithm для расчета кратчайших путей K, а затем принимаю только те, которые удовлетворяют моему ограничению. Проблема здесь в том, чтобы угадать K, как если бы она была неправильно выбрана, возможно, что не будет найдено возможных путей.
Я нашел довольно много литературы по этой теме, this дает хороший обзор, я думаю. Тем не менее, я изо всех сил пытаюсь понять это и найти сжатый алгоритм, который может быть реализован (я использую Python, однако любые четкие алгоритмические идеи были бы замечательными).
Я понимаю, что эта проблема NP-Complete, и поэтому меня интересуют любые алгоритмы хорошего приближения, а также точные подходы.
У кого-нибудь есть хорошие рекомендации?
Можете ли вы объяснить, что вы подразумеваете под ограничениями ресурсов? Не похоже, что эта проблема будет NP-hard, если эти ограничения имеют определенные форматы. – templatetypedef
Я не только пытаюсь найти кратчайшие пути, но путь, который удовлетворяет ограничению (только один пока, пока я получаю его работу, но, возможно, больше в будущем). Это ограничение min. Каждый узел N в графе вносит x в общий ресурс N_x. Чтобы путь был действительным, сумма (N_x)> = Min, для всех N в пути. – steven
Ваша общая ссылка не работает для меня, но вы пробовали алгоритм k-shortest-paths Eppstein? Он не требует ограничения k заранее, но генерирует кратчайшие пути один за другим, и вы можете просто продолжать генерировать их, пока не найдете тот, который удовлетворяет вашим ограничениям. – han