• Nie Znaleziono Wyników

Złożoność obliczeniowa (bioinformatyka) Egzamin 8 lutego 2021 1. Jeśli w ∈ {a, b}

N/A
N/A
Protected

Academic year: 2021

Share "Złożoność obliczeniowa (bioinformatyka) Egzamin 8 lutego 2021 1. Jeśli w ∈ {a, b}"

Copied!
2
0
0

Pełen tekst

(1)

Złożoność obliczeniowa (bioinformatyka) Egzamin 8 lutego 2021

1. Jeśli w ∈ {a, b}

, to przez w oznaczymy słowo powstające przez zamianę wszystkich liter a na b i wszystkich b na a. Na przykład jeśli w = ababb, to w = babaa. Które z następujących języków są regularne, a które są bezkontekstowe?

(a) L

1

= {w

R

w | w ∈ {a, b}

};

(b) L

2

= {ww | w ∈ {a, b}

};

2. Czy języki L

1

i L

2

z zadania 1 są rozstrzygalne? Do jakich należą klas złożoności? Czy to możliwe, że któryś z nich jest P-zupełny? NP-zupełny? Pspace-zupełny? Co by z tego wynikało?

3. Które z następujących zawierań: CSL ⊆ Dspace(n

2

log n) ⊆ Nspace(n log log n) ⊆ P

(gdzie CSL oznacza klasę języków kontekstowych) faktycznie zachodzą, które nie za-

chodzą, a które implikują równość Pspace = P?

(2)

Przykładowe rozwiązania

1a: Elementy języka L1to wszystkie słowa postaci x1x2. . . xnxn. . . x2x1, gdzie x1, x2, . . . , xn∈ {a, b}.

Ten język jest bezkontekstowy. Generuje go taka gramatyka: ξ0::= ε | aξ0b | bξ0a . Ale nie jest regularny. W przeciwnym razie iloczyn L01= L1∩ a+bab+= {anbabn | n, k > 0} też byłby regularny.

A ten jezyk nie da się pompować: jeśli N jest stałą z lematu o pompowaniu, to trzeba podzielić słowo aNbabN na trzy części x, y, z i to tak że |xy| ≤ N , czyli segment y ma postać ad, dla pewnego d > 0.

Wtedy xy2z = aN +dbabN 6∈ L01, bo liczba liter w pierwszej i ostatniej części się nie zgadza.

1b: Ten język nie jest bezkontekstowy. Gdyby był, to język

L02= L1∩ a+b+a+b+a+b+= {anbmakbnambk | n, m, k > 0}

też byłby bezkontekstowy, a nie jest. Użyjemy lematu o pompowaniu: niech N będzie stałą z lematu i niech aNbNaNbNaNbN = xyzuv, gdzie |yzu| ≤ N , yu 6= ε. Słowo yzu mieści w jednym z segmentów postaci aNbN lub postaci bNaN. Przy tym słowo y zbudowane jest z samych a lub samych b i tak samo słowo u – inaczej słowo xy2zu2v ma za dużo alternacji liter i nie należy do L02. Ale wtedy xzv 6∈ L02, bo któraś z sześciu części jest w nim za krótka.

2: Język L1 należy do klasy Dtime(O(n)), bo można go rozpoznawać maszyną, która czytając słowo wejściowe w zapisuje w na taśmie roboczej, a następnie porównuje taśmy czytając je w przeciwne strony (tutaj korzystamy z tego, że L1= {w | w = wR}). Możemy też zauważyć, że L1∈ Logspace, bo zamiast słowo kopiować (co wymaga pamięci liniowej) można porównywać poszczególne litery, posługując się licznikami rozmiaru log n. Podobnie jak L1, także język L2należy do klas Dtime(O(n)) i Logspace. Tym razem algorytmy są nieco bardziej kłopotliwe, trzeba bowiem (deterministycznie) odnaleźć środek słowa (czyli obliczyć 12n) i porównywać połówki czytając obie od lewej do prawej.

Liczbę12n można jednak ustalić z pomocą jednego licznika w czasie liniowym: czytamy słowo wejściowe, dodając jedynkę do licznika co dwa kroki. Skoro języki L1i L2mają określoną złożoność, to oczywiście są rozstrzygalne. Gdyby któryś z nich okazał się zupełny w klasie P lub NP (czego nie wiadomo), to wtedy cała klasa P (odpowiednio NP) byłaby równa klasie Logspace. Ale nasze języki na pewno nie są zupełne w Pspace, bo wiadomo, że Logspace 6= Pspace.

3: Ponieważ CSL = Nspace(n) ⊆ Dspace(n2) z twierdzenia Savitcha, więc tym bardziej zachodzi pierwsza inkluzja w zadaniu. Druga nie zachodzi, bo z tegoż twierdzenia Savitcha i z tego, że limn→∞ (log log n)2

log n = 0 wynika, że Nspace(n log log n) ⊆ Dspace(n2(log log n)2) Dspace(n2log n).

Pozostaje pokazać, że jeśli Nspace(n log log n) ⊆ P, to Pspace = P. Niech więc L ∈ Pspace, powiedzmy, że L ∈ Nspace(nk). „Wypychamy” język L, aby dostać język L0 należący do klasy Nspace(n log log n). Można to zrobić tak: L0= {w$...$ | w ∈ L oraz |w$...$| = |w|k}. Maszynę, która rozpoznawała język L w pamięci nk można łatwo przerobić na maszynę rozpoznającą L0 w pamięci liniowej (liczonej od N = nk). Zatem L0 ∈ Nspace(n) ⊆ Nspace(n log log n) ⊆ P, czyli mamy de- terministyczną maszynę rozpoznającą język L0 w czasie wielomianowym, powiedzmy nr. Pozostaje ją przerobić na taką maszynę M , że L = L(M ), która działa w wielomianowym czasie Nr= nkr.

Cytaty

Powiązane dokumenty

Dodawanie dwu liczb dwójkowych tej samej długości, znajdujących się na Taśmach 1 i 2, których najstarsze pozycje znajdują się w komórkach o numerze 1.. Wynik tworzony jest

Klasa

Język L 3 jest 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

Język L(T M,w ) rozpoznawany przez maszynę T M,w jest wtedy albo pusty (gdy M nie akceptuje słowa w) albo pełny (gdy M akceptuje słowo w).. W szczególności mamy taką

• Dla bardzo dużych zbiorów danych najważniejsza jest klasa złożoności ob- liczeniowej algorytmu ( wpływ czynników stałych pominiętych w notacji duże-O może okazać

Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80–20, ocena efektywności algo- rytmów, ocena złożoności

Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80–20, ocena efektywności algo- rytmów, ocena złożoności

Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80–20, ocena efektywności algo- rytmów, ocena złożoności