В теории графов и теоретической информатике задача поиска самого длинного пути — это задача поиска простого пути максимальной длины в заданном графе . Путь называется простым , если он не имеет повторяющихся вершин ; длина пути может быть измерена либо числом его ребер, либо (в взвешенных графах ) суммой весов его ребер. В отличие от задачи поиска самого короткого пути , которая может быть решена за полиномиальное время в графах без циклов с отрицательным весом, задача поиска самого длинного пути является NP-трудной , а версия решения задачи, которая спрашивает, существует ли путь хотя бы некоторой заданной длины, является NP-полной . Это означает, что задача поиска решения не может быть решена за полиномиальное время для произвольных графов, если только P = NP . Также известны более сильные результаты по сложности, показывающие, что ее трудно аппроксимировать . Однако она имеет линейное решение по времени для направленных ациклических графов , что имеет важные приложения для поиска критического пути в задачах планирования.
NP-трудность невзвешенной задачи поиска самого длинного пути может быть показана с помощью сведения из задачи поиска гамильтонова пути : граф G имеет гамильтонов путь тогда и только тогда, когда его самый длинный путь имеет длину n − 1, где n — число вершин в G. Поскольку задача поиска гамильтонова пути является NP-полной, это сведение показывает, что версия решения задачи поиска самого длинного пути также является NP-полной. В этой задаче решения входными данными являются граф G и число k ; желаемый выход — да, если G содержит путь из k или более ребер, и нет в противном случае. [1]
Если бы задача о самом длинном пути могла быть решена за полиномиальное время, ее можно было бы использовать для решения этой задачи принятия решений, найдя самый длинный путь и сравнив его длину с числом k . Таким образом, задача о самом длинном пути является NP-трудной. Вопрос «существует ли простой путь в данном графе с по крайней мере k ребрами» является NP-полным. [2]
В полных взвешенных графах с неотрицательными весами ребер задача о взвешенном самом длинном пути совпадает с задачей о пути коммивояжера , поскольку самый длинный путь всегда включает все вершины. [3]
Самый длинный путь между двумя заданными вершинами s и t во взвешенном графе G — это то же самое, что и самый короткий путь в графе − G, полученном из G путем замены каждого веса на его отрицание. Следовательно, если самые короткие пути могут быть найдены в − G , то самые длинные пути также могут быть найдены в G . [4]
Для большинства графов это преобразование бесполезно, поскольку оно создает циклы отрицательной длины в − G . Но если G является направленным ациклическим графом (DAG), то отрицательные циклы не могут быть созданы, и самый длинный путь в G может быть найден за линейное время , применив алгоритм линейного времени для кратчайших путей в − G , который также является направленным ациклическим графом. [4] Для DAG самый длинный путь от исходной вершины до всех остальных вершин может быть получен путем запуска алгоритма кратчайшего пути на − G .
Аналогично, для каждой вершины v в данном DAG длина самого длинного пути, заканчивающегося в v, может быть получена с помощью следующих шагов:
После того, как это будет сделано, самый длинный путь во всем DAG может быть получен, если начать с вершины v с наибольшим записанным значением, а затем многократно возвращаться к ее входящему соседу с наибольшим записанным значением и обращать последовательность вершин, найденных таким образом.
Это эквивалентно запуску алгоритма кратчайшего пути на −G .
Метод критического пути для планирования набора действий включает построение направленного ациклического графа, в котором вершины представляют собой вехи проекта, а ребра представляют действия, которые должны быть выполнены после одного вехи и перед другим; каждое ребро взвешивается оценкой количества времени, которое потребуется для завершения соответствующего действия. В таком графе самый длинный путь от первой вехи до последней является критическим путем, который описывает общее время завершения проекта. [4]
Самые длинные пути направленных ациклических графов также могут быть применены при построении многоуровневого графа : назначение каждой вершины v направленного ациклического графа G слою, номер которого равен длине самого длинного пути, заканчивающегося в v, приводит к назначению слоя для G с минимально возможным числом слоев. [5]
Бьёрклунд, Хусфельдт и Ханна (2004) пишут, что задача о самом длинном пути в невзвешенных неориентированных графах «печально известна сложностью понимания ее аппроксимационной сложности». [6] Лучший полиномиальный алгоритм аппроксимации, известный для этого случая, достигает только очень слабого коэффициента аппроксимации, . [7] Для всех,невозможно аппроксимировать самый длинный путь с точностью до множителя , если NP не содержится в квазиполиномиальном детерминированном времени ; однако существует большой разрыв между этим результатом неаппроксимируемости и известными алгоритмами аппроксимации для этой задачи. [8]
В случае невзвешенных, но ориентированных графов известны результаты сильной неаппроксимируемости. Для каждого задача не может быть аппроксимирована с точностью до множителя, если только P = NP, а при более сильных предположениях теории сложности она не может быть аппроксимирована с точностью до множителя . [6] Метод цветового кодирования может использоваться для поиска путей логарифмической длины, если они существуют, но это дает коэффициент аппроксимации всего лишь . [9]
Задача о самом длинном пути является фиксированно-параметрической, если параметризована длиной пути. Например, ее можно решить за время, линейное по размеру входного графа (но экспоненциальное по длине пути), с помощью алгоритма, который выполняет следующие шаги:
Поскольку выходной путь имеет длину не менее , время выполнения также ограничено , где — длина самого длинного пути. [10] Используя цветовую кодировку, зависимость от длины пути можно свести к однократно экспоненциальной. [9] [11] [ 12] [13] Похожий метод динамического программирования показывает, что задача о самом длинном пути также поддается решению с фиксированными параметрами, если параметризована шириной дерева графа.
Для графов ограниченной ширины клики самый длинный путь также может быть решен с помощью алгоритма динамического программирования с полиномиальным временем. Однако показатель степени полинома зависит от ширины клики графа, поэтому этот алгоритм не является разрешимым с фиксированными параметрами. Задача о самом длинном пути, параметризованная шириной клики, является сложной для параметризованного класса сложности , показывая, что разрешимый алгоритм с фиксированными параметрами вряд ли существует. [14]
Алгоритм линейного времени для поиска самого длинного пути в дереве был предложен Эдсгером Дейкстрой около 1960 года, а формальное доказательство этого алгоритма было опубликовано в 2002 году. [15] Кроме того, самый длинный путь может быть вычислен за полиномиальное время на взвешенных деревьях, на блочных графах , на кактусах , [16] на двудольных графах перестановок , [17] и на птолемеевых графах . [18]
Для класса интервальных графов известен алгоритм с -временем, который использует подход динамического программирования. [ 19] Этот подход динамического программирования был использован для получения алгоритмов с полиномиальным временем выполнения на больших классах графов с дугами окружности [20] и графов совместной сравнимости (т. е. дополнений графов сравнимости , которые также содержат графы перестановок ), [21] оба имеют одинаковое время выполнения . Последний алгоритм основан на специальных свойствах упорядочения вершин лексикографического поиска в глубину (LDFS) [22] графов совместной сравнимости. Для графов совместной сравнимости также известен альтернативный алгоритм с полиномиальным временем выполнения с более высоким временем выполнения, который основан на диаграмме Хассе частично упорядоченного множества, определяемого дополнением входного графа совместной сравнимости. [23]
Более того, задача о самом длинном пути разрешима за полиномиальное время на любом классе графов с ограниченной древовидной шириной или ограниченной кликовой шириной, например, на дистанционно-наследуемых графах . Наконец, она, очевидно, NP-трудна на всех классах графов, на которых задача о гамильтоновом пути является NP-трудной, например, на расщепленных графах , круговых графах и планарных графах .
Простая модель направленного ациклического графа — это модель Прайса , разработанная Дереком Дж. де Соллой Прайсом для представления сетей цитирования . Она достаточно проста, чтобы позволить находить аналитические результаты для некоторых свойств. Например, длина самого длинного пути от n-го узла, добавленного в сеть, до первого узла в сети масштабируется как [24] .