У меня проблема с поиском кратчайшего пути в положительно взвешенном ациклическом графике с прямым взвешиванием, но с ограничением максимального числа N шагов (ребра на пути). Предполагается, что путь существует. Дополнительным свойством графа является то, что если ребро (i, j) находится в графе, то любое ребро (i, k) также находится в графике для i < k < j. Меня интересует только кратчайший путь между началом и концом графика (после топологической сортировки).Исправленный ациклический график кратчайшего пути в пределах N шагов
Я знаю, что существует эффективный алгоритм для кратчайшего пути в Directed Acyclic Graph в O (V + E), но он не учитывает предел шагов. Я не могу придумать, как сделать O ((V + E) * N), но это была бы идеальная производительность, так как она должна быть достаточно хорошей, чтобы обрабатывать графики из 1000 узлов и 100 шагов.
Например, рассмотрите следующие graph.
Проблема заключается в том, чтобы найти кратчайший путь, используя не более k = 3 шага (ребра). Ответ 6 (путь 1-> 4-> 5-> 6).
@SaeedAmiri Проблема заключается в том, чтобы получить кратчайший путь в пределах N шагов (ребра, используемых для пути), не просто кратчайший путь ... – kuba1024g
Как написано, проблема задает путь длины не более N, а позже будет обещано, что такой путь существует, если такой путь существует, то, безусловно, самый короткий путь имеет длину не более N. –
@SaeedAmiri Ясно, что график взвешен – kuba1024g