Самый длинный цикл состоит из двух циклов


11

Является ли следующая задача NP-полной? (Я предполагаю, что да).

Входные данные: - неориентированный граф, в котором множество ребер можно разложить на два простых цикла, не пересекающих ребра (они не являются частью входных данных).kN,G=(V,E)

Вопрос: существует ли простой цикл в с длиной больше ?Gk

Очевидно, что проблема в NP, и максимальная степень в равна , но это, похоже, не помогает.G4


1
Я не думаю, что вы правы насчет "не более 4 путей, соединяющих любую пару". См .: i.imgur.com/mYL4n1V.png
svinja

1
@svinja Вы правы, я должен был сказать, что между любой парой из двух вершин существует не более 4 парных непересекающихся путей.
Объявление

Ваш заголовок вводит в заблуждение, потому что самый длинный простой цикл не может быть ни одним из двух циклов в разложении (в любом разложении). E
Денис

@dkuper это может на самом деле, посмотрите на объединение двух вершин непересекающихся простых циклов.
Листинг

Моя точка зрения не в том, что он никогда не может быть одним из них, а в том, что иногда это не один из них. Так что проблема не в том, чтобы найти большее из двух.
Денис

Ответы:


2

Попытка сокращения ....

Сокращение от гамильтонова пути на орграфе с максимальной степенью 3, которое является NPC [G & J]граммзнак равно(В,Е)

  • игнорировать направление ребер и, используя первое сканирование глубины (ненаправленное) от произвольного узла, разделить ребра на два набора отличных (ненаправленных) путей (красный и зеленый на рисунках);грамм
  • соедините красные пути, добавив дополнительные «связывающие узлы» (фиолетовые узлы на рисунке B) и сделайте неориентированный красный контур; соедините зеленые пути, добавив дополнительные «связывающие узлы» (фиолетовые узлы на рисунке) и сделайте неориентированный зеленый контур;
  • преобразовать каждый исходный узел из степени 1 и степени 2 (рисунок C), добавив k желтых узлов на входящий красный крайбВК и добавив k желтых узлов на первый исходящийкрасныйкрай b c ; наконец, добавьте k желтых узлов «по направлению» ко второму исходящемузеленомукраю b d, используя «обернутый» путь вокруг b, который касается крайних желтых узлов красных краев (рисунок D).aбКбсКбdб

В полученном графике все желтые узлы могут перемещаться с помощью простого пути только в двух направлениях показали на рисунке E и F, фигуры , которые соответствуют двум действительным прохождений исходного узла B V ; неформально , если ребро к EXTRA «связывая» фиолетовый узел используется, K - желтые узлы не могут перемещаться.3КбВК

  • преобразовать каждый оригинальный узел V от 2 и полустепени захода полустепени 1 аналогичным образом

Подбор достаточно большой , граф результатов G К»|В|грамм' есть простой путь длины больше тогда и только тогда, когда исходный граф G имеет гамильтонов путь (длины | V | - 1 )3К(|В|-1)грамм|В|-1

введите описание изображения здесь

Большую картину можно скачать здесь


Это очень красивое доказательство, может быть, вам следует направить края на рисунке «А», чтобы было легче понять, как получить пути (хотя я думаю, что я это понял).
Листинг

@Listing: строительство путей не зависит от ориентированных ребер ( на самом деле я написал «неориентированный» поиск в ответе). Вы должны начать с произвольного узла, сначала выполнить сканирование по глубине, раскрасив его красными пройденными краями, затем вернуться к первому обнаруженному узлу степени 3 и продолжить сначала сканирование по глубине, покрасив его зелеными пройденными ребрами, и так далее. .. возможно, имеет более формальное определение, но он не приходит на ум прямо сейчас. Дайте мне знать, если вам нужна дополнительная информация.
Вор

Я вижу, свойство, по которому ребра проходят в «правильном» направлении, обеспечивается последним преобразованием. Спасибо за разъяснение.
Объявление

0

Вдохновленный ответом Вора, я хочу дать более простой.

Начнем с задачи о гамильтоновом цикле для задачи сеточных графов, которая была доказана Итаем.

Легко видеть, что множество ребер графа сетки можно разбить на 2 непересекающихся подмножества: горизонтальное и вертикальное.

Итак, теперь нам нужно сплести все горизонтальные в один простой цикл, а все вертикальные - в другой простой цикл.

Это очень простая задача: для вертикальных разверните от крайнего левого до крайнего правого положения, просто соедините все вертикальные промежутки, затем соедините последовательную вертикальную линию, скоординированную по X, затем соедините самую нижнюю левую вершину с самой высокой правой вершиной. Сделайте аналогично для горизонтальных краев.

Обратите внимание, что полученный граф все еще прост, неориентирован и удовлетворяет требованию. Это просто, потому что на последних этапах вертикальной фазы и горизонтальной фазы мы имеем дело с двумя различными парами вершин.

Теперь сделайте тот же трюк, что и Вор. В каждой вершине для каждого ее исходного инцидентного ребра добавьте К новых вершин. Как обычно, К ahouls должны быть достаточно большими. Наконец, длина подлинного гамильтонова цикла должна быть 2К|В|

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.