Teoria Złożoności Zadania
|
|
- Aleksander Nowacki
- 6 lat temu
- Przeglądów:
Transkrypt
1 Teoria Złożoności Zadania Łukasz Czajka 14 czerwca
2 Spis treści 1 Zadanie Zadanie 5 8 2
3 1 Zadanie 1 Niech A NP 1. Istnieje zatem jedno-taśmowa niedeterministyczna maszyna Turinga M o alfabecie 0, 1 działająca w czasie wielomianowym p(n), która rozpoznaje A. Skonstruujemy deterministyczną maszynę Turinga M działającą w pamięci logarytmicznej, która dla wejścia 1 n generuje obwód logiczny C n o n wejściach, wielomianowej liczbie wyjść, zerowej głębokości i rozmiarze wielomianowym, obliczający funkcję f : {0, 1} {0, 1} taką, że f(x) jest kodowaniem obwodu logicznego F x o p(n) wejściach, który jest spełnialny wtedy i tylko wtedy, gdy x A. Dla obwodów C n przyjmujemy następujące kodowanie. 2 Pojedynczą bramkę kodujemy tak: #<typ bramki>@<opcjonalny numer zmiennej wejściowej> Przyjmujemy tutaj alfabet {0, 1, Pole <typ bramki> koduje binarnie typ bramki: stała 1, stała 0, zmienna, negacja zmiennej. Drugie pole koduje numer zmiennej, lub jest zerem jeśli typ bramki to stała. Poszczególne bramki są ustawione na taśmie według uporządkowania bramek wyjściowych. Wszystkie bramki obecne w kodowaniu są wyjściowe. Jeśli jakiejś bramki wejściowej (odpowiadającej zmiennej) nie ma w kodowaniu, to oznacza, że wejście tej bramki jest ignorowane. Dla obwodów F x przyjmujemy następujące kodowanie. Pojedynczą bramkę kodujemy tak: <etykieta bramki><typ bramki><ilość wejść> \ <etykieta wejścia 1><etykieta wejścia 2>... Alfabetem jest tutaj 0, 1. Typ bramki określa, czy bramka jest typu AND, OR, wejściem, wyjściem itp. Zaznaczmy jeszcze, że kodowanie dla typu bramki wybieramy tak, aby to, czy stała bramka ma wartość 1 czy 0 zależało tylko od tego, czy jeden ustalony bit ma wartość 1 czy 0. Etykieta to jednoznaczny identyfikator bramki co najwyżej logarytmicznej długości. Na taśmie poszczególne bramki zapisane są jedna za drugą. Wszystkie pola mają ustaloną długość K, której wartość podana będzie niżej (jest ona O(log n)). Takie kodowanie ma rozmiar wielomianowy względem ilości bramek w obwodzie. Każde obliczenie maszyny M możemy przedstawić jako wektor binarny długości p(n), w którym i-ty bit przedstawia wybór w i-tym kroku obliczeń. Można założyć, że w każdym kroku M dokonuje niedeterministycznego wyboru spośród dokładnie dwóch możliwości lub się zatrzymuje, tzn. dla każdego stanu (niekońcowego) są dokładnie dwa przejścia na każdym symbolu. Jeśli jest k > 2 możliwości wyboru dla jakiegoś stanu q i symbolu 1 Przyjmujemy bez straty ogólności, że A {0, 1} 2 To kodowanie nie jest akurat bardzo istotne. Bardziej istotne jest kodowanie dla F x. 3
4 σ, to zawsze dodając k 2 stanów możemy przekształcić stan q na drzewo binarne stanów, w którym przejście do każdego z k 2 wewnętrznych węzłów (stanów) będzie tylko dawało dodatkowy niedeterministyczny wybór bez zmieniania taśmy wejściowej ani ruszania głowicy, a liście w tym drzewie będą pierwotnymi następnikami q. Jeśli jest tylko jedna możliwość, to rozważamy ją jako dwie możliwości. Jeśli obliczenia kończą się po mniej niż dokładnie p(n) krokach, to uzupełniamy resztę wektora zerami. Zakładamy także, iż M nie ma przejść ze stanu akceptującego. 3 Wejściem (tzn. zmiennymi) dla obwodu F x będzie właśnie wektor binarny przedstawiający obliczenie maszyny M na słowie x, tzn. wybory dokonane w kolejnych krokach obliczeń. Nazwijmy go c = [c 1,..., c p(n) ]. W obwodzie F x będziemy wyróżniali kilka rodzajów bramek. Pierwszy z nich to bramki z etykietami t, i, q, σ, gdzie t oraz i są liczbami, q stanem lub ɛ (brak stanu), σ symbolem (0, 1 lub symbol pusty). W zamyśle bramka t, i, q, σ ma mieć wartość 1 przy danym obliczeniu c (wartościowaniu zmiennych na wejściach obwodu F x ) wtedy i tylko wtedy, gdy w kroku t w komórce i występuje σ. Dodatkowo jeśli q ɛ, to maszyna jest w kroku t w stanie q z głowicą nad i-tą komórką taśmy. Jeśli q = ɛ, to w kroku t głowica nie jest nad i-tą komórką taśmy. Komórki taśmy oraz kroki wykonania numerujemy od 1. Bramki tego rodzaju są bramkami typu OR. Drugi rodzaj bramek, to bramki wejściowe o etykietach c 1,..., c p(n) oraz ich negacje c 1,..., c p(n). Trzeci rodzaj bramek to bramki o etykietach t, i 1, q 1, ρ, τ, i 2, q 2, σ. Są to bramki typu AND. Zakładamy, że i 2 {i 1, i 1 + 1, i 1 1}, oraz q 1, q 2 ɛ. W zamyśle taka bramka, przy danym obliczeniu c, ma mieć wartość 1 wtedy i tylko wtedy, gdy maszyna w kroku t 1 wykonała przejście ze stanu q 1 do stanu q 2 na symbolu ρ, przesuwając głowicę o pozycji i 1 na i 2 i wypisując symbol τ, przy czym po wykonaniu przejścia w obserwowanej komórce taśmy jest symbol σ. Czwarty rodzaj bramek, to bramki NOT o etykietach NOT t, i 1, q 1, ρ, τ, i 2, q 2, σ, które mają być negacją odpowiednich bramek trzeciego rodzaju. Kolejny rodzaj, to bramki AND o etykietach CONST t, i, σ 1, σ 2, σ 3, q 1, q 2. W zamyśle mają one mieć przy danym obliczeniu wartość 1 wtedy i tylko wtedy, gdy: na pozycjach taśmy i 1,i,i+1 w kroku t 1 były odpowiednio symbole σ 1, σ 2, σ 3 ; jeśli q 1 ɛ, to głowica była na pozycji i 1, a maszyna w stanie q 1 ; jeśli q 2 ɛ, to głowica była na pozycji i + 1, a maszyna w stanie q 2 ; 3 Por. [Pap07], s. 187, dowód twierdzenia 8.2 (Cooka). Jak można poniżej łatwo zauważyć obwód F x jest tutaj (prawie) dokładnie obwodem z dowodu twierdzenia
5 w wyniku przejścia do kroku t nie zmieniła się zawartość komórki i oraz głowica nie przesunęła się na pozycję i. Dodajemy jeszcze jedną bramkę wyjściową Out typu OR, której wejściami będą wszystkie bramki t, i, q f, σ gdzie q f jest stanem akceptującym. Dla każdego symbolu x dodajemy także dwie bramki In xi oraz In xi. Bramka In xi jest bramką stałą o wartości 1 jeśli x i = 1 lub o wartości 0 jeśli x i = 0. Dualnie dla bramki In xi. Zaznaczmy, że same etykiety In xi i In xi nie zależą od x. Tylko jeden bit w kodowaniu typu takiej bramki zależy od x. Na koniec dodajemy jeszcze jedną bramkę B 0. Jest to stała bramka o wartości 0. Etykiety kodujemy w następujący sposób. <pole rodzaju etykiety><kolejne pola w zależnośći od rodzaju> Pola mają ustaloną długość N = α log 2 p(n), gdzie α jest pewną stałą zależącą od M. Jeśli w etykiecie jest mniej pól niż ich maksymalna ilość (9), to resztę uzupełnia się zerami (po wartości pierwszego pola typu można poznać, czy te zera coś oznaczają). Chodzi tutaj o to, żeby wszystkie etykiety miały taką samą długość K = 9α log 2 p(n) i w każdym polu zmieściła się na pewno wartość jaka może tam być przechowywana. Możemy przyjąć, że przejścia maszyny M są w jakiś sposób liniowo uporządkowane. Ponieważ ilość tych przejść jest stała, więc możemy zawsze na początku w stałym czasie je np. ponumerować. Przyjęliśmy też, że w każdym stanie na każdym symbolu są dokładnie dwa przejścia lub nie ma żadnych, więc możemy każdemu przejściu jednoznacznie przypisać 0 lub 1 w zależności od tego, czy bliźniacze przejście z tego samego stanu na tym samym symbolu ma mniejszy czy większy numer. Maszyna M działa w następujący sposób. Na samym początku zlicza ilość jedynek na taśmie wejściowej i zapamiętuje wynik (w zapisie binarnym). Jeśli na taśmie jest coś innego niż n jedynek, to odrzuca. Następnie oblicza wartość p(n). Może to zrobić w pamięci logarytmicznej, bo sam wielomian dany jest a priori, tzn. zależy tylko od M. Maszyna oblicza także N i K. Potem M przechodzi do głównej fazy swojego działania, w której będzie po kolei generować bramki C n, których wyjściami będą poszczególne warstwy obwodu F x. Warstwę numer t obwodu F x tworzą bramki t, i, q, σ dla pewnego i, q oraz σ, tzn. bramki, które odpowiadają za t-ty krok obliczeń. Dokładniej wygląda to tak, jak stoi napisane w algorytmie 1. Wypisanie bramek obwodu C n generujących bramkę B oznacza, że wypisujemy po kolei (zakodowane według pierwszego kodowania) bramki wyjściowe odpowiadające poszczególnym bitom kodowania B (wraz z kodowaniem etykiet wejść bramki B). Bitowi o wartości 1 (0) odpowiada kod bramki stałej o wartości 1 (0), natomiast bitowi, którego wartość zależy pozytywnie 5
6 Algorytm 1 Konstrukcja obwodu C n 1: for i = 1 to p(n) do 2: Wypisz bramki obwodu C n generujące bramki c i oraz c i. 3: end for 4: for i = 1 to n do 5: Wypisz bramki obwodu C n generujące bramki In xi oraz In xi. 6: end for 7: for t = 2 to p(n), i = 1 to p(n), all q Q M do 8: for all σ {0, 1, } do 9: Wypisz bramki obwodu C n generujące bramkę t, i, q, σ. 10: for all ρ {0, 1, }, q Q M do 11: for all τ {0, 1} do 12: if i p(n) oraz istnieje w M przejście ze stanu q do q na symbolu ρ w którym głowicę przesuwamy w prawo z wypisaniem symbolu τ then 13: Wypisz bramki obwodu C n generujące bramkę t, i, q, ρ, τ, i + 1, q, σ. 14: Wypisz bramki obwodu C n generujące bramkę NOT t, i, q, ρ, τ, i + 1, q, σ. 15: end if 16: if i > 0 oraz istnieje w M przejście ze stanu q do q na symbolu ρ w którym głowicę przesuwamy w lewo z wypisaniem symbolu τ then 17: Wypisz bramki obwodu C n generujące bramkę t, i, q, ρ, τ, i 1, q, σ. 18: Wypisz bramki obwodu C n generujące bramkę NOT t, i, q, ρ, τ, i 1, q, σ. 19: end if 20: end for 21: if istnieje w M przejście ze stanu q do q na symbolu ρ w którym nie przesuwamy głowicy, a na taśmie zapisujemy symbol σ then 22: Wypisz bramki obwodu C n generujące bramkę t, i, q, ρ, σ, i, q, σ. 23: Wypisz bramki obwodu C n generujące bramkę NOT t, i, q, ρ, σ, i, q, σ. 24: end if 25: end for 26: end for 27: for all σ 1, σ 2, σ 3 {0, 1, } do 28: Wypisz bramki obwodu C n generujące bramkę CONST t, i, σ 1, σ 2, σ 3, q, q. 29: end for 30: end for 31: Wypisz bramki obwodu C n generujące bramki B 0 oraz Out. 6
7 (negatywnie) od i-tego symbolu słowa x odpowiada kod bramki wejściowowyjściowej x i ( x i ). Zauważmy, że tak ustaliliśmy kodowanie F x, że bity kodowania bramki B, które zależą od x są dokładnie którymś z bitów x lub jego negacją. Ponadto powyższy algorytm wypisze każdą bramkę wejściową obwodu C n dokładnie raz (podczas wypisywania In xi lub In xi ). Musimy jeszcze ustalić jakie wejścia generujemy dla każdej bramki obwodu F x, gdyż w powyższym algorytmie to pominęliśmy. Dla bramki 1, 1, q 0, 1 jedynym wejściem jest bramka In x1. Dla bramki 1, 1, q 0, 0 bramka In x1. Dla bramki 1, i, ɛ, 1, gdzie i > 1, jedynym wejściem jest bramka In xi. Dla bramki 1, i, ɛ, 0 (i > 1) bramka In xi. Dla pozostałych bramek typu 1, i, q, σ jedynym wejściem jest B 0. Dla bramki t, i, q, σ (1 < t p(n), 1 i p(n), q ɛ) wejściami są wszystkie bramki t, i 1, q, ρ, τ, i, q, σ takie, że istnieje w M przejście ze stanu q do q na symbolu ρ z przesunięciem głowicy w prawo i wypisaniem τ; wszystkie bramki t, i + 1, q, ρ, τ, i, q, σ takie, że istnieje w M przejście ze stanu q do q na symbolu ρ z przesunięciem głowicy w lewo i wypisaniem τ; oraz wszystkie bramki t, i, q, ρ, σ, i, q, σ takie, że istnieje w M przejście ze stanu q do q na symbolu ρ bez przesuwania głowicy, z wypisaniem symbolu σ. Dodatkowym wejściem jest także bramka B 0. 4 Dla bramki t, i, ɛ, σ, gdzie 1 < t p(n) oraz 1 i p(n), wejściami są wszystkie bramki t, i, q, ρ, σ, i 2, q, τ (i 2 {i + 1, i 1}) takie, że istnieje w M przejście ze stanu q do q na symbolu ρ z przesunięciem głowicy o i 2 i pozycji w prawo i wypisaniem symbolu σ (τ to dowolny symbol); oraz wszystkie bramki CONST t, i, σ 1, σ, σ 3, q 1, q 2, gdzie oba q 1 i q 2 nie mogą być równocześnie różne od ɛ. Dla bramki t, i, q, ρ, τ, i + 1, q, σ odpowiadającej przejściu ze stanu q do q na symbolu ρ z ruchem głowicy w prawo i wypisaniem symbolu τ wejściami są bramki t 1, i, q, ρ, t 1, i + 1, ɛ, σ. Jeśli przejściu odpowiadającemu naszej bramce przypisaliśmy 0 to dodatkowym wejściem jest dla niej c t, w przeciwnym przypadku c t. Analogicznie dla bramek typu t, i, q, ρ, τ, i + 1, σ, t, i, q, ρ, σ, i, σ. Dla bramki CONST t, i, σ 1, σ 2, σ 3, ɛ, ɛ (t > 1) wejściami są bramki t 1, i 1, ɛ, σ 1, t 1, i, ɛ, σ 2, t 1, i + 1, ɛ, σ 3. 4 Jest to potrzebne tylko po to, aby zapewnić, że każda bramka OR ma przynajmniej jedno wejście. Alternatywnie można by przyjąć, że bramka OR bez wejść to stała bramka o wartości 0. Nie ma to większego znaczenia. 7
8 Dla bramki CONST t, i, σ 1, σ 2, σ 3, q 1, ɛ wejściami są t 1, i 1, q 1, σ 1, t 1, i, ɛ, σ 2, t 1, i + 1, ɛ, σ 3, oraz wszystkie bramki NOT t, i 1, q 1, σ 1, τ, i, q, σ dla każdego q Q M i σ, τ {0, 1, }, o ile istnieje w M przejście ze stanu q 1 do q na symbolu σ 1 z przesunięciem głowicy w prawo i wypisaniem τ. Analogicznie dla bramek typu CONST t, i, σ 1, σ 2, σ 3, ɛ, q 2. Jedynym wejściem bramki NOT t, i 1, q 1, ρ, τ, i 2, q 2, σ jest bramka t, i 1, q 1, ρ, τ, i 2, q 2, σ. Dla Out wejściami są wszystkie bramki t, i, q f, σ, gdzie q f jest stanem akceptującym. W powyższym jeśli jakaś wspomniana bramka nie istnieje ponieważ i przekracza zakres dopuszczalnych wartości (i < 1 lub i > p(n)), to przyjmujemy, że odpowiednim wejściem jest B 0. Zauważmy, że etykiety wejść dla danej bramki B zależą tylko od M oraz etykiety B oraz liczba wejść każdej bramki jest stała. Wyjątkiem jest tu bramka Out, ale jak ustalimy t oraz i dla jej bramek wejściowych jest to już prawdą. Etykiety bramek wejściowych można zatem generować w pamięci logarytmicznej na podstawie tylko etykiety B. Wykorzystujemy tutaj wszędzie zapamiętane wcześniej liczby K i N do zliczania symboli, żeby wiedzieć o ile należy się przesuwać po taśmie generując odpowiednie bramki. Potrzebujemy także stałej ilości liczników logarytmicznej wielkości względem ilości bramek do liczenia t, i, itp. Zauważmy także, iż wszystkich bramek w F x jest O(p(n) 2 ). Kodowanie każdej bramki F x ma wielomianową długość, zatem wszystkich bramek obwodu C n też jest wielomianowo wiele. Czyli C n ma wielomianową wielkość i może być wygenerowany w pamięci logarytmicznej. Fakt, iż F x jest spełnialny wtedy i tylko wtedy, gdy istnieje obliczenie akceptujące maszyny M na słowie x wynika bezpośrednio z przytoczonej konstrukcji. 2 Zadanie 5 Zauważmy na początku, że jeśli jakaś zmienna występuje tylko w literałach pozytywnych lub tylko w negatywnych, to możemy usunąć wszystkie klauzule w których występuje i otrzymamy równoważną formułę. 5 Przyjmujemy przy tym konwencję, że pusta koniunkcja to 1, a pusta alternatywa to 0. Takie przekształcenie można wykonać w pamięci logarytmicznej. Po prostu przesuwamy się po formule z lewej do prawej i dla każdej zmiennej 5 Równoważną w tym sensie, że jest ona spełnialna wtedy i tylko wtedy, gdy oryginalna formuła jest spełnialna. 8
9 x występującej w literale pozytywnym (negatywnym) w bieżącej klauzuli α przechodzimy całą formułę sprawdzając, czy x występuje także w literale negatywnym (pozytywnym). Jeśli tak, to przesuwamy się dalej w prawo do następnego literału w klauzuli α, a jeśli był to ostatni literał to wypisujemy α. Jeśli nie występuje, to przechodzimy do następnej klauzuli nie wypisując klauzuli bieżącej. 6 Możemy zatem założyć, że każda zmienna występuje w formule dokładnie dwa razy raz w literale pozytywnym i raz w negatywnym. Fakt 1 Istnieje wartościowanie v spełniające formułę α = φ (x ψ 1 ) ( x ψ 2 ) w koniunkcyjnej postaci normalnej, gdzie x nie występuje w φ, ψ 1 ani ψ 2, wtedy i tylko wtedy, gdy istnieje wartościowanie w spełniające formułę β = φ (ψ 1 ψ 2 ). 7 Dowód: ( ) Musi być ψ 1 [w] = 1 lub ψ 2 [w] = 1. W pierwszym przypadku bierzemy v = w{0/x}, w drugim v = w{1/x}. ( ) Bierzemy w = v V ar(β). Mamy oczywiście φ[w] = 1. Przypuśćmy, że v(x) = 1. Wtedy musi być ψ 2 [v] = 1, więc β[w] = 1. Analogicznie dla v(x) = 0. Następujący algorytm wykazuje, że rozważany problem spełnialności formuły φ jest w P. 1. Usuń wszystkie klauzule zawierające dwa sprzeczne literały. 2. Usuń wszystkie zmienne występujące w formule tylko pozytywnie lub tylko negatywnie, wraz z klauzulami w których te zmienne występują. Powtarzaj ten krok tak długo, aż nie będzie już tego typu zmiennych. 3. Jeśli formuła jest pusta (usunęliśmy wszystkie klauzule), to zakończ φ jest spełnialna. 4. Wybierz dowolną zmienną x oraz dwie klauzule α 1 = (x ψ 1 ) oraz α 2 = ( x ψ 2 ). Zamień α 1 α 2 w formule na β, gdzie β = (ψ 1 ψ 2 ). Jeśli β jest pustą klauzulą, to zakończ φ nie jest spełnialna. 5. Przejdź do kroku 1. 6 Oczywiście zakładamy jakieś kodowanie formuł i jako model obliczeń przyjmujemy maszynę Turinga, ale już nie będę wchodzić w takie oczywiste szczegóły. Np. możemy założyć, że w alfabecie mamy wszystkie potrzebne symbole do normalnego tekstowego zapisania formuły, a zmiennym przypisujemy numerki, żeby zapis zmiennej miał logarytmiczną długość. 7 Literkami greckimi będę oznaczać (pod-)formuły, łacińskimi zmienne. 9
10 Krok 2 zapewnia, że w kroku 4 zawsze będziemy mogli wybrać zmienną występującą zarówno pozytywnie jak i negatywnie. Inaczej formuła byłaby pusta i zakończylibyśmy w kroku 3. Każdy krok 8 wymaga co najwyżej wielomianowej liczby operacji, przy czym powtórzeń kroków 2 i 4 nie może być więcej niż jest zmiennych, bo za każdym razem usuwamy co najmniej jedną zmienną. Natomiast kroków 1, 3 i 5 nie może być więcej niż kroków 2 i 4. Zatem algorytm działa w czasie wielomianowym. Zużycie pamięci też jest wielomianowe, bo pamiętamy cały czas przekształcaną formułę. 9 Poprawność wynika z faktu 1 oraz oczywistej obserwacji, że kroki 1 i 2 przekształcają formułę na równoważną 10. Jeśli formuła jest spełnialna, to po każdym z kroków 1, 2 i 4 także musi pozostać spełnialna. Jeśli nie jest spełnialna, to przekształcenia te nie mogą dać formuły spełnialnej. Pokażemy teraz, że rozważany problem jest w L. Dla każdej formuły φ w koniunkcyjnej postaci normalnej, w której każda zmienna występuje dokładnie dwa razy, przy czym raz w literale negatywnym i raz w pozytywnym, definiujemy graf nieskierowany G φ z wielokrotnymi krawędziami. Wierzchołkami grafu będą klauzule, a krawędzie odpowiadać będą zmiennym. Krawędź e x odpowiadająca zmiennej x łączy obie klauzule zawierające x (może być to ten sam wierzchołek). Ze względu na założenia o formule φ graf ten jest dobrze zdefiniowany. Dla danej formuły φ graf G φ może być wygenerowany w pamięci logarytmicznej w następujący sposób. Zakładamy, że graf reprezentowany będzie przez listy sąsiedztwa, zakodowane np. jakoś tak: #<numer wierzchołka>@<numer sąsiada>@<numer sąsiada>@... #<numer wierzchołka>@... Tego rodzaju kodowanie ma rozmiar wielomianowy względem długości φ. 11 Deterministyczna maszyna Turinga przekształcająca φ w G φ przegląda wejście od lewej do prawej, utrzymując cały czas licznik informujący o numerze bieżącej klauzuli. Przy dodawaniu klauzuli α do grafu najpierw jest wypisywany jej numer, po czym maszyna przegląda po kolei literały klauzuli. Dla każdego literału l przeszukuje od początku całą formułę licząc w osobnym drugim liczniku numery przeglądanych klauzul. Gdy napotka na literał przeciwny do l, wypisuje numer klauzuli z drugiego licznika jako numer sąsiada dla α (oddzielając to wszystko odpowiednimi specjalnymi symbolami gdzie potrzeba). Potem przechodzi do rozpatrywania następnego literału w α. Dwa liczniki wymagają oczywiście tylko logarytmicznej pamięci. 8 N powtórzeń kroku 2 liczymy jako N kroków 2, a nie jeden wielki krok 9 Zakładamy, że maszyna ma dwie taśmy. Przy przekształcaniu formuły pisze sobie wynik na drugą taśmę, potem zamienia taśmy rolami, itp., itd., ale to oczywiste szczegóły. 10 W sensie spełnialności. 11 Tutaj kodowanie nie jest już tak całkiem oczywiste, bo nie można wziąć np. całych klauzul jako nazw wierzchołków, gdyż wynik mógłby wyjść zbyt duży. 10
11 Rozważmy teraz następujący algorytm działający na grafie G φ. 1. Usuń wszystkie wierzchołki znajdujące się na jakiejś jedno-krawędziowej pętli (tzn. wszystkie, z których prowadzi krawędź do nich samych). 2. Usuń wszystkie wierzchołki, które straciły krawędź w wyniku poprzedniego kroku. Powtarzaj ten krok tak długo, jak tylko jakieś wierzchołki obecne w grafie tracą w jego wyniku krawędzie. 3. Jeśli graf jest pusty (usunęliśmy wszystkie wierzchołki), to zakończ φ jest spełnialna. 4. Wybierz dowolną krawędź e x oraz dwa wierzchołki α 1 i α 2 połączone tą krawędzią. Ściągnij krawędź e x łącząc wierzchołki α 1 i α 2 w jeden wierzchołek β, nie usuwając jednak żadnych krawędzi poza e x, a krawędzie różne od e x łączące α 1 i α 2 zamień na jedno-krawędziowe pętle łączące β z β. 12 Jeśli β jest wierzchołkiem izolowanym, tzn. nie jest incydentny z żadnymi krawędziami, w tym z żadną jedno-krawędziową pętlą, to zakończ φ nie jest spełnialna. 5. Przejdź do kroku 1. Inaczej mówiąc, w wyniku kroków 1 i 2 usuwamy wszystkie spójne składowe zawierające jedno-krawędziowe pętle. Nie jest to jeszcze algorytm, którego szukamy, ale chwila zastanowienia wykazuje, że jest to właściwie ten sam algorytm, co pierwszy algorytm działający na formułach. Przekształcenia grafu G φ odpowiadają dokładnie przekształceniom formuł w pierwszym algorytmie. Poprawność jest zatem oczywista. Zastanówmy się teraz jaki warunek musi być spełniony, aby algorytm zatrzymał się w kroku 3, tzn. φ była spełnialna. Oczywiście potrzeba i wystarcza, aby każda spójna składowa zawierała jakiś cykl. Potrzeba, bo jeśli jakaś spójna składowa jest drzewem, to zostanie w końcu ściągnięta do pojedynczego wierzchołka przez operacje w kroku 4. Wystarcza, ponieważ jeśli spójna składowa zawiera cykl, to zostanie on w końcu ściągnięty w kroku 4 do jedno-krawędziowej pętli, po czym zaraz w krokach 1 i 2 cała składowa zostanie usunięta. Zatem problem z zadania sprowadza się (poprzez dwie redukcje w pamięci logarytmicznej) do problemu sprawdzania, czy każda spójna składowa w grafie nieskierowanym z wielokrotnymi krawędziami zawiera cykl, który to problem można rozwiązać w deterministycznej pamięci logarytmicznej. Rozwiązanie to jednak korzysta z mocno nietrywialnego algorytmu dla problemu USTCON, rozstrzygającego w deterministycznej pamięci logarytmicznej, czy dwa wierzchołki grafu nieskierowanego są połączone ścieżką. Algorytm ten przedstawiony jest w [Rei05]. 12 Pamiętamy, że pozwalamy na wielokrotne krawędzie. 11
12 Nie wiem czy algorytm z [Rei05] działa dla grafów z wielokrotnymi krawędziami, ale to nie problem, bo graf G można przekształcić w pamięci logarytmicznej do grafu G bez krawędzi wielokrotnych i jedno-krawędziowych pętli takiego, że każda składowa G zawiera cykl wtedy i tylko wtedy, gdy każda składowa G zawiera cykl. Wystarczy na każdej krawędzi dostawić jeden dodatkowy wierzchołek, tzn. krawędź (u, v) zamieniana jest na nowy wierzchołek w (u,v) oraz dwie krawędzie (u, w (u,v) ) i (w (u,v), v). Przekształcenie to można wykonać w pamięci logarytmicznej. Wybieramy zawsze numer dla w (u,v) w jakiś jednoznaczny sposób, np. jako konkatenację numerów dla u i v w ustalonej kolejności (np. najpierw mniejszy z nich), powiększoną o ilość wszystkich wierzchołków w G. Oczywiście numery dla u i v nie mogą mieć przy takim kodowaniu różnych długości musimy ustalić maksymalną długość binarnego zapisu numerów wierzchołków w G i uzupełniać potem wszystkie numery zerami tak, aby miały taką samą długość. Inaczej kodowanie nie byłoby jednoznaczne. Po policzeniu na samym początku ilości wszystkich wierzchołków i sufitu z logarytmu dwójkowego tej wielkości, co można zrobić w pamięci logarytmicznej, możemy już w czasie logarytmicznym wyliczać numer dla w (u,v). Przechodzimy zatem wejście od lewej do prawej i dla każdego wierzchołka u przechodzimy wszystkich jego sąsiadów v. Dla każdego v wypisujemy obliczony numer w (u,v) jako sąsiada u w G. Jak już wypiszemy wszystkich sąsiadów u, to znów dla każdego v sąsiada u sprawdzamy czy wierzchołek w (u,v) nie został jeszcze wypisany. Można to zrobić przechodząc wszystkie wierzchołki w wejściu znajdujące się przed u i sprawdzając, czy mają one u jako sąsiada. Jeśli w (u,v) nie został jeszcze wypisany, to wypisujemy go teraz razem z jego listą sąsiedztwa składającą się z wierzchołków u i v. Po zakończeniu tej fazy przechodzimy do przetwarzania następnego wierzchołka po u w wejściu. Mając algorytm dla USTCON można już w prosty sposób sprawdzić, czy wszystkie spójne składowe zawierają cykl. Innymi słowy, chcemy sprawdzić, czy z każdego wierzchołka jest osiągalny jakiś wierzchołek leżący na jakimś cyklu. Sprawdzić, czy wierzchołek v leży na jakimś cyklu można w następujący sposób. Dla każdego sąsiada w wierzchołka v sprawdzamy, czy istnieje cykl przechodzący przez v i w. W tym celu usuwamy tymczasowo krawędź między v i w 13, po czym sprawdzamy algorytmem z [Rei05], czy v i w są połączone ścieżką. Jeśli są, to występuje cykl zawierający krawędź (v, w). Natomiast jeśli v leży na jakimś cyklu, to oczywiście któraś z incydentnych z nim krawędzi musi leżeć na tym cyklu, więc ta procedura wykryje cykl. Główny algorytm przechodzi wejście od lewej do prawej i dla każdego wierzchołka v robi co następuje. Zaczyna przechodzić od początku całe 13 Stałą liczbę krawędzi możemy zawsze usunąć bez straty dla złożoności, zapamiętując np. gdzieś na boku parę (numer(v), numer(w)) i w dalszym ciągu algorytmu sprawdzając zawsze czy rozważana krawędź nie jest tą usuniętą. 12
13 wejście i dla każdego wierzchołka u sprawdza algorytmem z [Rei05], czy istnieje ścieżka między v i u (lub czy u = v). Jeśli tak, to sprawdza, czy u leży na jakimś cyklu. Jeśli tak, to z v osiągalny jest wierzchołek leżący na cyklu i możemy przejść do rozpatrywania kolejnego wierzchołka po v. Jeśli przejrzymy wszystkie wierzchołki u i okaże się, że żaden wierzchołek osiągalny z v nie leży na cyklu, to oznacza, że spójna składowa zawierająca v nie zawiera cyklu. Możemy zatem zakończyć algorytm z odpowiedzią negatywną. Jeśli uda nam się szczęśliwie przetworzyć wszystkie wierzchołki v, to znaczy, że każda spójna składowa zawiera jakiś cykl. Kończymy wtedy z odpowiedzią pozytywną. W powyższym korzystaliśmy milcząco z ogólnie znanego faktu, że złożenie stałej liczby redukcji w pamięci logarytmicznej jest redukcją w pamięci logarytmicznej, oraz że L jest zamknięta na redukcje w pamięci logarytmicznej. Można zatem wywnioskować, że problem spełnialności formuł w koniunkcyjnej postaci normalnej, w których każda zmienna występuje co najwyżej dwa razy, jest w L. Rozwiązanie bonusowe 14 Zakładamy, że w formule φ każda zmienna występuje dokładnie dwa razy raz pozytywnie i raz negatywnie. Niech k będzie liczbą klauzul, a m liczbą zmiennych. Zakładamy, że m k, inaczej φ jest niespełnialna, bo w każdej klauzuli musiał by być przynamniej jeden spełniony literał, a każda zmienna spełnia dokładnie jeden literał. Dla każdej klauzuli α tworzymy wierzchołek v α. Tworzymy także wierzchołek w x dla każdej zmiennej x. Zmienną łączymy dwoma krawędziami z wierzchołkami odpowiadającymi obu klauzulom, w których występuje ta zmienna. Następnie wszystkie wierzchołki odpowiadające zmiennym łączymy w jedną wielką klikę. Jeśli m k jest nieparzyste, to do tej kliki dodajemy jeszcze jeden dodatkowy wierzchołek. W takim grafie istnieje idealne skojarzenie wtedy i tylko wtedy, gdy φ jest spełnialna. Istotnie, jeśli istnieje idealne skojarzenie, to każdy wierzchołek odpowiadający klauzuli jest skojarzony z dokładnie jednym wierzchołkiem odpowiadającym zmiennej. Możemy wtedy wartość tej zmiennej ustawić tak, aby klauzula była spełniona. Jeśli istnieje wartościowanie spełniające, to dla każdej klauzuli wybieramy zmienną, która występuje w którymś z prawdziwych literałów tej klauzuli. Wierzchołek odpowiadający tej zmiennej kojarzymy z wierzchołkiem odpowiadającym klauzuli. Ze względu na postać formuły zmienna ta nie występuje już w innych prawdziwych literałach. Można zatem dla każdej klauzuli dobrać taką zmienną i będzie to funkcja różnowartościowa. Po 14 No wiem, że jedno rozwiązanie to już niby wystarczy, ale tak mi się spodobała ta redukcja, którą wymyśliłem, że aż muszę ją napisać. Można to rozwiązanie zignorować. 13
14 skojarzeniu wszystkich klauzul zostaje nam parzysta liczba wierzchołków połączonych w klikę. W trywialny sposób można tam znaleźć idealne skojarzenie. Problem znajdowania idealnego skojarzenia, jak powszechnie wiadomo, jest w P. Literatura [Pap07] Christos H. Papadimitriou. Złożoność obliczeniowa. Wydanie 2. WNT [Rei05] Omer Reingold. Undirected st-connectivity in log-space. W Proceedings of the 37th ACM Symposium on Theory of Computing, s , Wersja elektroniczna: il/~reingold/publications/sl.ps. 14
1 Automaty niedeterministyczne
Szymon Toruńczyk 1 Automaty niedeterministyczne Automat niedeterministyczny A jest wyznaczony przez następujące składniki: Alfabet skończony A Zbiór stanów Q Zbiór stanów początkowych Q I Zbiór stanów
Bardziej szczegółowoImię, nazwisko, nr indeksu
Imię, nazwisko, nr indeksu (kod) (9 punktów) Wybierz 9 z poniższych pytań i wybierz odpowiedź tak/nie (bez uzasadnienia). Za prawidłowe odpowiedzi dajemy +1 punkt, za złe -1 punkt. Punkty policzymy za
Bardziej szczegółowoWprowadzenie do maszyny Turinga
Wprowadzenie do maszyny Turinga Deterministyczna Maszyna Turinga (DTM) jest pewną klasą abstrakcyjnych modeli obliczeń. W tej instrukcji omówimy konkretną maszynę Turinga, którą będziemy zajmować się podczas
Bardziej szczegółowoSortowanie topologiczne skierowanych grafów acyklicznych
Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)
Bardziej szczegółowoLista 0. Kamil Matuszewski 1 marca 2016
Lista 0 Kamil Matuszewski marca 206 2 3 4 5 6 7 8 0 0 Zadanie 4 Udowodnić poprawność mnożenia po rosyjsku Zastanówmy się co robi nasz algorytm Mamy podane liczby n i m W każdym kroku liczbę n dzielimy
Bardziej szczegółowoMatematyczne Podstawy Informatyki
Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Automat ze stosem Automat ze stosem to szóstka
Bardziej szczegółowoElementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń
Elementy logiki Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń 1 Klasyczny Rachunek Zdań 1.1 Spójniki logiczne Zdaniem w sensie logicznym nazywamy wyrażenie, które jest
Bardziej szczegółowoAndrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ 1 Inferencyjna równoważność formuł Definicja 9.1. Formuła A jest
Bardziej szczegółowoStruktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott
Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca
Bardziej szczegółowoLista 4. Kamil Matuszewski 22 marca 2016
Lista 4 Kamil Matuszewski 22 marca 2016 1 2 3 4 5 6 7 8 9 10 Zadanie 2 Ułóż algorytm który dla danego n-wierzchołkowego drzewa i liczby k pokoloruje jak najwięcej wierzchołków tak, by na każdej ścieżce
Bardziej szczegółowoMetoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.
Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna
Bardziej szczegółowoMaszyna Turinga języki
Maszyna Turinga języki Teoria automatów i języków formalnych Dr inż. Janusz Majewski Katedra Informatyki Maszyna Turinga (1) b b b A B C B D A B C b b Q Zależnie od symbolu obserwowanego przez głowicę
Bardziej szczegółowoLogika stosowana. Ćwiczenia Złożoność obliczeniowa problemu spełnialności. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski
Logika stosowana Ćwiczenia Złożoność obliczeniowa problemu spełnialności Marcin Szczuka Instytut Informatyki, Uniwersytet Warszawski Wykład fakultatywny w semestrze zimowym 2015/2016 Marcin Szczuka (MIMUW)
Bardziej szczegółowoMETODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ
METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ KONWERSATORIUM 6: REZOLUCJA V rok kognitywistyki UAM 1 Kilka uwag terminologicznych Słuchacze zapewne pamiętają z zajęć dotyczących PROLOGu poniższą
Bardziej szczegółowoPrzykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}
Języki Ustalmy pewien skończony zbiór symboli Σ zwany alfabetem. Zbiór Σ zawiera wszystkie skończone ciagi symboli z Σ. Podzbiór L Σ nazywamy językiem a x L nazywamy słowem. Specjalne słowo puste oznaczamy
Bardziej szczegółowoGraf. Definicja marca / 1
Graf 25 marca 2018 Graf Definicja 1 Graf ogólny to para G = (V, E), gdzie V jest zbiorem wierzchołków (węzłów, punktów grafu), E jest rodziną krawędzi, które mogą być wielokrotne, dokładniej jednoelementowych
Bardziej szczegółowoReprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów
Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69
Bardziej szczegółowo3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
Bardziej szczegółowoIII rok kognitywistyki UAM,
METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ WYKŁAD 6A: REZOLUCJA III rok kognitywistyki UAM, 2016 2017 1 Rezolucja w KRZ Dowody rezolucyjne w KRZ są równie proste, jak dowody tablicowe Metoda
Bardziej szczegółowoa) 7 b) 19 c) 21 d) 34
Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie
Bardziej szczegółowoHierarchia Chomsky ego Maszyna Turinga
Hierarchia Chomsky ego Maszyna Turinga Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G = V skończony zbiór
Bardziej szczegółowoDopełnienie to można wyrazić w następujący sposób:
1. (6 punktów) Czy dla każdego regularnego L, język f(l) = {w : każdy prefiks w długości nieparzystej należy do L} też jest regularny? Odpowiedź. Tak, jęsli L jest regularny to też f(l). Niech A będzie
Bardziej szczegółowoMatematyka dyskretna
Matematyka dyskretna Wykład 13: Teoria Grafów Gniewomir Sarbicki Literatura R.J. Wilson Wprowadzenie do teorii grafów Definicja: Grafem (skończonym, nieskierowanym) G nazywamy parę zbiorów (V (G), E(G)),
Bardziej szczegółowoTemat: Algorytm kompresji plików metodą Huffmana
Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik
Bardziej szczegółowoMetoda Tablic Semantycznych
Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,
Bardziej szczegółowoEfektywność Procedur Obliczeniowych. wykład 5
Efektywność Procedur Obliczeniowych wykład 5 Modele procesu obliczeń (8) Jedno-, wielotaśmowa MT oraz maszyna RAM są równoważne w przypadku, jeśli dany problem jest rozwiązywany przez jeden model w czasie
Bardziej szczegółowoArytmetyka liczb binarnych
Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1
Bardziej szczegółowoZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW
ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW NIEDETERMINISTYCZNE MASZYNY TURINGA Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012 NIEDETERMINISTYCZNE MASZYNY TURINGA DEFINICJA: NIEDETERMINISTYCZNA
Bardziej szczegółowoAlgorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
Bardziej szczegółowoObliczenia inspirowane Naturą
Obliczenia inspirowane Naturą Wykład 01 Modele obliczeń Jarosław Miszczak IITiS PAN Gliwice 05/10/2016 1 / 33 1 2 3 4 5 6 2 / 33 Co to znaczy obliczać? Co to znaczy obliczać? Deterministyczna maszyna Turinga
Bardziej szczegółowo0 + 0 = 0, = 1, = 1, = 0.
5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,
Bardziej szczegółowo10110 =
1. (6 punktów) Niedeterministyczny automat skończony nazwiemy jednoznacznym, jeśli dla każdego akceptowanego słowa istnieje dokładnie jeden bieg akceptujący. Napisać algorytm sprawdzający, czy niedeterministyczny
Bardziej szczegółowoWstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność
Bardziej szczegółowoPole wielokąta. Wejście. Wyjście. Przykład
Pole wielokąta Liczba punktów: 60 Limit czasu: 1-3s Limit pamięci: 26MB Oblicz pole wielokąta wypukłego. Wielokąt wypukły jest to wielokąt, który dla dowolnych jego dwóch punktów zawiera również odcinek
Bardziej szczegółowoPrzykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.
Grafy Graf Graf (ang. graph) to zbiór wierzchołków (ang. vertices), które mogą być połączone krawędziami (ang. edges) w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Graf
Bardziej szczegółowoZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW
ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW RELACJE MIEDZY KLASAMI ZŁOŻONOŚCI Bartosz Zieliński Katedra Fizyki Teoretycznej i Informatyki Zima 2011-2012 KLASY ZŁOŻONOŚCI KLASE ZŁOŻONOŚCI OPISUJE SIE PODAJAC: Model
Bardziej szczegółowoTeoria obliczeń i złożoność obliczeniowa
Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy
Bardziej szczegółowo1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie
Opracował: dr hab. inż. Jan Magott KATEDRA INFORMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 207 Temat: Automaty Moore'a i Mealy 1. Cel ćwiczenia Celem ćwiczenia jest
Bardziej szczegółowo1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.
1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie
Bardziej szczegółowoMatematyka dyskretna - 7.Drzewa
Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja
Bardziej szczegółowoAlgorytmy Równoległe i Rozproszone Część V - Model PRAM II
Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06
Bardziej szczegółowoZLOŻONOŚĆ OBLICZENIOWA - WYK. 2
ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2 1. Twierdzenie Sipsera: Dla dowolnej maszyny M działającej w pamięci S(n) istnieje maszyna M taka, że: L(M) = L(M ), M działa w pamięci S(n), M ma własność stopu. Dowód:
Bardziej szczegółowoZad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA
Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zad. 1 (12p.)Niech n 3k > 0. Zbadać jaka jest najmniejsza możliwa liczba krawędzi w grafie, który ma dokładnie n wierzchołków oraz dokładnie k składowych, z których
Bardziej szczegółowoJęzyki formalne i automaty Ćwiczenia 9
Języki formalne i automaty Ćwiczenia 9 Autor: Marcin Orchel Spis treści Spis treści... 1 Wstęp teoretyczny... 2 Maszyna Mealy'ego... 2 Maszyna Moore'a... 2 Automat ze stosem... 3 Konwersja gramatyki bezkontekstowej
Bardziej szczegółowo2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,
2 Arytmetyka Niech b = d r d r 1 d 1 d 0 będzie zapisem liczby w systemie dwójkowym Zamiana zapisu liczby b na system dziesiętny odbywa się poprzez wykonanie dodawania d r 2 r + d r 1 2 r 1 d 1 2 1 + d
Bardziej szczegółowoZakładamy, że maszyna ma jeden stan akceptujacy.
Złożoność pamięciowa Rozważamy następujac a maszynę Turinga: 1 0 0 1 1 0 1 1 1 1 Taśma wejściowa (read only) 1 0 1 1 0 0 0 1 0 0 1 Taśma robocza (read/write) 0 1 1 0 0 1 0 0 1 Taśma wyjściowa (write only)
Bardziej szczegółowo1 Układy równań liniowych
II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie
Bardziej szczegółowoPodstawowe własności grafów. Wykład 3. Własności grafów
Wykład 3. Własności grafów 1 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2). 2 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2).
Bardziej szczegółowoGrafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:
Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem
Bardziej szczegółowoZłożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Bardziej szczegółowoMATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY
ERIAŁY DO WYKŁADU GRAFY Graf nieskierowany Grafem nieskierowanym nazywamy parę G = (V, E), gdzie V jest pewnym zbiorem skończonym (zwanym zbiorem wierzchołków grafu G), natomiast E jest zbiorem nieuporządkowanych
Bardziej szczegółowoALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności
Bardziej szczegółowoAlgorytmiczna teoria grafów
Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)
Bardziej szczegółowoSchematy Piramid Logicznych
Schematy Piramid Logicznych geometryczna interpretacja niektórych formuł Paweł Jasionowski Politechnika Śląska w Gliwicach Wydział Matematyczno-Fizyczny Streszczenie Referat zajmuje się następującym zagadnieniem:
Bardziej szczegółowoALGORYTMY. 1. Podstawowe definicje Schemat blokowy
ALGORYTMY 1. Podstawowe definicje Algorytm (definicja nieformalna) to sposób postępowania (przepis) umożliwiający rozwiązanie określonego zadania (klasy zadań), podany w postaci skończonego zestawu czynności
Bardziej szczegółowoWYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
DRZEWA i LASY Drzewem nazywamy graf spójny nie zawierający cykli elementarnych. Lasem nazywamy graf nie zawierający cykli elementarnych. Przykłady drzew i lasów takie krawędzie są wykluczone drzewo las
Bardziej szczegółowoStruktura danych. Sposób uporządkowania informacji w komputerze.
Struktura danych Sposób uporządkowania informacji w komputerze. Algorytm Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Al-Khwarizmi perski matematyk
Bardziej szczegółowoLogika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017
Logika Stosowana Wykład 1 - Logika zdaniowa Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 30 Plan wykładu 1 Język
Bardziej szczegółowoProblemy NP-zupełne. Spis treści. Osoba prowadząca wykład i ćwiczenia: dr inż. Marek Sawerwain. Ostatnia zmiana: 15 styczeń 2013. Notatki.
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.
Bardziej szczegółowoTEORETYCZNE PODSTAWY INFORMATYKI
1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa
Bardziej szczegółowo(j, k) jeśli k j w przeciwnym przypadku.
Zadanie 1. (6 punktów) Rozważmy język słów nad alfabetem {1, 2, 3}, w których podciąg z pozycji parzystych i podciąg z pozycji nieparzystych są oba niemalejące. Na przykład 121333 należy do języka, a 2111
Bardziej szczegółowoWykład z równań różnicowych
Wykład z równań różnicowych 1 Wiadomości wstępne Umówmy się, że na czas tego wykładu zrezygnujemy z oznaczania n-tego wyrazu ciągu symbolem typu x n, y n itp. Zamiast tego pisać będziemy x (n), y (n) itp.
Bardziej szczegółowoJAO - Wprowadzenie do Gramatyk bezkontekstowych
JAO - Wprowadzenie do Gramatyk bezkontekstowych Definicja gramatyki bezkontekstowej Podstawowymi narzędziami abstrakcyjnymi do opisu języków formalnych są gramatyki i automaty. Gramatyka bezkontekstowa
Bardziej szczegółowoPrzykładowe zadania z teorii liczb
Przykładowe zadania z teorii liczb I. Podzielność liczb całkowitych. Liczba a = 346 przy dzieleniu przez pewną liczbę dodatnią całkowitą b daje iloraz k = 85 i resztę r. Znaleźć dzielnik b oraz resztę
Bardziej szczegółowoAlgebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i
Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i A (symbol F i oznacza ilość argumentów funkcji F i ). W rozważanych przez nas algebrach
Bardziej szczegółowoZadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)
Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też L = {vw : vuw L dla pewnego u A takiego, że u = v + w } Rozwiązanie. Niech A =
Bardziej szczegółowoMatematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń
Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń Projekt Matematyka dla ciekawych świata spisał: Michał Korch 4 kwietnia 2019 1 Dodajmy kontekst! Rozważaliśmy
Bardziej szczegółowoPodstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
Bardziej szczegółowoW. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1
W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1 W tym tekście zobaczymy rozwiązanie zadania 41 z Informatora o egzaminie maturalnym z matematyki od roku szkolnego 014/015 oraz rozwiązania
Bardziej szczegółowoParadygmaty dowodzenia
Paradygmaty dowodzenia Sprawdzenie, czy dana formuła rachunku zdań jest tautologią polega zwykle na obliczeniu jej wartości dla 2 n różnych wartościowań, gdzie n jest liczbą zmiennych zdaniowych tej formuły.
Bardziej szczegółowoLuty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy
Bardziej szczegółowoZłożoność informacyjna Kołmogorowa. Paweł Parys
Złożoność informacyjna Kołmogorowa Paweł Parys Serock 2012 niektóre liczby łatwiej zapamiętać niż inne... (to zależy nie tylko od wielkości liczby) 100...0 100 100... 100 100 100 25839496603316858921 31415926535897932384
Bardziej szczegółowoMatematyka dyskretna. Andrzej Łachwa, UJ, /14
Matematyka dyskretna Andrzej Łachwa, UJ, 2016 andrzej.lachwa@uj.edu.pl 13/14 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami
Bardziej szczegółowoPętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2
Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń
Bardziej szczegółowoZadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.
Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5. Schemat Hornera. Wyjaśnienie: Zadanie 1. Pozycyjne reprezentacje
Bardziej szczegółowoTopologia zbioru Cantora a obwody logiczne
Adam Radziwończyk-Syta Michał Skrzypczak Uniwersytet Warszawski 1 lipca 2009 http://students.mimuw.edu.pl/~mskrzypczak/dokumenty/ obwody.pdf Zbiór Cantora Topologia Definicja Przez zbiór Cantora K oznaczamy
Bardziej szczegółowoTypy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2
Typy algorytmów losowych ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Typy algorytmów losowych Las Vegas - zawsze daje prawidłowa odpowiedź (różny czas działania). Przykład: RandQuicksort ALP520
Bardziej szczegółowoteoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015
teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015 1 wczoraj Wprowadzenie matematyczne. Entropia i informacja. Kodowanie. Kod ASCII. Stopa kodu. Kody bezprefiksowe.
Bardziej szczegółowoKodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości
Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład 13 1 Kody liniowe - kodowanie w oparciu o macierz parzystości Przykład Różne macierze parzystości dla kodu powtórzeniowego. Co wiemy z algebry
Bardziej szczegółowoAlgorytmy sztucznej inteligencji
www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego
Bardziej szczegółowoWydział Matematyki I Informatyki ul. Słoneczna Olsztyn
Klucz Napisać program sprawdzający czy dany klucz pasuje do danego zamka. Dziurka w zamku reprezentowana jest w postaci tablicy zero-jedynkowej i jest spójna. Klucz zakodowany jest jako ciąg par liczb
Bardziej szczegółowoAlgorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.
Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące. Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/
Bardziej szczegółowoGrafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz
Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny
Bardziej szczegółowoPorządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Bardziej szczegółowoLogika Matematyczna (10)
Logika Matematyczna (10) Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Rezolucja w KRZ Jerzy Pogonowski (MEG) Logika Matematyczna (10) Rezolucja w KRZ 1 / 39 Plan
Bardziej szczegółowoAlgorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność
Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Oficjalna strona wykładu http://www.kaims.pl/
Bardziej szczegółowoRozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)
Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia) Kamil Matuszewski 20 lutego 2017 22 lutego 2017 Zadania, które
Bardziej szczegółowoMaszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu
Problem Hilberta: 9 Czy istnieje ogólna mechaniczna procedura, która w zasadzie pozwoliłaby nam po kolei rozwiązać wszystkie matematyczne problemy (należące do odpowiednio zdefiniowanej klasy)? 2 Przykłady
Bardziej szczegółowoDrzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II
Wykład 6. Drzewa cz. II 1 / 65 drzewa spinające Drzewa spinające Zliczanie drzew spinających Drzewo T nazywamy drzewem rozpinającym (spinającym) (lub dendrytem) spójnego grafu G, jeżeli jest podgrafem
Bardziej szczegółowoWYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
DROGI i CYKLE w grafach Dla grafu (nieskierowanego) G = ( V, E ) drogą z wierzchołka v 0 V do v t V nazywamy ciąg (naprzemienny) wierzchołków i krawędzi grafu: ( v 0, e, v, e,..., v t, e t, v t ), spełniający
Bardziej szczegółowoTrudność aproksymacji problemów NP-trudnych
Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Anna Niewiarowska Nr albumu: 201074 Trudność aproksymacji problemów NP-trudnych Praca magisterska na kierunku INFORMATYKA Praca wykonana
Bardziej szczegółowoIteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.
Iteracje Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony. Iteracja inaczej zwana jest pętlą i oznacza wielokrotne wykonywanie instrukcji. Iteracje
Bardziej szczegółowoLista 6 Problemy NP-zupełne
1 Wprowadzenie Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Teoretyczne Podstawy Informatyki Lista 6 Problemy NP-zupełne Problem abstrakcyjny Q jest to relacja dwuargumentowa
Bardziej szczegółowoPodstawy Informatyki Maszyna Turinga
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga 2 3 4 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga,
Bardziej szczegółowoDef. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne
Załóżmy, że mamy źródło S, które generuje symbole ze zbioru S={x, x 2,..., x N } z prawdopodobieństwem P={p, p 2,..., p N }, symbolom tym odpowiadają kody P={c, c 2,..., c N }. fektywność danego sposobu
Bardziej szczegółowoZapis liczb binarnych ze znakiem
Zapis liczb binarnych ze znakiem W tej prezentacji: Zapis Znak-Moduł (ZM) Zapis uzupełnień do 1 (U1) Zapis uzupełnień do 2 (U2) Zapis Znak-Moduł (ZM) Koncepcyjnie zapis znak - moduł (w skrócie ZM - ang.
Bardziej szczegółowoSystem BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10
System BCD z κ Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna Semestr letni 2009/10 Rozważamy system BCD ze stałą typową κ i aksjomatami ω κ κ i κ ω κ. W pierwszej części tej notatki
Bardziej szczegółowoZasady analizy algorytmów
Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania
Bardziej szczegółowoTeoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Teoria grafów podstawy Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Grafy zorientowane i niezorientowane Przykład 1 Dwa pociągi i jeden most problem wzajemnego wykluczania się Dwa
Bardziej szczegółowoUkłady równań i nierówności liniowych
Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +
Bardziej szczegółowo