Является ли соединение островов с понтонами NP-полным?

10

У меня проблема в голове, я думаю, что это проблема NPC, но я не знаю, как это доказать.

Вот проблема:

В очень большом озере k островов и n понтонов в форме вееров. Эти понтоны имеют одинаковый размер, но имеют разные начальные направления и находятся в разных первоначальных положениях в озере. Понтоны могут свободно вращаться вокруг своего центра масс без каких-либо затрат, связанных с вращением.

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

[Примечание]: мы не можем повторно использовать понтоны !!

Задача состоит в том, чтобы найти решение, имеющее минимальное суммарное расстояние движущихся понтонов, чтобы соединить все острова. Расстояние перемещения одного понтона можно рассчитать как расстояние между исходным положением центра масс и его развернутым положением.

Чтобы было понятно, я нарисовал такую ​​фигуру. Предположим, у нас есть 3 острова A, B и C. Они расположены где-то в озере. И у меня есть несколько веерообразных пантонов. Теперь решение состоит в том, чтобы найти минимальное суммирование расстояния перемещения для соединения A, B и C, показанное в нижней части рисунка. Надеюсь, это поможет понять проблему. :)

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

Кажется, проблема в NPC, но я не знаю, чтобы доказать это. Может ли кто-нибудь помочь мне в этом?

Цуёси Ито
источник
@ vsaxena Нет, я не думаю, что окончательное решение - это прямая линия, иногда, если она уже сформирована, но нам не нужно перемещать их. В большинстве случаев прямая линия будет хорошей, но поскольку понтоны становятся более плотными, решение может быть не прямой. На рисунке это всего лишь пример. :)
1
Кажется, очень близко к Steiner Tree. В метрическом пространстве много техник, чтобы решить работу над обоими. en.wikipedia.org/wiki/…
Николас Манкузо
@NicholasMancuso: мосты являются узлами, поэтому это не классическое дерево Штейнера, где мост соединяет несколько узлов. Есть много проблем в макете СБИС, которые имеют сходные характеристики.
VSOverFlow
1
@vsaxena: проблема не указана. Предположим, у меня есть три острова A, B, C в равностороннем треугольнике, и понтоны первоначально образуют связанную форму Y с островками на концах. Ничего не делает правильное решение, или понтоны должны двигаться дальше? Если это решение недействительно, то что именно представляет собой действительную конфигурацию понтонов?
Джефф
1
@vsaxena: И пока мы это делаем, острова - это просто точки, или круги, или какая-то более сложная форма, указанная во входных данных? Являются ли отрезки понтонов линейными, или эллипсами, или какой-либо другой формой? Все острова одинакового размера и формы, или они могут быть разными? Все понтоны одинакового размера и формы, или они могут быть разными?
Джефф

Ответы:

1

Первое: это не проблема коммивояжера. TSP требует идентификации минимального веса гамильтонова цикла; этот цикл не требует цикла или даже минимального веса пути. Это требует минимальной стоимости строительства соединительного набора ребер, где стоимость строительства основана на перемещении понтонов.

Второе: это не проблема связующего дерева с минимальным весом. Смотрите выше - нам требуется минимальная стоимость строительства, а не минимальная идентификация веса.

Третье: кажется, что построенный путь будет составным, но не обязательно с минимальным весом. Альтернатива состоит в том, что это было бы остовное дерево плюс некоторые дополнительные ребра, приводящие к циклу; но если мы начнем с конфигурации без ребер, то у каждого ребра будет некоторая положительная стоимость, и мы всегда сможем найти остовное дерево с меньшим весом, просто не создавая дополнительные ребра.

Четвертое: вы говорите, что понтоны вращаются свободно; Я предполагаю, что это означает, что никакие затраты не связаны с вращением понтонов. Однако вы не указываете, что вращают понтоны: их точки? Их центры масс? Любая внутренняя точка? (Если бы была какая-то внешняя точка, то у нас были бы конструкции с нулевым весом, да?)

Это немного неуловимо, потому что, если мы поворачиваемся на 90 градусов вокруг внутренней точки, скажем, центра масс, какова стоимость? Ничего, потому что это вращение? Некоторая конечная сумма, потому что точка сдвинулась? Теперь нам также нужно знать размер понтонов.

Пятое. Предполагается, что и понтоны, и острова оба включены в евклидову плоскость?

Новак
источник
Спасибо за ваш ответ. Вращение происходит вокруг центра масс, и вращение не связано с какими-либо затратами. Только движение связано с затратами. Да, и понтоны, и острова встроены в евклидову плоскость. Я изменю пост, чтобы прояснить его.
Я не согласен, что это по сути не TSP. Весь этот пост обернут вокруг оси в терминологии, но в том-то и дело, что если провести черту между каждым понтоном и каждым потенциальным конечным положением понтона и рассчитать расстояние каждой линии, равное его весу, то, за исключением из конечной точки, возвращающейся к начальной точке, сформированный график выглядит почти точно (для тройника) как TSP. Понтон или конечная позиция - это узел на графике, а веса составляются расстояниями. Гамильтонов цикл только означает, что он заканчивается там, где он начался.
2
Это не ответ, а серия комментариев.
Рафаэль
1

Посмотрев на новые диаграммы, я вижу, что вам может понадобиться несколько понтонов для пересечения между островами. Учитывая это, вы можете очень близко подойти к решению проблемы дерева Штейнера , превратив узлы в острова и создав достаточно разнообразную коллекцию понтонов с маленькими дугами. Википедия говорит, что на самом деле существует PTAS для проблемы дерева Штейнера, поэтому я не могу сразу сказать, что это делает его NP-завершенным. Однако, глядя на детали дерева Штейнера, вы можете либо получить хорошее примерное решение, либо показать, что проблема NP-Complete.

mcdowella
источник
То, что вы описываете, является приблизительным алгоритмом, чтобы получить почти оптимальное решение. Однако как вы можете убедиться, что решение является оптимальным?
Я думаю, что реальная проблема заключается в том, что вам нужно несколько понтонов для пересечения между островами, что делает его похожим на дерево Штейнера. Посмотрите на Ветвь и Граница, чтобы узнать, как перейти от нижней границы (например, сгенерированной пренебрежением ограничением) к известному оптимальному решению.
Макдовелла
2
@mcdowella Это не дерево Штейнера, поскольку каждый понтон может появляться только на одном мосту; это система точка-точка. Кроме того, поскольку функция стоимости - это перемещение понтонов, у вас может быть случай, когда мост сформирован в виде широких дуг, стоимость которых все еще ниже, чем у решения по прямой линии.
VSOverFlow
Это не может быть Штейнер с другой точки зрения. МЫ НЕ МОЖЕМ ДОБАВИТЬ ТОЧКИ, чтобы удовлетворить наши потребности.
трубачи
1
Если разрешены переходы Y, это, по крайней мере, так же сложно, как проблема дерева Штейнера, потому что любая проблема дерева Штейнера может быть превращена в одну из них - просто создайте много понтонов и расположите их так далеко от островов, что это не действительно важно, какой понтон вы используете где. Тогда, если бы вы могли решить эту проблему, вы могли бы решить проблему дерева Штейнера: для этого аргумента не имеет значения, что существуют некоторые конфигурации понтонов, которые не приводят к проблемам дерева Штейнера. Если переходы Y не позволяют, мы должны точно знать, каковы правила. Пересекаются ли пути на перекрестке?
McDowella
0

После розыгрыша, это все еще проблема NPC. Даже если мы сократим задачу, чтобы каждый понтон мог принять 1 из n положений (т.е. известных соединительных линий. Чтобы получить наиболее оптимальный ответ, нам нужно было бы попробовать каждый понтон в каждой позиции, добавляя их расстояние, чтобы добраться до этих репозитивных позиций каждый время и сравнение со всеми остальными. Если каждый понтон должен быть испытан в каждой позиции, то необходимо проверить n комбинаций.

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

На рисунке ниже показаны все (минус 2, чтобы упростить) понтоны разных цветов со всеми потенциальными конечными точками понтона в КРАСНОМ. Я только нарисовал границу между 3 понтонами и всеми конечными точками, но можно было увидеть, как это может сойти с ума.

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

Ниже мы видим точно, что понтон и расстояние (ака взвешенное расстояние перемещения) должны будут пройти.

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

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

Ниже мы видим виртуальный узел, созданный со ВСЕМИ потенциальными весами расстояния перемещения, которые можно разместить там.

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

Чтобы увидеть, как это будет продолжаться и как не всегда будет наиболее оптимальным решением (как это часто видели с TSP), выбирая кратчайшее расстояние для каждого выбора, нам нужно будет протестировать практически все пути для всех узлов / виртуальных узлов.

В конце концов, первый узел задачи (TSP) может быть любой из потенциальных конечных понтонных точек, и линии, проведенные из этого, являются расстояниями от этой конечной точки до всех других понтонов. все остальные узлы впоследствии становятся виртуальными узлами, как я изобразил, с их линиями, выступающими в качестве расстояний / весов для всех оставшихся понтонов, и так далее, и так далее. То, как эта проблема графа НЕ ТОЛЬКО является проблемой коммивояжера без требования LAST JUMP из гамильтонова цикла, мне недоступно. Чтобы получить точный ответ, нужно проверить все пути через график.

trumpetlicks
источник
1
Оставляя в стороне, является ли это разумной моделью заявленной проблемы или это даже на самом деле модель TSP, это не то, как сокращения NP работают. Вы не показываете, что ваша целевая проблема может быть оформлена как пример проблемы NPC. Вам нужно показать, что экземпляр проблемы NPC может быть обозначен как ваша целевая проблема.
2
О, Боже. Если вы потрудились прочитать мой комментарий и предоставленную мной ссылку, вы узнали, что указанный алгоритм точен (они это доказывают) и поэтому противоречит вашему пониманию. Обратите внимание, что ваше мнение предполагает, что P! = NP - это все еще открытый вопрос. Так что нет, вы этого не поняли, извините. (Даже если бы это было правдой, что NP-полные проблемы могут быть решены не лучше, чем наивно, используемые вами рассуждения были бы неверными.)
Рафаэль
2
O(1.3n)n
3
@JeffE: Другими словами, этот ответ только доказывает, что проблема, вероятно, является NP-полной.
Tsuyoshi Ito