Цикла максимального веса в графе
дан взвешенный граф (ориентированный или неориентированный) мне нужно найти цикл в графе с максимальным весом.
вес цикла, являющийся суммой веса ребер графа.
Это может быть любой цикл, а не только базовый цикл, для которого мы можем
- найти весь базовый цикл (см. алгоритмы для идентификации всех баз цикла в неориентированном графе )
- вычислите вес каждого базового цикла и найдите максимум
Я мог бы попытаться перечислить все циклы графа, а затем вычислить максимум, но общее количество циклов может быть действительно большим (если граф завершен, то любая последовательность вершин, где первая и последняя идентичны, является циклом).
У вас есть идея найти этот максимальный весовой цикл без перечисления всех циклов ?
Если вам нужна гипотеза на графике (например, положительные веса), пожалуйста, укажите их.
2 ответов
Это NP-трудно.
задача Гамильтонова цикла может быть сведена к этому.
учитывая граф, для которого нам нужно проверить, существует ли Гамильтонов цикл или нет, назначьте вес 1 каждому краю.
теперь запустите алгоритм, чтобы получить максимальный цикл веса. Если вес
Если вы можете найти минимальный взвешенный путь в вашем конкретном случае, просто поменять знаки всех Весов и применить алгоритм. Конечно, вы делаете некоторые невысказанные предположения, потому что аргумент Морона верен (Не каламбур). Предположения, которые вы делаете, могут быть положительными весами или без отрицательных весовых циклов. Я думаю, что вы должны приложить усилия, чтобы сформулировать их, а не позволять людям искать в бесконечном пространстве возможных предположений. Что касается результатов твердости, это также трудно приблизиться к ряду способов, проверьте этой статье. Та же статья содержит несколько положительных результатов для важных типов графиков, но она касается самых длинных невзвешенных путей, поэтому я предполагаю, что большинство алгоритмов в статье не помогут непосредственно в вашем случае. Если вы ищете "тяжелые циклы", вы найдете ряд интересных работ, но они носят более математический характер. Если ваши веса являются малыми целыми числами (до полинома в размере graph), вы можете попытаться заменить каждое ребро невзвешенным путем, чтобы уменьшить вашу проблему до невзвешенного случая. Я надеюсь, что это поможет в какой-то степени, но у вас может быть открытая исследовательская проблема.