Złożoność obliczeniowa (bioinformatyka) - egzamin 8 lutego 2016
1. Przez #(x, w) oznaczymy liczbę wystąpień litery x w słowie w. Dla każdego z następują- cych języków proszę ustalić, czy jest to język regularny, czy jest to język bezkontekstowy i czy należy do klasy Logspace.
(a) L
1= {w ∈ {a, b}
∗| ∃k ∈ Z (#(a, w) − #(b, w) = 3k)};
(b) L
2= {w ∈ {a, b}
∗| #(a, w) = 3 · #(b, w)};
(c) L
3= {w ∈ {a, b}
∗| #(a, w) = 3
#(b,w)}.
2. Kliką w grafie nazywamy taki podgraf, w którym każdy wierzchołek jest połączony z każdym innnym. Udowodnić, że następujący problem jest NP-zupełny:
Dany graf G i liczba k. Czy w grafie G jest k-elementowa klika?
Wskazówka: Rozpatrzmy graf G, który ma te same wierzchołki, co graf G, ale zbiór jego krawędzi jest dopełnieniem zbioru krawędzi grafu G. (Tj. w grafie G wierzchołki są połączone krawędzią wtedy i tylko wtedy, gdy nie są połączone w grafie G.) Jeśli K jest kliką w G, to czym jest dopełnienie K w grafie G?
3. Udowodnić, że jeśli NLogspace = Logspace, to każdy język kontekstowy jest deter- ministyczny.
4. Proszę objaśnić, co to znaczy, że problem decyzyjny jest nierozstrzygalny i podać trzy przykłady takich problemów.
Przykładowe rozwiązania
1: Ten język jest regularny, rozpoznaje go poniższy automat skończony, w którym 0 jest stanem początkowym i jedynym stanem akceptującym.1
−2
b
a %%
−1 a ""
b
dd 0
a ""
b
cc 1
a ""
aa b 2
a
__ baa
Skoro L1 jest regularny, to jest też bezkontekstowy, oraz L1∈ Dspace(1) ⊆ Logspace.
1b: Ten język jest bezkontekstowy. Rozpoznaje go automat ze stosem, który po przeczytaniu każdego prefiksu v słowa w:
- przechowuje na stosie słowo postaci x|N |, gdzie N = #(a, v) − 3 · #(b, v);
- znajduje się w stanie „plus” gdy N > 0, w stanie „zero”, gdy N = 0, a w stanie „minus”, gdy N < 0.
1Panu Mateuszowi Legięckiemu dziękuję za wykrycie pomyłki.
Po przeczytaniu kolejnej litery, automat aktualizuje swój stan i zawartość stosu. Automat akceptuje w stanie „zero” (wtedy stos powinien być pusty).
Język L2 nie jest regularny, bo ma nieskończenie wiele różnych ilorazów. Na przykład, dla różnych r ∈ N różne są języki
L2\ ar= {w | arw ∈ L2} = {w ∈ {a, b}∗ | #(a, w) + r = 3 · #(b, w)}.
Język L2 jest w klasie Logspace: stos można zastąpić licznikiem, którego wartość nie przekracza długości słowa wejściowego. Taki licznik wymaga pamięci logarytmicznej.
1c: Ten język nie jest bezkontekstowy. Przypuśćmy przeciwnie i niech N będzie stałą z lematu o pompowaniu. Słowo w = a3NbN można przedstawić w postaci w = uvzxy, gdzie uvizxiy ∈ L3 dla każdego i ∈ N. Przy tym vx 6= ε, a słowo vzx jest długości co najwyżej N .
Niech teraz m = #(a, vx) oraz k = #(b, vx). Ponieważ uv2zx2y ∈ L3 i uv3zx3y ∈ L3, więc muszą zachodzić równości 3N + m = 3N +k i 3N + 2m = 3N +2k. Stąd mamy m = 3N +k− 3N = 3N(3k− 1) oraz m = 3N +2k− 3k− m = 3N +2k− 3N +k = 3N(32k− 3k), a więc 3k− 1 = 32k− 3k. To zachodzi tylko dla k = 0, ale wtedy m 6= 0, więc 3N + m 6= 3N +k, sprzeczność.2
Język L3jest w klasie Logspace, bo teraz też potrzebny jest tylko licznik, przyjmujący wartości nie większe niż długość słowa wejściowego. (Do policzenia liter a można użyć licznika ternarnego, który powinien być postaci „100 . . . 0”, gdzie liczba zer jest równa liczbie wystąpień litery b.)
2: Zbiór K jest kliką w G wtedy i tylko wtedy, gdy jego dopełnienie jest pokryciem wierzchołkowym w G. A zatem pytanie o istnienie k-elementowego pokrycia wierzchołkowego w m-elementowym grafie G sprowadza się (w logarytmicznej pamięci) do pytania o istnienie kliki w G, która ma m − k elementów. Skoro problem pokrycia wierzchołkowego jest NP-trudny, to także problem kliki też jest NP-trudny. A jest to oczywiście problem z klasy NP, bo niedeterministyczna maszyna może „zgadnąć”, które elementy mają być w klice i sprawdzić, że są połączone krawędziami.3
3: Załóżmy, że NLogspace = Logspace, i niech L będzie językiem kontekstowym, tj. L ∈ Nspace(n).
Należy pokazać, że L ∈ Dspace(n).
Mamy niedeterministyczną maszynę Turinga M , rozpoznającą L w pamięci n. Łatwo ją przerobić na maszynę M0 (nadal niedeterministyczną), która rozpoznaje język L0= {w$2|w|−|w| | w ∈ L} w pamięci logarytmicznej, bo długość słowa |w| to logarytm z długości słowa w$2|w|−|w|.
Zatem L0 ∈ NLogspace, i z naszego założenia wynika, że L0∈ DLogspace. A więc istnieje też deter- ministyczna maszyna M00, rozpoznająca język L0 w pamięci logarytmicznej. Tę maszynę przerabiamy na deterministyczną maszynę M000, która w pamięci liniowej rozpoznaje L. Maszyna M000 pracuje na słowie wejściowym w, naśladując działanie M00 na słowie w$2|w|−|w|. Położenie głowicy M00na taśmie wejściowej jest reprezentowane w maszynie M0 za pomocą |w| klatek taśmy roboczej.
2Jeszcze prościej: ponieważ |vzx| ≤ N , więc m, k ≤ N . Równość m = 3N(3k− 1) może więc zajść tylko dla m = k = 0, co oznacza, że vx = ε.
3Jeśli graf ma k-elementową klikę, to potrzeba co najmniej k różnych kolorów aby go pokolorować. Ale nie na odwrót. Dlatego nie mamy „natychmiastowej” redukcji problemu kolorowania do problemu kliki.