Komiwojażer na płaszczyźnie

Podobne dokumenty
Algorytmika Problemów Trudnych

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Algorytmy aproksymacyjne i parametryzowane

Digraf. 13 maja 2017

Kombinatoryczne problemy optymalizacyjne to problemy wyboru najlepszego rozwiązania z pewnego zbioru rozwiązań

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Problem skoczka szachowego i inne cykle Hamiltona na szachownicy n x n

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Wykład 4. Droga i cykl Eulera i Hamiltona

Złożoność algorytmów. Wstęp do Informatyki

Sprzedaż online. Piotr Sankowski Uniwersytet Warszawski Warszawa p. 1/40

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Algorytmy w teorii liczb

Nierówność Krafta-McMillana, Kodowanie Huffmana

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Kompresja bezstratna. Entropia. Kod Huffmana

Teoria obliczeń i złożoność obliczeniowa

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Programowanie liniowe

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Programowanie dynamiczne cz. 2

Matematyka od zaraz zatrudnię

Przykłady problemów optymalizacyjnych

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyka dyskretna

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Zakładamy, że maszyna ma jeden stan akceptujacy.

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

3. Macierze i Układy Równań Liniowych

Znajdowanie skojarzeń na maszynie równoległej

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Elementy teorii grafów Elementy teorii grafów

Przecięcia odcinków. Wykład /07

5. Najkrótsze ścieżki

Dynamiczne drzewa. Piotr Sankowski. - p. 1/27

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Algorytmy i Struktury Danych, 2. ćwiczenia

Algorytmy aproksymacyjne dla problemów stochastycznych

Teoria grafów - Teoria rewersali - Teoria śladów

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Wprowadzenie Podstawy Fundamentalne twierdzenie Kolorowanie. Grafy planarne. Przemysław Gordinowicz. Instytut Matematyki, Politechnika Łódzka

Programowanie dynamiczne i algorytmy zachłanne

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Algorytmy dynamiczne. Piotr Sankowski. - p. 1/14

Lista 4. Kamil Matuszewski 22 marca 2016

Programowanie dynamiczne

Zasady analizy algorytmów

Algorytmy i Struktury Danych.

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

TEORETYCZNE PODSTAWY INFORMATYKI

Imię, nazwisko, nr indeksu

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

TEORETYCZNE PODSTAWY INFORMATYKI

Programowanie dynamiczne

Uniwersyteckie Koło Matematyczne - Tajemnicza liczba e.

Dynamiczne drzewa. Marian M. Kędzierski. 26 listopada Wstęp Euler-Tour Trees Dynamiczna spójność Algorytm Dinica Link-Cut Trees

Algorytm selekcji Hoare a. Łukasz Miemus

zajęcia 1. Bartosz Górski, Tomasz Kulczyński, Błażej Osiński

Złożoność informacyjna Kołmogorowa. Paweł Parys

Rozwiązywanie zależności rekurencyjnych metodą równania charakterystycznego

Podstawy Informatyki. Sprawność algorytmów

Lista 0. Kamil Matuszewski 1 marca 2016

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Zaawansowane algorytmy i struktury danych

Lista 6 Problemy NP-zupełne

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

W. Guzicki Próbna matura, grudzień 2014 r. poziom rozszerzony 1

Znajdowanie maksymalnych skojarzeń przy pomocy eliminacji Gaussa

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Wykład na Politechnice Krakowskiej w dniu 18 stycznia 2012 r. ZADAŃ I ALGORYTMÓW W OPTYMALIZACJI DYSKRETNEJ

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Kombinowanie o nieskończoności. 2. Wyspy, mosty, mapy i kredki materiały do ćwiczeń

PRÓBNY EGZAMIN MATURALNY

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Efektywność Procedur Obliczeniowych. wykład 5

V Konkurs Matematyczny Politechniki Białostockiej

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Ilustracja S1 S2. S3 ściana zewnętrzna

2. Układy równań liniowych

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Metody numeryczne. Sformułowanie zagadnienia interpolacji

Matematyka dyskretna dla informatyków

Geometria. Rozwiązania niektórych zadań z listy 2

Akademickie Mistrzostwa Polski w Programowaniu Zespołowym

Suma dwóch grafów. Zespolenie dwóch grafów

Transkrypt:

Komiwojażer na płaszczyźnie Paweł Gawrychowski Uniwersytet Wrocławski & Max-Planck-Institut für Informatik 18 marca 2014 Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 1 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 2 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 2 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 2 / 31

ETSP W Euclidean Travelling Salesman Problem dostajemy n punktów na płaszczyźnie (x i, y i ). Celem jest znalezienie permutacji π, która minimalizuje sumaryczna długość trasy, czyli (x π(i+1) x π(i) ) 2 + (y π(i+1) y π(i) ) 2. i Interesuje nas skonstruowanie efektywnego algorytmu dla tego problemu. Efektywność mierzymy w dwóch kategoriach: 1 czas działania, 2 potrzebna pamięć. d(i, j) = (x i x j ) 2 + (y i y j ) 2 Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 3 / 31

Zacznijmy od najprostszego pomysłu: sprawdźmy wszystkie możliwe permutacje π. Niestety jest ich dość sporo, bo aż n! (n/e) n. Już dla n = 15 ten pomysł nie ma najmniejszych szans na sukces. No to może trzeba choć chwilę pomyśleć? Spróbujmy skorzystać z techniki nazywanej przez informatyków programowaniem dynamicznym. Prosta obserwacja Zamiast szukać najkrótszej trasy, równie dobrze możemy szukać najkrótszej ścieżki, która zaczyna się (x 1, y 1 ), kończy w ustalonym (x e, y e ), i odwiedza każdy punkt. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 4 / 31

Zdefiniujmy S[A][i] jako długość najkrótszej ścieżki, która zaczyna się (x 1, y 1 ), kończy w (x i, y i ), i dla każdego j A przechodzi przez (x j, y j ). Wynik to po prostu min e S[{1, 2,..., n}][e] + d(1, e). Chcielibyśmy wyznaczyć wszystkie sensowne S[A][i], czyli takie, dla których {1, i} A. Od czego zaczać? Co dalej? S[{1}][1] = 0 Popatrzmy na S[A][i], gdzie {1, i} A oraz 1 i. Najkrótsza możliwa ścieżka, która kończy się w (x i, y i ), ma postać 1... j i. Czyli jej długość to po prostu S[A \ {i}][j] + d(j, i). Co prawda nie znamy j, ale przecież możemy sprawdzić wszystkie możliwości! S[A][i] = min S[A \ {i}][j] + d(j, i) j A,j i Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 5 / 31

Daje nam to dość proste rozwiazanie, które wymaga wykonania około 2 n n 2 operacji. Pracowicie wyliczamy S[A][i] dla kolejnych A oraz i. Każde S[A][i] można wyliczyć wykonujac tylko n operacji, jeśli znamy już wszystkie S[A ][i ], dla których A < A. n = 15 Dla n = 15 potrzebujemy tylko kilku milionów operacji, czyli pewnie kilku sekund. Nawet dla n = 30 czas działania to pewnie tylko kilka minut, pojawia się jednak inny problem: musimy przechowywać wszystkie S[A][i], co wymaga kilkunastu gigabajtów pamięci RAM. A z tym może być problem... Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 6 / 31

Czyli uzyskaliśmy istotnie lepsza złożoność czasowa kosztem istotnie lepszej złożoności pamięciowej. rozwiazanie naiwne O((n/e) n n) O(n) programowanie dynamiczne O(2 n n 2 ) O(2 n n) następny slajd O(4 n n O(log n) ) O(n) Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 7 / 31

Niech S(i, A, j) będzie długościa najkrótszej ścieżka, która zaczyna się w i, kończy w j, i dla każdego k A przechodzi przez (x k, y k ) (zakładamy, że i, j A). Interesuje nas wyliczenie S(i, {1, 2,..., n}, j). Jak podzielić problem na mniejsze? Niech i... j będzie ścieżka odpowiadajac a S(i, A, j). Wybierzmy z, które jest jej (mniej więcej) środkowym elementem i zdefiniujmy: 1 A 1 jako zbiór elementów przed z na ścieżce, włacznie z i. 2 A 2 jako zbiór elementów po z na ścieżce, włacznie z j. Wtedy S(i, A, j) = S(i, A 1 {z}, z) + S(z, A 2 {z}, j). Czyli aby wyliczyć S(i, A, j) wystarczy wyznaczyć S(i, A 1 {z}, z) i S(z, A 2 {z}, j). Problem Ale przecież nie znamy z, A 1, A 2. Z braku lepszych pomysłów możemy jednak sprawdzić wszystkie możliwości. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 8 / 31

Spróbujmy oszacować całkowity czas działania T (n). Mamy n możliwych wyborów z i 2 n 3 możliwych podziałów A \ {z} na A 1 i A 2. Czyli: T (n) = O(n2 n 3 (T (n/2 + 1) + T (n/2 + 1)) = O(n2 n T (n/2 + 1)) Po rozpisaniu łatwo uwierzyć, że T (n) = O(4 n n O(log n) ). Gurevich i Shelah 1987 Powyższy algorytm działa w czasie O(4 n n O(log n) ) i pamięci O(n). Koivisto i Parviainen 2010 Dla dowolnego parametru S ( (2), 2), można skonstruować algorytm, który działa w czasie O(T n ) i pamięci O(S n ), gdzie TS < 4. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 9 / 31

Powyz sze rozwiazania zupełnie nie korzystały z tego, z e d(i, j) to odległos c euklidesowa. Byc moz e jest tak, z e takie załoz enie istotnie upraszcza problem, i moz na skonstruowac algorytm, który działa w wielomianowym czasie i wielomianowej pamieci. Papadimitriou 1977 ETSP jest NP-trudny. A moz e NP-zupełny? 1 Aby mówic o NP-zupełnos ci, trzeba zdefiniowac problem decyzyjny, czyli pytac o istnienie trasy, której długos c D. 2 Nie wiadomo. Problemem jest to, z e musimy wyliczac wyraz enia P q postaci i (xπ(i+1) xπ(i) )2 + (yπ(i+1) yπ(i) )2, co moz e wymagac wyznaczania wielu cyfr po przecinku. Paweł Gawrychowski Komiwojaz er na płaszczyz nie 18 marca 2014 10 / 31

P vs NP Rozważamy problemy, dla których odpowiedź to TAK/NIE. Czy istnieje trasa o długości D, która odwiedza wszystkie punkty? Zakładamy, że dane wejściowe to ciag n bitów, czyli kodujemy binarnie wszystkie współrzędne x i i y i. Także wszystkie tymczasowe dane przechowywane przez nasz algorytm to ciagi bitów. Problem należy do klasy złożoności P Jeśli można skonstruować dla niego deterministyczny algorytm o czasie działania O(n c ), gdzie c to dowolna liczba naturalna. Problem należy do klasy złożoności NP Jeśli można skonstruować dla niego niedeterministyczny algorytm o czasie działania O(n c ), gdzie c to dowolna liczba naturalna. Niedeterministyczny oznacza tutaj, że możemy korzystać z życzliwej podpowiedzi. Taka podpowiedź to kolejny ciag bitów długości O(n c ). Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 11 / 31

Przykład Grahama 1000001 + 1000025 + 1000031 + 1000084 + 1000087 + 1000134 + 1000158 + 1000182 + 1000198 1000002 + 1000018 + 1000042 + 1000066 + 1000113 + 1000116 + 1000169 + 1000175 + 1000199 9000.4499835688397309490268288613590291911 9000.4499835688397309490268288613590291914 Nie będziemy się tym przejmować. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 12 / 31

No dobrze, ale może wcale nie potrzebujemy wyznaczać trasy, która jest najkrótsza. Może wystarczyłoby nam wyznaczenie takiej, która jest krótka. Konkretniej, jeśli ALG to nasze rozwiazanie, a OPT to rozwiazanie optymalne, ALG c OPT, gdzie c jest bliskie 1. Arora 1996 Dla każdego ɛ > 0 istnieje wielomianowy algorytm, który aproksymuje ETSP ze współczynnikiem 1 + ɛ. Mówimy, że istnieje wielomianowy schemat aproksymacji (PTAS) dla tego problemu. Niestety czas działania tego wielomianowego algorytmu to w najlepszym wypadku O(n log 1 ɛ n), czyli raczej sporo. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 13 / 31

Spróbujemy skonstruować dokładny algorytm o czasie działania O(n O( n) ). Nie będzie on super praktyczny, ale: 1 ma intrygujaco wygladaj ac a złożoność czasowa, 2 liniowa (czyli optymalna) złożoność pamięciowa, 3 korzysta z fajnej sztuczki zwiazanej z grafami planarnymi, która jest ciekawa sama w sobie. Smith 1989, Kann 1992, Hwang, Chang, Lee 1993 ETSP może być rozwiazany w czasie O(n O( n) ) i pamięci O(n). Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 14 / 31

Pierwsza prosta obserwacja Krawędzie najkrótszej trasy nie przecinaja się ze soba. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 15 / 31

Pierwsza prosta obserwacja Krawędzie najkrótszej trasy nie przecinaja się ze soba. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 15 / 31

Pierwsza prosta obserwacja Krawędzie najkrótszej trasy nie przecinaja się ze soba. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 15 / 31

Pierwsza prosta obserwacja Krawędzie najkrótszej trasy nie przecinaja się ze soba. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 15 / 31

Czyli możemy patrzeć na optymalne rozwiazanie jako na graf planarny G = (V, E). Obydwa przedstawione wcześniej rozwiazania opierały się na rozbiciu oryginalnego problemu na dwa mniejsze, naturalne jest więc przyjrzenie się separatorom w grafach planarnych. Mówimy, że S jest (A, B)-separatorem, jeśli V = A S B i w E nie ma krawędzi łacz acych wierzchołki z A i B. S jest dobrym separatorem, jeśli jest (A, B)-separatorem, gdzie A, B 2 3 V. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 16 / 31

Wiadomo, że w każdym grafie planarnym istnieje dobry separator o rozmiarze O( n). My potrzebujemy jednak silniejszego twierdzenia. Miller 1986 W każdym dwuspójnym grafie planarnym można znaleźć cykl prosty na co najwyżej 2 2 d 2 n wierzchołkach, który jest dobrym separatorem. n to liczba wierzchołków w grafie d to maksymalny rozmiar ściany grafu Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 17 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 18 / 31

W grafie planarnym, który odpowiada optymalnemu rozwiazaniu, d może (a pewnie nawet i musi) być dość spore. Łatwo sobie z tym jednak poradzić dodajac nowe krawędzie. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 19 / 31

W grafie planarnym, który odpowiada optymalnemu rozwiazaniu, d może (a pewnie nawet i musi) być dość spore. Łatwo sobie z tym jednak poradzić dodajac nowe krawędzie. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 19 / 31

W grafie planarnym, który odpowiada optymalnemu rozwiazaniu, d może (a pewnie nawet i musi) być dość spore. Łatwo sobie z tym jednak poradzić dodajac nowe krawędzie. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 19 / 31

W grafie planarnym, który odpowiada optymalnemu rozwiazaniu, d może (a pewnie nawet i musi) być dość spore. Łatwo sobie z tym jednak poradzić dodajac nowe krawędzie. I być może 3 nowe wierzchołki. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 19 / 31

Kluczowy pomysł Wyobraźmy sobie graf planarny odpowiadajacy optymalnemu rozwiazaniu. Znajdźmy w nim cykl prosty C, który jest dobrym separatorem i popatrzmy, w jaki sposób przecina go nasza trasa. Trasa przecina cykl tylko w jego wierzchołkach. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 20 / 31

Kluczowy pomysł Wyobraźmy sobie graf planarny odpowiadajacy optymalnemu rozwiazaniu. Znajdźmy w nim cykl prosty C, który jest dobrym separatorem i popatrzmy, w jaki sposób przecina go nasza trasa. Trasa przecina cykl tylko w jego wierzchołkach. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 20 / 31

Kluczowy pomysł Wyobraźmy sobie graf planarny odpowiadajacy optymalnemu rozwiazaniu. Znajdźmy w nim cykl prosty C, który jest dobrym separatorem i popatrzmy, w jaki sposób przecina go nasza trasa. Trasa przecina cykl tylko w jego wierzchołkach. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 20 / 31

Dziel-i-zwyciężaj Sytuacja na zewnatrz cyklu jest w zasadzie niezależna od sytuacji w jego wnętrzu. Istotne jest tylko to, w których wierzchołkach następuje przejście na druga stronę, no i w jaki sposób połaczone sa ze soba te przejścia. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 21 / 31

Dziel-i-zwyciężaj Sytuacja na zewnatrz cyklu jest w zasadzie niezależna od sytuacji w jego wnętrzu. Istotne jest tylko to, w których wierzchołkach następuje przejście na druga stronę, no i w jaki sposób połaczone sa ze soba te przejścia. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 21 / 31

Dziel-i-zwyciężaj Sytuacja na zewnatrz cyklu jest w zasadzie niezależna od sytuacji w jego wnętrzu. Istotne jest tylko to, w których wierzchołkach następuje przejście na druga stronę, no i w jaki sposób połaczone sa ze soba te przejścia. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 21 / 31

Dziel-i-zwyciężaj Jeśli wiemy gdzie i jak dokładnie następuja przejścia na druga stronę, możemy osobno rozważyć sytuację na zewnatrz i wewnatrz cyklu. A dokładniej, możemy rekurencyjnie znaleźć dla nich optymalne rozwiazania. Drobny problem W oryginalnym problemie szukaliśmy trasy, która przechodzi przez każdy punkt. W otrzymanych (istotnie) mniejszych problemach sytuacja jest bardziej skomplikowana: szukamy zbioru ścieżek łacz acych podane pary punktów (s i, t i ) o takiej własności, że każdy z podanych punktów v j leży na jednej ze ścieżek. Nie przejmujmy się tym. Oczywiście nie mamy takiej informacji. Ba, nie znamy nawet C! Jak sobie z tym poradzić? Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 22 / 31

Zgadnijmy C oraz to, jak wygladaj a przejścia na druga stronę. Zgadnijmy oznacza tutaj oczywiście sprawdźmy wszystkie możliwości. Skoro C O( n), mamy tylko O(n O( n) ) możliwych wyborów C. Okazuje się, że istotnie różnych sposób, na które można przechodzić przez wierzchołki C, jest tylko 2 C ( C )!, czyli też O(n O( n) ). Mamy więc następujac a rekurencję na całkowity czas działania: T (n) = O(n O( n) )(T (n 1 ) + T (n 2 )) = O(n O( n) )T ( 2 3 n) czyli T (n) = O(n O( 2 n+ 3 n+ ( 2 3) 2 n+...) ) = O(n O( n) ). Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 23 / 31

Co dalej? Nie wiadomo, czy da się lepiej. Można więc zastanawiać się nad specjalnymi przypadkami, w których podane punkty maja dodatkowa strukturę. Jeśli wszystkie punkty leża na otoczce wypukłej, najlepsza możliwa trasa to po prostu ta otoczka. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 24 / 31

Co dalej? Nie wiadomo, czy da się lepiej. Można więc zastanawiać się nad specjalnymi przypadkami, w których podane punkty maja dodatkowa strukturę. Jeśli wszystkie punkty leża na otoczce wypukłej, najlepsza możliwa trasa to po prostu ta otoczka. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 24 / 31

W miarę naturalne jest więc następujace pytanie: powiedzmy, że mamy n punktów, z których tylko k leży wewnatrz otoczki wypukłej. Czy da się skonstruować algorytm, który będzie efektywny dla małych wartości k nawet, jeśli n jest duże? Lub, mówiac inaczej, będzie być może wykładniczy ze względu na k, ale wielomianowy ze względu na n. Deineko, Hoffman, Okamoto, Woeginger 2004 Tak zdefiniowany problem można rozwiazać w czasie O(2 k k 2 n). Knauer i Spillner 2006 A nawet O(k O( k) k 1.5 n 3 ). To szybsze rozwiazanie jest oparte na programowaniu dynamicznym. Oznacza to, że jego złożoność pamięciowa jest niestety również wykładnicza. Ale może da się jakoś inaczej? Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 25 / 31

Istnieje algorytm, który działa w czasie O(nk 2 + k O( k) ) i używa pamięci O(n). Idea Modyfikujemy algorytm oparty na separatorach. Problematyczne jest to, że być może n jest istotnie większe niż k... Kernelizacja Czyli problemem jest dla nas sytuacja, w której liczba punktów na otoczce jest istotnie większa niż liczba punktów w środku. Okazuje się, że w takim wypadku można ze spokojnym sumieniem zapomnieć o wszystkich poza ( k 2) + k odcinkach otoczki. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 26 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 27 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 27 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 27 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 27 / 31

Odcinki otoczki, które należa do trasy, sa nudne. Co więcej, najwyżej k z nich nie jest nudnych. Chcielibyśmy pozbyć się wszystkich nudnych odcinków otoczki......ale oczywiście nie znamy optymalnego rozwiazania, więc nie mamy jak stwierdzić, które odcinki sa nudne. Pomysł Wyznaczymy zbiór ( k 2) + k odcinków otoczki A o takiej własności, że w optymalnym rozwiazania ciekawe odcinki otoczki na pewno sa zawarte w A. Jak? Konstruujemy graf dwudzielny, w której każdemu odcinkowi otoczki odpowiada jeden wierzchołek po lewej stronie, a każdej możliwej ścieżce w środku otoczki jeden wierzchołek po prawej stronie. Koszt połaczenia odcinka otoczki z ścieżka w środku jest zdefiniowany w naturalny sposób. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 28 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 29 / 31

Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 29 / 31

Teraz okazuje się, że wystarczy znaleźć najtańsze skojarzenie prawych wierzchołków do lewych, a następnie można spokojnie zapomnieć o wszystkich lewych wierzchołkach (czyli odcinkach otoczki), które nie zostały skojarzone. Czyli pozwala to na zmniejszenie n do O(k 2 ). To nie wszystko! Ten pomysł daje algorytm działajacy w czasie O(nk 2 + k O(k) ), czyli za wolno. Dodatkowe pomysły: 1 ważona wersja lematu o separatorze, 2 przycinanie problemu w każdym wywołaniu rekurencyjnym. Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 30 / 31

Pytania? Paweł Gawrychowski Komiwojażer na płaszczyźnie 18 marca 2014 31 / 31