Teoria Złożoności Zadania

Wielkość: px
Rozpocząć pokaz od strony:

Download "Teoria Złożoności Zadania"

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

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ółowo

Imię, nazwisko, nr indeksu

Imię, 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ółowo

Wprowadzenie do maszyny Turinga

Wprowadzenie 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ółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie 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ółowo

Lista 0. Kamil Matuszewski 1 marca 2016

Lista 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ółowo

Matematyczne Podstawy Informatyki

Matematyczne 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ółowo

Elementy 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ń 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ółowo

Andrzej 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 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ółowo

Struktury 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 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ółowo

Lista 4. Kamil Matuszewski 22 marca 2016

Lista 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ółowo

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Metoda 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ółowo

Maszyna Turinga języki

Maszyna 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ółowo

Logika 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 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ółowo

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

METODY 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ółowo

Przykł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}

Przykł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ółowo

Graf. Definicja marca / 1

Graf. 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ółowo

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje 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ółowo

3. Macierze i Układy Równań Liniowych

3. 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ółowo

III rok kognitywistyki UAM,

III 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ółowo

a) 7 b) 19 c) 21 d) 34

a) 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ółowo

Hierarchia Chomsky ego Maszyna Turinga

Hierarchia 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ółowo

Dopełnienie to można wyrazić w następujący sposób:

Dopeł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ółowo

Matematyka dyskretna

Matematyka 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ółowo

Temat: Algorytm kompresji plików metodą Huffmana

Temat: 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ółowo

Metoda Tablic Semantycznych

Metoda 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ółowo

Efektywność Procedur Obliczeniowych. wykład 5

Efektywność 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ółowo

Arytmetyka liczb binarnych

Arytmetyka 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ółowo

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ZŁ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ółowo

Algorytmy w teorii liczb

Algorytmy 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ółowo

Obliczenia inspirowane Naturą

Obliczenia 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ółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 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ółowo

10110 =

10110 = 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ółowo

Wstę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 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ółowo

Pole wielokąta. Wejście. Wyjście. Przykład

Pole 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ółowo

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Przykł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ółowo

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

ZŁ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ółowo

Teoria obliczeń i złożoność obliczeniowa

Teoria 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ółowo

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

1. 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ółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. 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ółowo

Matematyka dyskretna - 7.Drzewa

Matematyka 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ółowo

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy 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ółowo

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

ZLOŻ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ółowo

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Zad. 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ółowo

Języki formalne i automaty Ćwiczenia 9

Ję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ółowo

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

2 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ółowo

Zakładamy, że maszyna ma jeden stan akceptujacy.

Zakł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ółowo

1 Układy równań liniowych

1 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ółowo

Podstawowe własności grafów. Wykład 3. Własności grafów

Podstawowe 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ółowo

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Grafem 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ółowo

Złożoność obliczeniowa zadania, zestaw 2

Zł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ółowo

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

MATEMATYKA 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ółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 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ółowo

Algorytmiczna teoria grafów

Algorytmiczna 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ółowo

Schematy Piramid Logicznych

Schematy 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ółowo

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 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ółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻ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ółowo

Struktura danych. Sposób uporządkowania informacji w komputerze.

Struktura 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ółowo

Logika 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 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ółowo

Problemy NP-zupełne. Spis treści. Osoba prowadząca wykład i ćwiczenia: dr inż. Marek Sawerwain. Ostatnia zmiana: 15 styczeń 2013. Notatki.

Problemy 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ółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE 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.

(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ółowo

Wykład z równań różnicowych

Wykł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ółowo

JAO - Wprowadzenie do Gramatyk bezkontekstowych

JAO - 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ółowo

Przykładowe zadania z teorii liczb

Przykł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ółowo

Algebrą 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 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ółowo

Zadanie 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ż. 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ółowo

Matematyczna 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ń 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ółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawowe 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ółowo

W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1

W. 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ółowo

Paradygmaty dowodzenia

Paradygmaty 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ółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 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ółowo

Złożoność informacyjna Kołmogorowa. Paweł Parys

Zł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ółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka 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ółowo

Pę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ę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ółowo

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.

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. 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ółowo

Topologia zbioru Cantora a obwody logiczne

Topologia 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ółowo

Typy 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 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ółowo

teoria 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 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ółowo

Kodowanie 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 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ółowo

Algorytmy sztucznej inteligencji

Algorytmy 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ółowo

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

Wydział 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ółowo

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Algorytmy 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ółowo

Grafy (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 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ółowo

Porządek symetryczny: right(x)

Porzą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ółowo

Logika Matematyczna (10)

Logika 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ółowo

Algorytmy 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ść 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ółowo

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)

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) 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ółowo

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Maszyna 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ółowo

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Drzewa 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ółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻ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ółowo

Trudność aproksymacji problemów NP-trudnych

Trudność 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ółowo

Iteracje. 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. 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ółowo

Lista 6 Problemy NP-zupełne

Lista 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ółowo

Podstawy Informatyki Maszyna Turinga

Podstawy 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ółowo

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Def. 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ółowo

Zapis liczb binarnych ze znakiem

Zapis 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ółowo

System 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 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ółowo

Zasady analizy algorytmów

Zasady 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ółowo

Teoria 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 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ółowo

Układy równań i nierówności liniowych

Ukł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