Czy łączenie wysp z pontonami NP-zupełne?


10

Mam w głowie problem, myślę, że jest to problem NPC, ale nie wiem, jak to udowodnić.

Oto problem:

Istnieje k wyspy w bardzo dużym jeziorem, a tam są n kształcie wachlarza pontony. Te pontony są tego samego rozmiaru, ale mają różne początkowe kierunki i znajdują się w różnych oryginalnych pozycjach w jeziorze. Pontony mogą swobodnie obracać się wokół środka masy, bez rotacji.

Teraz musimy przenieść te pontony, aby wszystkie wyspy w jeziorze mogły zostać połączone. Możemy zagwarantować, że liczba pontonów wystarczy do połączenia wszystkich wysp.

[Uwaga]: Nie możemy ponownie wykorzystać pontonów !!

Zadaniem jest znalezienie rozwiązania mającego minimalną całkowitą odległość ruchomych pontonów, aby połączyć wszystkie wyspy. Odległość przemieszczenia jednego pontonu można obliczyć jako odległość między środkiem pierwotnej pozycji masy a jej położeniem rozłożonym.

Aby to wyjaśnić, narysowałem taką liczbę. Załóżmy, że mamy 3 wyspy A, B i C. Znajdują się one gdzieś w jeziorze. I mam kilka pantoonów w kształcie wachlarza. Teraz rozwiązaniem jest znalezienie sumy minimalnej odległości ruchu łączącej A, B i C, pokazanej w dolnej części rysunku. Mam nadzieję, że pomoże to zrozumieć problem. :)

wprowadź opis zdjęcia tutaj

Wygląda na to, że problemem jest NPC, ale nie wiem, jak to udowodnić. Czy ktoś może mi z tym pomóc?


@vsaxena Nie, nie sądzę, że ostateczne rozwiązanie jest linią prostą, kiedyś tworzą łuk, ale nie musimy ruszać żadnym z nich. W większości przypadków prosta linia będzie dobra, ale ponieważ pontony stają się gęstsze, rozwiązaniem może nie być linia prosta. Liczba jest tylko przykładem. :)

1
Wydaje się bardzo blisko Steiner Tree. W przestrzeni metrycznej wiele technik rozwiązywania problemów działa na oba. en.wikipedia.org/wiki/…
Nicholas Mancuso

@NicholasMancuso mosty są węzłami od węzła, więc nie jest to klasyczne drzewo Steiner, w którym most łączy wiele węzłów. Istnieje wiele problemów w układzie VLSI, które mają podobne cechy.
VSOverFlow,

1
@vsaxena: Problem jest nieokreślony. Załóżmy, że mam trzy wyspy A, B, C w trójkącie równobocznym, a pontony początkowo tworzą połączony kształt Y z wyspami na końcach. Czy robienie niczego nie jest prawidłowym rozwiązaniem, czy też pontony muszą zostać przesunięte? Jeśli to rozwiązanie nie jest poprawne, to co dokładnie stanowi prawidłową konfigurację pontonów?
JeffE,

1
@vsaxena: A skoro już tu jesteśmy, to czy wyspy są tylko punktami, okręgami lub bardziej skomplikowanym kształtem określonym na wejściu? Czy segmenty linii pontonów, elipsy lub jakiś inny kształt są? Czy wszystkie wyspy mają ten sam rozmiar i kształt, czy mogą być inne? Czy wszystkie pontony mają ten sam rozmiar i kształt, czy mogą być inne?
JeffE

Odpowiedzi:


1

Po pierwsze: to nie jest problem podróżującego sprzedawcy. TSP wymaga identyfikacji cyklu hamiltonowskiego o minimalnej wadze; ten cykl nie wymaga cyklu, ani nawet minimalnej ścieżki ciężaru. Wymaga to minimalnego kosztu budowy łączącego zestawu krawędzi, gdzie koszt budowy opiera się na przemieszczaniu pontonów.

Po drugie: nie jest to problem dotyczący drzewa rozpinającego minimalną wagę. Patrz wyżej - wymagamy minimalnego kosztu konstrukcji, a nie minimalnej identyfikacji ciężaru.

Po trzecie: Wygląda na to, że zbudowana ścieżka będzie drzewem łączącym, ale niekoniecznie drzewem o minimalnej wadze. Alternatywą jest to, że byłoby to drzewo opinające plus dodatkowe krawędzie, które skutkowałyby cyklem; ale jeśli zaczniemy od konfiguracji bez krawędzi, wówczas każda krawędź ma pewien dodatni koszt i zawsze możemy znaleźć drzewo rozpinające mniejszą wagę, po prostu nie konstruując dodatkowych krawędzi.

Po czwarte: Mówisz, że pontony obracają się swobodnie; Zakładam, że oznacza to, że z obrotami pontonów nie wiążą się żadne koszty. Nie określasz jednak, o czym obracają się pontony: ich punkty? Ich centra masy? Jakikolwiek punkt wewnętrzny? (Jeśli jakikolwiek punkt zewnętrzny, to mielibyśmy konstrukcje o zerowej wadze, tak?)

Jest to nieco subtelne, ponieważ jeśli obracamy się o 90 stopni wokół punktu wewnętrznego, powiedzmy, środka masy, jaki jest koszt? Nic, bo to rotacja? Jakaś skończona kwota, ponieważ punkt się przesunął? Teraz musimy również poznać rozmiar pontonów.

Po piąte: Zakłada się, że zarówno pontony, jak i wyspy są zatopione w płaszczyźnie euklidesowej?


Dziękuję za odpowiedź. Obrót odbywa się wokół środka masy i nie wiąże się z nim żaden koszt, tylko ruch wiąże się z kosztem. Tak, zarówno pontony, jak i wyspy są osadzone w płaszczyźnie euklidesowej. Zmodyfikuję post, aby było jasne.

Nie zgadzam się, że nie jest to zasadniczo TSP. Cały słupek jest owinięty wokół osi terminologicznie, ale faktem jest, że jeśli narysuje się linię między każdym pontonem a każdym potencjalnym położeniem pontonu końcowego i oblicza się odległość każdej linii jako jego wagę, to z wyjątkiem z punktu końcowego wracającego do punktu początkowego, utworzony wykres wygląda prawie dokładnie (do trójnika) jak TSP. Ponton lub pozycja końcowa to węzeł na wykresie, a ciężary są obliczane na podstawie odległości. TYLKO cykl hamiltonowski oznacza, że ​​kończy się w miejscu, w którym się zaczął.

2
To nie jest odpowiedź, ale seria komentarzy.
Raphael

1

Po zapoznaniu się z nowymi schematami widzę, że możesz potrzebować wielu pontonów, aby przepłynąć między wyspami. Biorąc to pod uwagę, można bardzo zbliżyć się do rozwiązania problemu Steiner Tree , przekształcając węzły w wyspy i tworząc wystarczająco różnorodną kolekcję pontonów o małych łukach. Wikipedia mówi, że w rzeczywistości istnieje problem PTAS dla problemu drzewa Steinera, więc nie mogę od razu powiedzieć, że powoduje to NP-kompletność. Jednak spojrzenie na szczegóły drzewa Steiner może albo dać ci dobre przybliżone rozwiązanie, albo pokazać, że problem dotyczy NP-Complete.


To, co opisujesz, to przybliżony algorytm pozwalający uzyskać prawie optymalne rozwiązanie. Jak jednak w ogóle zweryfikować, czy rozwiązanie jest optymalne?

Myślę, że prawdziwym problemem jest to, że potrzebujesz wielu pontonów, aby przepłynąć między wyspami, co sprawia, że ​​przypomina to drzewo Steiner. Spójrz na gałąź i granica, jak przejść od dolnej granicy (np. Wygenerowanej przez zaniedbanie ograniczenia) do znanego optymalnego rozwiązania.
mcdowella,

2
@mcdowella To nie jest drzewo Steinera, ponieważ każdy ponton może pojawić się tylko w jednym moście; jest to system punkt-punkt. Ponadto, ponieważ funkcją kosztu jest ruch pontonów, możesz mieć przypadek, w którym most jest uformowany w szerokie łuki, które nadal mają niższy koszt niż rozwiązanie linii prostej.
VSOverFlow

Nie może to być steiner z innej perspektywy. NIE MOŻEMY DODAWAĆ PUNKTÓW, aby dopasować je do naszych potrzeb.
trumpetlicks

1
Jeśli skrzyżowania Y są dozwolone, jest to co najmniej tak trudne, jak problem z drzewem Steinera, ponieważ każdy problem z drzewem Steinera może zostać przekształcony w jeden z nich - wystarczy utworzyć wiele pontonów i umieścić je tak daleko od wysp, aby nie naprawdę ważne, którego pontonu użyjesz gdzie. Następnie, jeśli możesz to rozwiązać, możesz rozwiązać problem drzewa Steinera: dla tego argumentu nie ma znaczenia, że ​​istnieją pewne konfiguracje pontonów, które nie powodują problemów z drzewem Steinera. Jeśli skrzyżowania Y są niedozwolone, musimy dokładnie wiedzieć, jakie są reguły. Czy ścieżki krzyżują się na skrzyżowaniu?
mcdowella,

0

Po losowaniu nadal jest to problem NPC. Nawet jeśli ograniczymy problem do każdego pontonu, możemy przyjąć 1 z n pozycji (tj. Znane linie łączące. Aby uzyskać najbardziej optymalną odpowiedź, musielibyśmy wypróbować każdy ponton w każdej pozycji, dodając ich odległość, aby dostać się do tych powtarzalnych pozycji każdego czas i porównanie ze wszystkimi innymi. jeśli każdy ponton musi zostać przetestowany w każdej pozycji, to musi istnieć n! kombinacji.

Wybrałem edycję oryginalnych zdjęć plakatu z kilkoma dodatkami, aby pokazać pomysły na wykresy stojące za tym problemem.

Poniższy obrazek pokazuje wszystkie (minus 2, aby uprościć) pontony w różnych kolorach, ze wszystkimi potencjalnymi lokalizacjami końcowymi pontonu w kolorze CZERWONYM. Narysowałem tylko linie między 3 pontonami i wszystkimi końcowymi lokalizacjami, ale widać było, jak SZALONY może to być.

Powiedzmy, że dla samej cholery, wybieramy, aby turkusowy ponton został umieszczony w końcowej lokalizacji najbliżej niego jako pierwszy krok (chociaż Z TSP wiemy, że może to nie być optymalne na końcu).

Poniżej dokładnie to widzimy, ponton i odległość (czyli ważona odległość podróży), jaką będzie musiał pokonać.

wprowadź opis zdjęcia tutaj

Stąd można utworzyć wirtualny węzeł z dwoma końcowymi lokalizacjami obok właśnie umieszczonej lokalizacji. Odległość od ustawionego węzła i dwa sąsiednie węzły w obrębie wirtualnego węzła mają wirtualną odległość podróży wynoszącą 0.

Poniżej widzimy wirtualny węzeł utworzony ze WSZYSTKIM potencjalnym obciążnikiem odległości, jaki można tam umieścić.

wprowadź opis zdjęcia tutaj

Widząc, jak to będzie kontynuowane i jak najbardziej optymalnym rozwiązaniem (jak wielokrotnie widziane z TSP) nie zawsze będzie wybór najkrótszej odległości dla każdego wyboru, musielibyśmy przetestować zasadniczo wszystkie ścieżki dla wszystkich węzłów / wirtualnych węzłów.

Ostatecznie pierwszym węzłem problemu (TSP) może być dowolny z potencjalnych punktów końcowych pontonu, a linie z niego narysowane to odległości od tego punktu końcowego do wszystkich innych pontonów. wszystkie inne węzły stają się następnie węzłami wirtualnymi, jak to przedstawiłem, z ich liniami opadającymi jako odległości / ciężary do wszystkich pozostałych pontonów, i tak dalej. Jak ten problem z grafem NIE jest DOKŁADNIE problemem dla podróżujących sprzedawców bez OSTATNIEJ SKOKU z cyklu hamiltonowskiego jest poza mną. Aby uzyskać dokładną odpowiedź, należy przetestować wszystkie ścieżki na wykresie.


1
Pomijając to, czy jest to rozsądny model stwierdzonego problemu, czy też faktycznie jest to model TSP, nie działa to w ten sposób. Nie pokazujesz, że twój problem docelowy może zostać sformułowany jako przykład problemu NPC. Musisz pokazać, że wystąpienie problemu NPC może być otoczone jako problem docelowy.


2
O jej. Jeśli miałeś problem z przeczytaniem mojego komentarza i linku, który podałem, nauczyłeś się, że algorytm, do którego się odwołujesz, jest dokładny (dowodzą tego) i dlatego jest sprzeczny z twoim rozumieniem. Zauważ, że twoja opinia sugeruje, że P! = NP - to wciąż pytanie otwarte. Więc nie, nie zrozumiałeś tego, przepraszam. (Nawet gdyby prawdą było, że problemy z kompletnym NP nie można rozwiązać lepiej niż naiwnie, rozumowanie, którego użyjesz, byłoby błędne.)
Raphael

2
O(1.3n)n

3
@JeffE: Innymi słowy, ta odpowiedź tylko dowodzi, że problem jest prawdopodobnie całkowicie NP.
Tsuyoshi Ito
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.