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.