Problemy i ich złożoność
Transkrypt
Problemy i ich złożoność
Problemy i ich złożoność Języki formalne to właściwie to samo co problemy decyzyjne. W języku pytamy czy słowo należy lub nie, a przy problemie czy odpowiedź na pytanie jest TAK czy NIE. Słowa się akceptuje, a instancje problemu się rozstrzyga (zakładamy przy tym jednak, że maszyna zatrzymuje się dla każdej instancji problemu oraz, jeśli nie jest powiedziane inaczej, jest deterministyczna). Przykłady: Języki Problemy L={u ∈ {0,1}*: u to liczba binarna parzysta} Wejście: Liczba binarna u ∈ {0,1}* Pytanie: Czy liczba u jest parzysta? L={G ∈ (0+1+...+9+,+;)*: G to Wejście: G ∈ (0+1+...+9+,+;)* zakodowany graf nieskierowany, zakodowany graf nieskierowany który jest spójny} Pytanie: Czy G jest spójny? W wielu przypadkach bardziej intuicyjny wydaje się zapis w postaci problemu (wejście+pytanie). Dlatego będziemy się nim teraz posługiwać. Uwaga: Grafy kodujemy zwykle jako listy sąsiedztwa. Przykładowo poniższy graf będzie zapisany jako: 1:2,3; 2:1,3; 3:1,2,4; 4:3 Zadanie 1 Zaprojektuj maszynę Turinga (tylko opis słowny, idea) rozstrzygającą nastepujący problem: Liczba nieparzysta Wejście: u1,u2,...,uk ∈ (0+1+,)* Lista liczb binarnych oddzielonych przecinkami Pytanie: Czy wśród podanych liczb jest liczba nieparzysta? Oszacuj również złożoność czasową problemu względem n - liczby liczb oraz |input| długości wejścia. Zadanie 2 Zaprojektuj maszynę Turinga (tylko opis słowny, idea) rozstrzygającą nastepujący problem: Osiągalność w grafie Wejście: G#u#v ∈ (0+1+...+9+,+;+#)* Graf nieskierowany zakodowany jako lista sąsiedztwa i dwa jego wierzchołki u,v oddzielone znakiem # Pytanie: Czy u i v są połączone ścieżką? Oszacuj również złożoność czasową problemu względem n – liczby wierzchołków oraz |input| długości wejścia. Zadanie 3 Zaprojektuj maszynę Turinga (tylko opis słowny, idea) rozstrzygającą nastepujący problem: Spójnośc grafu Wejście: G ∈ (0+1+...+9+,+;)* graf nieskierowany zakodowany jako lista sąsiedztwa Pytanie: Czy G jest spójny? Oszacuj również złożoność czasową problemu względem n – liczby wierzchołków oraz |input| długości wejścia. Zadanie 4 Zaprojektuj niedeter. maszynę Turinga (tylko opis słowny, idea) rozstrzygającą nastepujący problem: Cykl Hamiltona Wejście: G ∈ (0+1+...+9+,+;)* graf nieskierowany zakodowany jako lista sąsiedztwa Pytanie: Czy G ma cykl Hamiltona? Oszacuj również złożoność czasową problemu względem n – liczby wierzchołków oraz |input| długości wejścia. Zadanie 5 a) Zaprojektuj niedet. maszynę Turinga (tylko opis słowny, idea) rozstrzygającą nastepujący problem: Tautologia Wejście: F ∈ { x+0+1+...+9+∧+∨+¬+)+( }* formuła logiczna Pytanie: Czy F jest tautologią? Oszacuj również złożoność czasową problemu względem n – liczby zmiennych oraz |input| - długości wejścia. b) Rozpatrz przypadek deterministyczny. Zadanie 6 Zaprojektuj niedet. maszynę Turinga (tylko opis słowny, idea) rozstrzygającą nastepujący problem: k-Klika Wejście: G#k ∈ (0+1+...+9+,+;+#)* Graf nieskierowany zakodowany jako lista sąsiedztwa i liczba naturalna k po znaku # Pytanie: Czy G ma k-klikę (jako podgraf)? Oszacuj również złożoność czasową problemu względem n – liczby wierzchołków oraz |input| długości wejścia.