Osoba prowadząca wykład i ćwiczenia: dr inż. Marek Sawerwain Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski e-mail : M.Sawerwain@issi.uz.zgora.pl tel. (praca) : 68 328 2321, pok. 328a A-2, ul. prof. Z.Szafrana 2, 65-246 Zielona Góra Ostatnia zmiana: 15 styczeń 2013 V1.0 1/ 51 Spis treści Wprowadzenie Plan wykładu Redukcje wielomianowe Redukcje logarytmiczne Transformacja wielomianowa w sensie Turinga Klasa NP Klasa NP komentarz Problem SAT Pokrycie wierzchołkowe Klasa NC Klasa NC Własności klasy NC P-zupełność A za tydzień na wykładzie V1.0 2/ 51
Wprowadzenie Plan wykładu Plan wykładu spotkania tydzień po tygodniu (1) Informacje o wykładzie, poprawność algorytmów (2) Poprawność algorytmów logika Hoarego (3) Analiza złożoności kodu wysokiego i niskiego poziomu (4) Modele algorytmiczne maszyny proste, obwody logiczne (5) Modele algorytmiczne maszyna Turinga oraz rachunek-λ (6) Automaty (nie)deterministyczne część I (7) Automaty (nie)deterministyczne część II (8) Gramatyki regularne i bezkontekstowe V1.0 3/ 51 Wprowadzenie Plan wykładu Plan wykładu spotkania tydzień po tygodniu (9) Gramatyki i automaty ze stosem (10) Algorytmy równoległe (11) Klasy złożoności obliczeniowej (12) (13) Pamięć logarytmiczna i wielomianowa (14) Wstęp do obliczeń kwantowych (15) Wybrane algorytmy kwantowe V1.0 4/ 51
Wprowadzenie Plan wykładu Plan wykładu 1. Pojęcie redukcji 1.1 redukcje logarytmiczne i wielomianowe 1.2 transformacja wielomianowa w sensie Turinga 1.3 definicja zupełności 2. 2.1 definicja klasy NP 2.2 problem SAT 2.3 pokrycie wierzchołkowe 2.4 cykl Hamiltona 3. Małe co nieco, o klasie NC 3.1 definicja i własności klasy NC 3.2 P-zupełność i jej dowodzenie V1.0 5/ 51 Wprowadzenie Plan wykładu Materiały wykorzystane podczas tworzenia tego wykładu, a także przydatne do dalszych studiów: 1. Cormen T.H., Leiserson C.E., Rivest R.L.: Wprowadzenie do algorytmów, WNT, 1997 (starsze i nowsze wydania), 2. Papadimitriou C.H., Złożoność obliczeniowa, Wydawnictwa Naukowo-Techniczne, Warszawa 2002. 3. Ważniakowe materiały: http://wazniak.mimuw.edu.pl/index.php? title=z\t1\lożoność_obliczeniowa 4. J.E. Hopcroft, J.D. Ullman, Wprowadzenie do teorii automatów, języków i obliczeń, Wydawnictwo Naukowe PWN, Warszawa 1994. V1.0 6/ 51
V1.0 7/ 51 Definicja redukcji Pojęcie redukcji należy rozpocząć Niech F reprezentuje pewną rodzinę funkcji o sygnaturze {0, 1} {0, 1} która domknięta na składanie i zawierającą identyczność. Redukcja Niech L 1 i L 2 będą językami nad alfabetem {0, 1} (języki te reprezentują zakodowane binarnie problemy decyzyjne). Problem L 1 jest redukowalny do problemu L 2 w sensie rodziny F co jest zapisywane jako: wtedy i tylko wtedy, gdy L 1 F L 2. f F w {0,1} w L 1 f (w) L 2 V1.0 8/ 51
Definicja redukcji Należy powiedzieć, że problem L 1 jest w pewnym sensie co najwyżej tak trudny, jak problem L 2 - pod warunkiem że znamy rozwiązanie problemu L 2 oraz odpowiednią funkcję (stanowiącą redukcję), co pociąga za sobą również rozwiązanie problemu L 1. Należy zauważyć, że relacja F jest preporządkiem: czyli jest to relacja zwrotna (ze względu na obecność identyczności) i przechodnia (ze względu na domkniętość rodziny F na składanie). W dalszej części będziemy wyróżniać: redukcje logarytmiczne, redukcje wielomianowe. V1.0 9/ 51 Redukcje wielomianowe Redukcje wielomianowe Rodzina redukcji wielomianowych (redukcje Karpa) to rodzina funkcji {0, 1} {0, 1} obliczalnych na deterministycznej maszynie Turinga w czasie wielomianowym. Redukcje wielomianowe mają następującą własność: jeżeli problem L 1 jest redukowalny wielomianowo do problemu L 2 oraz L 2 należy do klasy P, to L 1 również należy do klasy P. Uzasadnienie tej własności odbywa się poprzez konstrukcję maszyny, która najpierw przekształci instancję problemu L 1 do instancji problemu L 2 (przekształcenie jest realizowane w czasie wielomianowym, bo L 1 jest wielomianowo redukowalne do L 2 ), po czym w czasie wielomianowym da odpowiedź dla instancji problemu L 2. V1.0 10/ 51
Redukcje wielomianowe Jeden z możliwych przykładów redukowalnosci wielomianowej jest redukowalność problemu maksymalnego skojarzenia w grafie dwudzielnym do problemu maksymalnego przepływu w grafie skierowanym: s t Graf dwudzielny przekształcony w sieć przepływową. V1.0 11/ 51 Redukcje wielomianowe Ćwiczenie z redukcji wielomianowych Wiedząc, że L 1 jest wielomianowo redukowalne do L 2 oraz L 2 należy do klasy NP. Chcemy pokazać, że L 1 również należy do klasy NP. Wykorzystuje się fakt, że deterministyczna maszyna Turinga jest specjalnym przypadkiem maszyny niedeterministycznej. Wystarczy zatem najpierw uruchomić deterministyczną maszynę implementującą redukcję z L 1 do L 2, po czym uruchomić niedeterministyczną maszynę, rozwiązującą problem L 2 w czasie wielomianowym. Otrzymamy w tym momencie niedeterministyczną maszynę rozwiązującą problem L 1. Należy jeszcze tylko uzasadnić, dlaczego łączny czas działania tej maszyny będzie wielomianowo zależny od wielkości wejścia; wiemy jednak, że wyjście redukcji jest co najwyżej wielomianowo zależne od wielkości wejścia (maszyna ńie ma czasu"żeby zapisać więcej komórek), oraz że złożenie dwóch wielomianów nadal jest wielomianem. Własności te sprawiają, że ostateczny program będzie miał wielomianową złożoność, co oznacza że problem L 1 będzie należał do klasy NP. V1.0 12/ 51
Redukcje logarytmiczne Redukcje logarytmiczne Drugą ważną klasą redukcji jest rodzina redukcji logarytmicznych. Definiować tej rodziny wymaga modyfikacji definicji maszyny Turinga, poprzez wyznaczenie dwóch specjalnych taśm: taśmy wejściowej (tylko do odczytu) i taśmy wyjściowej. Po zapisie na taśmę wyjściową głowica przesuwa się zawsze w tym samym kierunku, co uniemożliwia odczyt poprzednio zapisanych symboli. Redukcja logarytmiczna jest funkcją obliczalną na deterministycznej maszynie Turinga z użyciem logarytmicznej ilości pamięci na taśmie roboczej. Nie są nakładane dodatkowe ograniczenia na wielkość słowa wyjściowego - najczęśniej jego wielkość jest wielomianowo zależna od wielkości słowa wejściowego. Intuicyjnie transformacja logarytmiczna pozwala przechowywać na taśmie roboczej stałą liczbę wskaźników do komórek wejściowych (lub innych obiektów o podobnej wielkości). V1.0 13/ 51 Redukcje logarytmiczne Redukcje logarytmiczne Problem maksymalnego skojarzenia w grafie dwudzielnym jest redukowalny do problemu maksymalnego przepływu w sensie rodziny transformacji logarytmicznych. Szkic dowodu: Zakłada się, że graf dwudzielny jest przedstawiony w postaci macierzy sąsiedztwa (niekoniecznie musi to być macierz kwadratowa, bo graf wejściowy jest dwudzielny) oraz że na wyjście chcemy również wypisać graf, również w postaci macierzy sąsiedztwa (tym razem będzie to macierz kwadratowa). Problem ten możemy rozwiązać, używając następujących danych na taśmie tymczasowej: dwie liczby reprezentujące pozycję aktualnie wypisywanego elementu macierzy wyjściowej (każda o rozmiarze logarytmicznie zależnym od wielkości wejścia), liczbę pamiętającą aktualną pozycję głowicy na taśmie wejściowej (rozmiar podobnie j.w.). V1.0 14/ 51
Redukcje logarytmiczne Redukcje logarytmiczne Problem maksymalnego skojarzenia w grafie dwudzielnym jest redukowalny do problemu maksymalnego przepływu w sensie rodziny transformacji logarytmicznych. Szkic dowodu cd: Aby wypisać jakiś element macierzy wyjściowej, należy sprawdzić, jakiego typu są odpowiadające mu wierzchołki, czyli czy są one: źródłem, ujściem, elementem pierwszego zbioru czy elementem drugiego zbioru. Taka klasyfikacja może zostać wykonana z użyciem logarytmicznej ilości pamięci (polega ona na wykonaniu kilku porównań liczb o rozmiarze logarytmicznym). Jeżeli okaże się, że element macierzy reprezentuje krawędź pomiędzy rozłącznymi zbiorami grafu dwudzielnego, to należy odwołać się do grafu wejściowego. W tym celu należy obliczyć numer komórki na taśmie wejściowej, która reprezentuje interesującą nas krawędź; możemy to zrobić z użyciem tylko takiej ilości pamięci, która jest potrzebna, aby zapisać wynik. Następne zadanie to tylko przesunięcie się do odpowiedniej komórki - ta operacja nie wymaga już jednak żadnej dodatkowej pamięci. Wolno zatem stwierdzić, że przedstawiona powyżej redukcja działa z użyciem logarytmicznej ilości pamięci; problem maksymalnego skojarzenia w grafie dwudzielnym jest zatem redukowalny do problemu maksymalnego przepływu w sensie redukcji logarytmicznej. V1.0 15/ 51 Transformacja wielomianowa w sensie Turinga Transformacja wielomianowa w sensie Turinga Poniżej określona transformacje nie jest redukcją w sensie dwóch wcześniej określonych pojęć, posługuje się ona pojęciem maszyny Turinga oraz wyroczni. Maszyna Turinga z wyrocznią Maszyna z wyrocznią Q {0, 1} jest wielotaśmową maszyną Turinga, z jedną wyróżnioną taśmą i trzema wyróżnionymi stanami {q a, q b, q c }. Zachowanie maszyny opisuje się w następujący sposób: przejście maszyny do stanu q a jest traktowane jako odwołanie do wyroczni Q. Jeżeli słowo aktualnie zapisane na wyróżnionej taśmie należy do języka Q, to maszyna przechodzi do stanu q b ; w przeciwnym razie przechodzi do stanu q c. Odwołanie do wyroczni wliczane jest do czasu działania maszyny jako jedno przejście. Tak określona maszyna może w trakcie swojego działania wielokrotnie prosić wyrocznię o rozwiązanie problemu Q. V1.0 16/ 51
Transformacja wielomianowa w sensie Turinga Transformacja wielomianowa w sensie Turinga Definicja transformacji: Transformacja wielomianowa w sensie Turinga Niech L 1 i L 2 będą językami nad alfabetem {0, 1}. Mówimy, że L 1 transformuje się do L 2 w sensie wielomianowej transformacji Turinga wtedy i tylko wtedy, gdy istnieje maszyna Turinga z wyrocznią L 2, rozwiązująca L 1 w czasie wielomianowym. Transformacja wielomianowa w sensie Turinga może być intuicyjnie traktowana jako rodzaj podprogramów - jeżeli znamy rozwiązanie problemu L 2, to stosujemy go jako podprocedurę przy rozwiązywaniu problemu L 1. V1.0 17/ 51 Transformacja wielomianowa w sensie Turinga Transformacja wielomianowa w sensie Turinga Nie powinno się o podprogramu traktować jako coś prostszego od całego problemu. Dość często w przypadku wielomianowego (czyli "prostego") algorytmu używający pewnego podprogramu można wskazać że pewna trudność w rozwiązywaniu danego problemu może tkwić właśnie w "trudności"tego podprogramu. Niech L 1 i L 2 będą językami nad alfabetem {0, 1} oraz niech L 1 transformuje się do L 2 w sensie transformacji wielomianowej Turinga. Poniższe dwa zdania są prawdziwe: L 1 P L 2 P, L 2 P L 1 P? Należy zauważyć, że transformacja z problemu L 1 do L 2 nie wskazuje złożoności problemu L 2. Dodatkowo, jeśli L 1 P to problem ten transformuje się w sensie Turinga do każdego problemu decyzyjnego czyli można rozwiązać L 1 w ogóle nie odwołując się do wyroczni. W drugim zdaniu problem L 1 można rozwiązać, stosując rozwiązanie problemu L 2 jako podprogram. Złożoność czasowa tego rozwiązania będzie określona od góry przez złożenie dwóch wielomianów czego wynikiem jest również wielomian. V1.0 18/ 51
Transformacja wielomianowa w sensie Turinga Transformacja wielomianowa w sensie Turinga Transformacja wielomianowa w sensie Turinga wyznacza preporządek na językach zawartych w {0, 1}, co zostanie oznaczone symbolem T. Zachodzi np.: L 1 P L 2 L 1 T L 2 Na maszynie z wyrocznią wykonać redukcję wielomianową (typu Karpa), po czym odwołać się do wyroczni i w zależności od jej odpowiedzi przejść do stanu akceptującego lub odrzucającego. V1.0 19/ 51 Transformacja wielomianowa w sensie Turinga Definicja zupełności Definicja zupełności Niech C będzie pewną klasą złożoności, natomiast preporządkiem określonym na językach zawartych w {0, 1} (w domyśle jedną ze zdefiniowanych wcześniej rodzin transformacji). Mówimy, że problem decyzyjny L {0, 1} jest C-zupełny w sensie preporządku wtedy i tylko wtedy, gdy: L C, L CL L. Można powiedzieć (co jest rozumiane w prost/intuicyjnie) że problem C- zupełny jest najtrudniejszym do rozwiązania problemem w klasie złożoności C. Należy zaznaczyć, że może istnieć (i zazwyczaj istnieje) więcej niż jeden problem C-zupełny. Problemy te są równoważne w sensie zastosowanej relacji preporządku. V1.0 20/ 51
Transformacja wielomianowa w sensie Turinga Definicja zupełności i klasa P Problemami P-zupełnymi są wszystkie problemy reprezentowane przez nietrywialne języki (o języku mówi się iż jest nietrywialny, jeśli jest niepusty i różny od zbioru wszystkich słów nad danym alfabetem). Transformacja języka L 1 P do nietrywialnego języka L 2 P polega na rozwiązaniu problemu L 1, a następnie - w zależności od tego, czy obliczenie jest akceptujące, czy też nie - na wypisaniu jednej z dwóch ustalonych wcześniej instancji problemu L 2, z których pierwsza należy do L 2, a druga nie należy do języka L 2. P-zupełność Okazuje się iż definicja P-zupełności nie jest zbyt interesująca w kontekście transformacji w sensie Turinga, w tym przypadku ważniejsze są transformacje logarytmiczne. Jednakże problemy P-zupełne są problemami, które nie są łatwe do zrównoleglenia. V1.0 21/ 51 V1.0 22/ 51
Klasa NP Twierdzenie o klasie NP Klasa NP i problemy NP-zupełne to ważne oraz niestety nadal nierozwiązane problemy we współczesnej informatyce. Twierdzenie klasa NP Niech L {0, 1}, L NP p(x) wielomian L P n N w {0,1} n[w L ( v {0,1} p(n) w, v L )]. Krótkie wyjaśnienie: słowo v nazywane jest świadkiem słowa w. Wymagane jest, żeby każde słowo należące do języka L miało świadka o długości wielomianowej, natomiast żadne słowo spoza L takiego świadka nie miało. Co więcej - jest wymagane, aby sprawdzanie, czy v jest świadkiem słowa w było wykonywane w czasie wielomianowym na maszynie deterministycznej, dlatego klasę NP zwykło się nazywać klasą problemów weryfikowalnych w czasie wielomianowym. V1.0 23/ 51 Klasa NP Szkic dowodu: W stronę dowód jest prosty - skonstruujemy niedeterministyczną maszynę Turinga, rozwiązującą problem L. Maszyna ta najpierw przesunie głowicę za słowo wejściowe, przez następne p(n) kroków będzie wypisywać na taśmę symbole 0 lub 1 (tu jest stosowany niedeterminizm) i przesuwać głowicę w prawo. Od tego momentu maszyna będzie działać całkowicie deterministycznie przesunie się na początek taśmy i zacznie się zachowywać jak deterministyczna maszyna rozwiązująca problem L w czasie wielomianowym. Jeżeli dla słowa wejściowego w istnieje świadek, to zostanie on wygenerowany przez jedną ze ścieżek postępowania w etapie niedeterministycznym. W przeciwnym przypadku wszyscy kandydaci na świadków zostaną odrzuceni przez maszynę rozwiązującą L. V1.0 24/ 51
Klasa NP Szkic dowodu cd: Należy teraz udowodnić przejście w drugą stronę ( ). Skoro L NP, to istnieje niedeterministyczna maszyna Turinga M rozstrzygająca problem L. Niech k oznacza maksymalny stopień rozgałęzienia maszyny M: k := max #d(s, q), (s,q) Σ Q czyli największą liczbę rozgałęzień, która może się dokonać w jednym kroku. Łatwo zauważyć, że istnieje równoważna maszyna M co najwyżej (k 1)- krotnie wolniejsza (a zatem nadal wielomianowa) o maksymalnym stopniu rozgałęzienia równym 2. Co łatwo pokazać na poniższym rysunku: 1 2 1 2 3 4... 3... k 1... V1.0 25/ 51 Klasa NP Szkic dowodu cd: Należy teraz przejść do maszyny M. Jej czas działania zostanie oznaczony jako W (n); w związku z tym maszyna dla słowa wielkości n wykona co najwyżej W (n) rozgałęzień. Każda ścieżka postępowania maszyny M jest zatem zdefiniowana poprzez ciąg W (n) bitów mówiących, która spośród co najwyżej dwóch dostępnych ścieżek została wybrana. Jako kandydatów na świadków wybierzmy zatem ciągi {0, 1} W (n), świadkiem natomiast niech będzie ciąg reprezentujący akceptującą ścieżkę postępowania maszyny M - jeśli taka istnieje. Wystarczy w tym momencie wskazać deterministyczna maszynę Turinga N, rozpoznającą język L czyli weryfikującą dla pary słów w, v, czy v jest świadkiem dla w. Maszyna taka jest prosta do skonstruowania w następujący sposób: maszyna N najpierw przepisuje v na taśmę pomocniczą, po czym wraca na głównej taśmie do początku słowa w, maszyna N zachowuje się podobnie jak maszyna M ; w przypadku, gdy maszyna ma do wyboru dwie opcje, N sięga po kolejny dostępny bit taśmy pomocniczej i na jego podstawie wybiera ścieżkę postępowania. Łatwo zauważyć, że M akceptuje słowo w wtedy i tylko wtedy, gdy istnieje świadek, który spowoduje, że maszyna N dojdzie do stanu akceptującego. V1.0 26/ 51
Klasa NP komentarz Twierdzenie o klasie NP komentarz Przytoczone twierdzenie wskazuje, że maszyna rozwiązująca problem z klasy NP najpierw odgaduje świadka, a potem weryfikuje go w deterministyczny sposób w czasie wielomianowym. Trzeba jednak pamiętać, że maszyna w rzeczywistości nie źgaduje- zamiast tego sprawdza się wszystkich możliwych świadków. Tak sformułowane twierdzenie o klasie NP, pozwala na wprowadzenie następujących klas oznaczonych jako NPC, NPC L i NPC T klasy problemów NP-zupełnych w sensie odpowiednio transformacji wielomianowej Karpa, transformacji logarytmicznej i transformacji wielomianowej Turinga. Możliwe jest określenie relacji zawierania pomiędzy tymi klasami: NPC L NPC NPC T. Biorąc dowolny problem z NPC L, wiadomo, że można do niego przekształcić każdy problem z NP z użyciem transformacji logarytmicznej. Wiadomo także, że redukowalność logarytmiczna implikuje redukowalność wielomianową; rozpatrywany problem należy zatem do klasy NPC. Analogiczne rozumowanie można zastosować do uzasadnienia drugiej inkluzji. Niestety, nie wiadomo, czy pomiędzy jakąś parą klas zachodzi równość. V1.0 27/ 51 Problem SAT Problem SAT Kilka słów przypomnienia o logice: literałem nazywamy zmienną lub jej negację, klauzulą nazywamy alternatywę skończonej liczby literałów, formuła logiczna jest w koniunkcyjnej postaci normalnej wtedy i tylko wtedy, gdy jest koniunkcją skończonej liczby klauzul. Przykładem formuły w koniunkcyjnej postaci normalnej jest poniższa formuła: (x 1 x 2 x 3 ) (x 2 x 3 ) ( x 1 x 4 ). Formuła jest spełnialna wtedy i tylko wtedy gdy istnieje wartościowanie zmiennych, dla których ta formuła jest spełniona. Dla powyższej formuły jednym z wartościowań, dla których jest ona spełniona, jest wartościowanie przypisujące zmiennym x 1, x 2, x 3, x 4 odpowiednio wartości 0, 1, 1, 0; w związku z tym powyższa formuła jest spełnialna. V1.0 28/ 51
Problem SAT Problem SAT Niech w {0, 1}. Wtedy w SAT reprezentuje poprawnie zakodowaną formułę logiczną w koniunkcyjnej postaci normalnej oraz formuła ta jest spelnialna. Można pokazać że problem SAT przynależy do klasy NP odnosząc się bezpośrednio do definicji klasy NP i pojęcia świadka. Co doprowadza do następującego twierdzenia: Twierdzenie Cook a-lewina Problem SAT jest NP-zupełny w sensie redukcji logarytmicznej. Szkic dowodu: Wiedząc, że SAT NP. Do pokazania pozostaje fakt, że L NP L L SAT. Weźmy zatem dowolny język L NP. Korzystając z udowodnionego wcześniej twierdzenia wiadomo, że istnieje p(n) - wielomian określający długość świadka - oraz wielomianowy program dla deterministycznej maszyny Turinga, weryfikujący świadka - jego czas działania to Q(n). V1.0 29/ 51 Problem SAT Problem SAT Szkic dowodu cd: Zakłada się bez straty ogólności, że program ten kontynuuje działanie po dojściu do stanu akceptującego i pozostaje w tym stanie niezależnie od symbolu pod głowicą. Jako, że wejściem programu weryfikującego jest konkatenacja słowa wejściowego i świadka, górnym ograniczeniem na czas jego działania w zależności od wielkości wejścia jest wyrażenie T (n) := Q(p(n) + n) i jest to ograniczenie wielomianowe. Główne zadanie to takie przekształcenie słowa wejściowego w w formułę logiczną, aby formuła była spełnialna wtedy i tylko wtedy, gdy w L. Szczegóły opisu postaci formuł znajdują np.: na Ważniaku. Ogólnie oczekuje, by w chwili początkowej na taśmie znalazło się słowo wejściowe oraz świadek, który zostanie poddany weryfikacji, Na koniec wymaga się, aby po T (n) krokach program znajdował się w stanie akceptującym (mógł się w nim znaleźć wcześniej, jednak wcześniej założono, że maszyna zatrzyma się w tym stanie, więc wystarczy, jeśli sprawdzimy w chwili T(n). Z problemem SAT związane są poprzez redukcje problemy: 3SAT, MAXSAT. V1.0 30/ 51
Pokrycie wierzchołkowe Pokrycie wierzchołkowe Dla grafu nieskierowanego G = (V, E) mówimy, że podzbiór V V jest pokryciem wierzchołkowym, jeśli każda krawędź w G ma co najmniej jeden z końców w zbiorze V. Twierdzenie Problem pokrycia wierzchołkowego (ang. NODE COVER) jest NP-zupełny. Szkic dowodu: Dla podanego podzbioru zbioru wierzchołków bardzo łatwo sprawdzić, czy stanowi on pokrycie, zatem NODE COVER NP. Problem 3SAT można zredukować do NODE COVER. Na wejściu dla formuły φ = C 1... C m, zakłada się, że każda alternatywa C j zawiera dokładnie 3 różne literały. Konstruujemy graf następujący: każde wystąpienie literału jest wierzchołkiem grafu, wystąpienia wewnątrz jednej klauzuli tworzą trójkąt. Ponadto, dla każdej pary literałów przeciwnych występujących w różnych klauzulach odpowiadające im wierzchołki łączymy krawędzią. V1.0 31/ 51 Pokrycie wierzchołkowe Pokrycie wierzchołkowe Szkic dowodu cd: Co łatwo pokazać na rysunku: (x2 x3 x4)(x1 x2 x3)( x1 x2 x4)(x1 x2 x4) x4 x3 x4 x4 x2 x3 x1 x2 x1 x2 x1 x2 Teraz należy wykazać, że formuła wejsciowa jest spełnialna wtedy i tylko wtedy, gdy wygenerowany graf ma pokrycie wierzchołkowe o liczności k. Z ograniczenia na wielkość pokrycia wynika, że z każdego trójkąta do pokrycia muszą być wybrane dokładnie dwa wierzchołki. Jeśli formuła jest spełnialna, to w każdym trójkącie wyróżnia się jeden wierzchołek v odpowiadający literałowi równemu 1. Do pokrycia wybieramy pozostałe dwa wierzchołki. Pokrywają one wszystkie krawędzie trójkątów oraz wychodzące z tych wierzchołków krawędzie między trójkątami. Każda pozostała krawędź, wychodząca z wierzchołka v, prowadzi do pewnego wierzchołka w odpowiadającego zaprzeczeniu literału wierzchołka v, zatem literał wierzchołka w ma wartość zero i w jest wybrane do pokrycia w trójkącie, w którym występuje. Zatem krawędź (v, w) też jest pokryta. V1.0 32/ 51
Pokrycie wierzchołkowe Szkic dowodu cd: W drugą stronę, załóżmy, że dane jest pokrycie. W każdym trójkącie, dla wierzchołka, który nie jest w pokryciu, ustawiamy wartość odpowiedniej zmiennej tak, aby literał w tym wierzchołku był równy 1. Należy zauważyć, że takie wartościowanie jest niesprzeczne. Wynika to stąd, że przeciwne literały zawsze odpowiadają dwóm wierzchołkom z różnych trójkątów połączonych krawędzią. Co najmniej jeden z tych wierzchołków jest w pokryciu, a więc odpowiadający mu literał nie bierze udziału w obliczaniu wartościowania. Zauważmy, że tak jak i poprzednio, do realizacji redukcji wystarczy pamięć robocza rzędu n, co kończy dowód. V1.0 33/ 51 Dla grafu nieskierowanego G = (V, E) mówimy, że G ma cykl Hamiltona, czyli cykl przechodzący przez każdy wierzchołek dokładnie raz. Twierdzenie CYKL HAMILTONA jest NP-zupełny. Szkic dowodu: Przynależność do klasy NP jest łatwa (względnie) do udowodnienia. Należy zająć się konstrukcją redukcji z problemu NODE COVER. Na wejściu mamy nieskierowany graf G = (V, E) oraz liczbę całkowitą k V. Oznaczmy graf wynikowy jako G = (V, E ). Redukcja przeprowadzona jest techniką gadżetu (stosuje się również termin widget). Gadżet to fragment struktury wynikowej o określonych własnościach. W naszym przypadku pierwszym krokiem redukcji jest wygenerowanie, dla każdej krawędzi (u, v) E, gadżetu G uv = (V uv, E uv ) będącego grafem przedstawionym na rysunku pokazanym dalej. V1.0 34/ 51
Szkic dowodu cd: [u, v, 1] [u, v, 2] [u, v, 3] [u, v, 4] [u, v, 5] [u, v, 6] G uv [v, u, 1] [v, u, 2] [v, u, 3] [v, u, 4] [v, u, 5] [v, u, 6] Jedynie narożne wierzchołki grafu G uv będą połączone z wierzchołkami spoza G uv. Stąd wynika, że jeśli G ma cykl Hamiltona, to musi on przechodzić przez G uv tylko na jeden z przedstawionych na rysunku sposobów. Konstrukcja gadżetu uniemożliwia inne usytuowanie cyklu Hamiltona względem G uv niż pokazane na rysunku na następnym slajdzie. V1.0 35/ 51 Szkic dowodu cd: Drugi krok redukcji to wygenerowanie krawędzi w G łączących gadżety w tak zwane ścieżki. Dla każdego wierzchołka v V najpierw porządkujemy dowolnie wszystkie jego sąsiednie wierzchołki, oznaczmy je przez uv 1,..., uv d(v), gdzie d(v) jest stopniem wierzchołka v. Konstrukcja ścieżki odpowiadającej wierzchołkowi v, łączącej wszystkie gadżety odpowiadające krawędziom incydentnym z v, dokonuje się przez dołączenie do G zbioru krawędzi postaci E v = {([v, u i v, 6], [v, u i+1 v, 1]), i = 1,..., d(v) 1}. V1.0 36/ 51
Szkic dowodu cd: Ostatni krok to dodanie wierzchołków-selektorów s 1,..., s k, i połączenie krawędzią każdego selektora z początkiem i końcem ścieżki odpowiadającej wierzchołkowi v, dla każdego v. E S = {(s i, [v, u 1 v, 1]) : v V, 1 i k}{(s i, [v, u d v (v), 6]) : v V, 1 i k Definicja odpowiednich wierzchołków i krawędzi to: V = V uv {s j, 1 j k}, E = E uv E v E S. (uv) E (uv) E v V V1.0 37/ 51 Szkic dowodu cd: u w x y Gux Gwx Gwy Gxy s1 s2 Na rysunku pokazano graf o 4 wierzchołkach i rezultat redukcji. Pogrubione krawędzie tworzą cykl Hamiltona. Zaczynając od selektora s 1, przechodzi się do początku ścieżki odpowiadającej pierwszemu wierzchołkowi z pokrycia, czyli x. Po przejściu gadżetów na tej ścieżce wracamy do s 2, a stąd do początku ścieżki odpowiadającej drugiemu węzłowi z pokrycia, y. V1.0 38/ 51
Szkic dowodu cd: Należy teraz wykazać, że G ma cykl Hamiltona wtedy i tylko wtedy, gdy G ma pokrycie o liczności k. Zakłada się, że G ma cykl Hamiltona i należy prześledzić jego bieg, zaczynając od s 1. Następny wierzchołek na cyklu musi być początkiem (lub końcem - załóżmy to pierwsze) ścieżki gadżetów dla pewnego wierzchołka v 1 V. Dodajemy v 1 do generowanego pokrycia. Zgodnie z własnością gadżetu, cykl przebiega całą ścieżkę i na końcu przechodzi do innego selektora, załóżmy, że jest to s 2. Z s 2 musi przejść na początek lub koniec innej ścieżki, odpowiadającej wierzchołkowi v 2. Dodajemy v 2 do pokrycia i kontynuujemy. Z ostatniej, k-tej ścieżki, cykl musi wrócić do s 1. Ponieważ cykl Hamiltona przeszedł przez wszystkie wierzchołki G, a więc przez wszystkie gadżety G uv, zatem wybrane w ten sposób wierzchołki v 1,..., v k stanowią pokrycie. V1.0 39/ 51 Szkic dowodu cd: Teraz należy założyć, że G ma pokrycie {v 1,..., v k }. Konstruujemy cykl Hamiltona w G. Zaczynamy od selektora s 1 i przechodzimy na początek ścieżki związanej z v 1, czyli do węzła [v 1, uv 1 1, 1]. Przechodzimy przez kolejne gadżety aż do końca ścieżki. Dla danego gadżetu G v1uv i musimy podjąć decyzję, czy przechodzimy przez wszystkie wierzchołki, czy tylko przez połowę (jedną "ścianę"). Decyzja zależy od tego, czy 1 uv i 1 również należy do pokrycia. Jeśli nie, to przechodzimy cały gadżet; jeśli tak, to drugą "ścianę"pozostawiamy, aby później, gdy trawersowana będzie ścieżka dla uv i 1 również można było przejść przez G v1uv i. Z ostatniego węzła na ścieżce przechodzimy do selektora s 2 i powtarzamy konstrukcję. Z 1 ostatniego węzła na k-tej ścieżce wracamy do s 1, zamykając w ten sposób cykl Hamiltona. V1.0 40/ 51
Szkic dowodu cd: u w x y Gux Gwx Gwy Gxy s1 s2 Ostatnim krokiem dowodu jest stwierdzenie, że konstrukcję grafu G można wykonać, posługując się pamięcią roboczą rozmiaru logarytmicznego. Wynika to, jak i w poprzednich dowodach, z tego że maszynie wystarcza pamięć na licznik położenia w wejściowym grafie oraz licznik numeru (nazwy) generowanego wierzchołka i krawędzi grafu G. V1.0 41/ 51 Rodzina problemów NP-zupełnych Ze względu na przechodniość redukcji, można wskazać następujące redukcje przykładowych problemów NP-zupełnych: CLIQUE VERTEX-COVER SAT CNF-SAT 3SAT HAMPATH SUBSET-SUM UHAMPATH V1.0 42/ 51
Klasa NC Problemy P-zupełne i klasa NC V1.0 43/ 51 Klasa NC Klasa NC Klasa NC O algorytmie równoległym mówi się iż jest efektywny, jeśli działa w czasie polilogarytmicznym, na wielomianowej liczbie procesorów. Toteż o danym problemie mówi się, iż można go efektywnie zrównoleglić, jeśli ten problem posiada efektywny algorytm równoległy Klasa NC klasa Nicka Dla n 1 klasa N i to zbiór języków L takich, że L jest akceptowany przez jednostajną rodzinę układów logicznych rozmiaru wielomianowego i głębokości O(log i n). Przyjmuje się następujące oznaczenie NC = j>0 NC i. Zachodzą dwie poniższe relacje: NC 1 L oraz NL NC 2. V1.0 44/ 51
Klasa NC Własności klasy NC Własności klasy NC Twierdzenie NC P Zachodzi następująca relacja: NC P. Szkic dowodu: Dla zadanego języka L NC i należy najpierw wygenerować obwód W i, co można zrobić w pamięci logarytmicznej, co pociąga za sobą czas wielomianowym. Następnie wykonuje się symulację obwodu, rozpatrując jego bramki w porządku topologicznym. Bramek jest wielomianowa liczba należy też pod uwagę wziąć głębokość obwodu Twierdzenie Brenta. Sposób dostępu do pamięci wpływa na postać hierarchii złożoności w klasie NC: EREW (exclusive read/write): algorytmy, w których równoczesny dostęp do tej samej komórki pamięci nie jest dopuszczalny, CREW (concurrent read, exclusive write): dopuszczalny jest równoczesny odczyt z tej samej komórki, CRCW (concurrent read/write): dopuszczalny równoczesny odczyt oraz równoczesny zapis ale z synchroniczności modelu PRAM wynika, że nie jest możliwe, równoczesne czytanie oraz zapisywanie w tym samym czasie do tej samej komórki. V1.0 45/ 51 Klasa NC Własności klasy NC Własności klasy NC Niech EREW k oznacza zbiór języków akceptowanych przez maszynę EREW o wielomianowej liczbie procesorów i złożoności czasowej O(log k n). Analogiczne oznaczenia zostają wprowadzone dla modeli CREW i CRCW. Dodatkowo przez AC oznacza się wariant jednostajnych obwodów logicznych, w którym pominięto ograniczenie na stopień wejściowy bramki. Na przykład, alternatywa k bitów może być obliczana obwodem o głębokości 1. Klasa AC j to z definicji klasa języków akceptowanych przez takie obwody, o głębokości O(log j n). Należałoby też pokazać NC j EREW j, oraz że AC j NC j+1, j = 0, 1,.... Ważna i trudniejsza do udowodnienia jest trzecia własność: CRCW (log j n) = AC j. Z powyższych uwag otrzymuje się hierarchię klas złożoności równoległej. Dla wartości j = 1, 2, 3,...: NC j EREW j CREW j CRCW j AC j NC j+1. V1.0 46/ 51
Klasa NC P-zupełność P-zupełność Definicja problemu P-zupełnego jest następująca: Definicja P-zupełności Język L {0, 1} jest P-zupełny, jeśli L P oraz dla każdego języka L P istnieje redukcja logarytmiczna L L L. Redukcja logarytmiczna zachowuje złożoność równoległa, a związek pomiędzy redukcją logarytmiczną a przynależnością do klasy NC jest wyrażony w następujący sposób: Twierdzenie Jeśli Q 1 L Q 2 oraz Q 2 NC j, j 2, to Q 1 NC j. Szkic dowodu: Wystarczy zauważyć że złożenie dwóch algorytmów klasy NC j jest algorytmem klasy NC j. W tym momencie wystarczy skorzystać z faktu, że NL NC 2. V1.0 47/ 51 Klasa NC P-zupełność Dowodzenie P-zupełności Aby dowieść, że dany problem p jest P-zupełny, należy: wykazać, że p P, wybrać P-zupełny problem Q i zredukować go logarytmicznie do p. Wartościowanie obwodu logicznego (ang. circuit value) jest zazwyczaj podstawowym problemem P-zupełnym. Twierdzenie Problem CIRCUIT VALUE jest P-zupełny. Szkic dowodu: Dany jest język L P i deterministyczna MT oznaczona przez M rozpoznająca L w czasie wielomianowym. Należy skonstruować maszynę Turinga M, która dla zadanego słowa w {0, 1} wygeneruje obwód C(w) z ustalonymi wartościami bramek wejściowych taki, że M akceptuje w wtedy i tylko wtedy, gdy C(w) = 1. V1.0 48/ 51
Klasa NC P-zupełność Dowodzenie P-zupełności Szkic dowodu cd: Należy wykorzystać redukcję maszyny Turinga do obwodu logicznego,. Redukcja ta pokazuje, że maszyna Turinga działająca w czasie T (n) może być symulowana przez obwód logiczny o O(T 2 (n)) bramkach. Jednakże, należy wykazać, że obwód symulujący maszynę może być skonstruowany przez algorytm o logarytmicznej złożoności pamięciowej. Co znajduje potwierdzenie, że dla ustalonej M podukłady stosowane w redukcji są tej samej ustalonej postaci. Algorytm redukcji musi je wyprodukować w odpowiedniej ilości i połączyć w sieć, jednak to tej operacji wystarcza zliczaniem, czyli operacje na indeksach. W efekcie oznacza to problem wartościowania jest P-zupełny. V1.0 49/ 51 Klasa NC P-zupełność Dowodzenie P-zupełności Można również wykazać, że problem MONOTONE CIRCUIT VALUE gdzie nie dopuszcza się stosowania w obwodzie bramek negacji, również jest P-zupełny. Szkic dowodu: Należy zredukować problem CIRCUIT VALUE do MONO- TONE C.V. Za pomocą praw de Morgana można nie jako przesunąć wszystkie negacje w dół, aż do bramek wejściowych. Następnie bramki wejściowe, których następnikami są negacje, zamienić na przeciwne, dodając nowe, jeśli trzeba - gdy bramka wejściowa jest poprzednikiem dwóch bramek, przy czym dokładnie jedna z tych dwóch jest negacją. Zadanie to można zrealizować w pamięci logarytmicznej, bo wystarcza przeglądać listę bramek (dla każdej podane jest jej sąsiedztwo), a nie badać całej struktury obwodu jako grafu. Inny ważnym przykładem jest problem znajdowania maksymalnego przepływu, który jest P-zupełny i jest trudny zagadnieniem do zrównoleglenia (nie istnieją jak dotąd w pełni efektywne rozwiązania). V1.0 50/ 51
A za tydzień na wykładzie W następnym tygodniu między innymi 1. dopełniania klas 2. pamięć logarytmiczna, wielomianowa 3. klasy L,NL,coNL, cpnp, DP 4. hierarchia wielomianowa 5. maszyna alternująca 6. złożoność wykładnicza Dziękuje za uwagę!!! V1.0 51/ 51