Materiały do wykładu z Podstaw Teorii Obliczalności dla II. roku Zaocznego Studium Informatyki

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

Download "Materiały do wykładu z Podstaw Teorii Obliczalności dla II. roku Zaocznego Studium Informatyki"

Transkrypt

1 Materiały do wykładu z Podstaw Teorii Obliczalności dla II. roku Zaocznego Studium Informatyki Barbara Klunder 11 lutego 2005 roku W wykładzie tym będziemy zajmować się trzema podstawowymi dziedzinami teorii obliczeń: obliczalnością, złożonością i automatami. Są one powiązane z pytaniem Jakie są podstawowe możliwości i ograniczenia komputerów? Pytanie to pojawiło się już w latach 30-tych, gdy logicy matematyczni zaczęli precyzować pojęcie obliczenia. Teoria obliczalności pyta Czy każdy problem jest rozstrzygalny przez pewną procedurę obliczeniową? Jeśli nie, to które problemy są rozstrzygalne przez takie procedury? Teoria złożoności próbuje odpowiedzieć na pytanie Co czyni pewne problemy obliczeniowo trudnymi, a inne łatwymi? Teoria automatów (i gramatyk) definiuje i bada własności dwóch modeli obliczeń: automatów i gramatyk. W wykładzie najpierw zajmiemy się teorią obliczalności; wprowadzimy dwie formalizacje pojęcia obliczenia-algorytmu i wykażemy, że istnieją ważne problemy, które nie są rozstrzygalne w (każdej z tych) formalizacji. Następnie omówimy teoretyczne aspekty teorii złożoności. W drugiej części wykładu skupimy się na teorii automatów i gramatyk, która ma duże znaczenie przy definiowaniu języków programowania i konstruowaniu kompilatorów dla nich. 1

2 1 Teza Churcha-Turinga W wykładze zastanawiać będziemy się nad dwoma kluczowymi pytaniami: Czym jest efektywna procedura? Hardwarem czy softwarem? Urządzeniem, które realizuje określone obliczenia (pierwsze komputery), czy ciągiem instrukcji (programem) w naszym ulubionym języku programowania? Czym jest problem rozwiązywalny przez efektywną procedurę? Czy istnieją problemy nierozwiązywalne? Intuicyjnie czujemy, że będziemy wykonywać obliczenia. Zasdaniczo prowadzić będziemy obliczenia na (skończonych ciągach liczb) liczbach naturalnych. Przypuśćmy, że chcemy prowadzić obliczenia na zbiorze wejść i wyjść X różnym od N. Możemy to zrobić przyporządkowując każdemu elementowi z X liczbę naturalną zwaną jej kodem tak, aby różne elementy X miały różne kody. Mając wejścia z X należy zastąpić je ich kodami i wykonać obliczenia, które zwracają numeryczne wyjście. Jeśli to wyjście jest kodem elementu z X, to ten element traktujemy jako końcowy wynik obliczeń. Chcemy, by pierwszy i ostatni krok tej procedury był realizowany w sposób algorytmiczny. Wtedy mówimy, że kodowanie jest efektywne. U nas X będzie: zbiorem wszystkich skończonych ciągów liczb naturalnych lub słów nad ustalonym (skończonym) alfabetem, zbiorem instrukcji lub programów pewnego języka itp. Kodowania i numeracje Przypomnijmy dwie definicje zbioru przeliczalnego. Definicja 1.1 Kodowaniem zbioru X nazywamy dowolną funkcję rónowartościową f : X N. Zbiór jest przeliczalny, jeśli jest równoliczny z pewnym podzbiorem N. Definicja 1.2 Numeracją (lub wyliczeniem) zbioru X nazywamy dowolną funkcję g : N X, która jest na. Zbiór jest przeliczalny, jeśli jego elementy można ustawić w ciąg. Przykłady 2

3 1. Funkcja π : N N N określona wzorem π(n.m) = 2 n (2m + 1) 1 jest bijektywnym kodowaniem par liczb naturalnych. Funkcja odwrotna zadana jest przez funkcje π 1, π 2 : N N zdefiniowane następująco: π 1 (x) = n wtw, gdy 2 pojawia się w rozkładzie x+1 na czynniki pierwsze z wykładnikiem n; π 2 (x) = 1 2 ( x+1 2 π 1 (x) 1) 2. Wtedy funkcja β : N N N N, β(n, m, p) = π(π(n, m), p) jest bijektywnym kodowaniem trójek liczb naturalnych. Jak wygląda funkcja odwrotna? 3. Rozważmy funkcję τ : k>0 N k N taką, że τ(a 0, a 1,..., a k 1 ) = 2 a a 0+a a 0+a a k 1 +k 1 1. Jest to bijektywne kodowanie wszystkich skończonych ciągów liczb naturalnych. Pokażemy później, że funkcje π i β są (RAM-)obliczalne, a numeracja τ 1 jest efektywna. Będą to kluczowe rezultaty techniczne. Pozwolą one na porównanie omówionych poniżej modeli obliczeń. 1.1 Maszyny z nieograniczoną pamięcią RAM (Sheperdson & Sturgis) Budowa maszyny realizującej programy w języku zbliżonym do popularnych imperatywnych języków programowania, który będziemy rozważać, przypomina budowę rzeczywistych komputerów: maszyna składa się z licznika rozkazów oraz pamięci, która jest nieskończoną tablicą. Komórki pamięci są numerowane kolejnymi liczbami naturalnymi i mogą zawierać, tak jak licznik rozkazów, dowolną liczbę naturalną. W czasie obliczeń prawie wszystkie komórki pamięci zawierają liczbę 0. Oznaczenie z[x] oznacza zawartość komórki o numerze x. Lista instrukcji RAM 3

4 Kod instrukcji Kod adresów Oznaczenie Semantyka Uwagi 0 n Z(n) z[n]:=0 1 n S(n) z[n]:=z[n]+1 2 π(m, n) T(m,n) z[n]:=z[m] 3 β(m, n, q) I(m,n,q) if z[m]=z[n] then goto q Licznik rozkazów zwiększ o 1 Licznik rozkazów zwiększ o 1 Licznik rozkazów zwiększ o 1 Licznik rozkazów zwiększ o 1, gdy z[m] z[n], w przeciwnym przypadku umieść w nim q Instrukcje typu 0, 1, 2 nazywamy arytmetycznymi, a typu 3 warunkowymi. Definicja 1.3 Programem (na RAM) nazywamy dowolny niepusty ciąg RAM-instrukcji. Semantyka instrukcji typu 3 wymusza numerowanie instrukcji w programie. Kultura matematyczna wymaga od nas sformalizowania pojęć stanu, instrukcji, semantyki programu itp. Na razie wykorzystamy naszą intuicję. Przykładowy program 0 I(1,2,5) if z[1]=z[2] then goto 5 1 S(2) z[2]:=z[2]+1 2 S(3) z[3]:=z[2]+1 3 I(1,2,5) if z[1]=z[2] then goto 5 4 I(1,1,1) if z[1]=z[1] then goto 1 5 T(3,0) z[0]:=z[3] Co liczy ten program? Oczywiście interesują nas komórki pamięci, które są aktywne w czasie obliczeń. Program zatrzymuje się, gdy z[1]=z[2]. Jeśli więc na początku z[2] z[1], to wykonuje się zwiększanie z[2], aż równość stanie się prawdziwa. Zwiększa się z[3] o ilość dodawań, czyli z[1]-z[2]. Jeśli więc z[i] oznacza początkową zawartość komórki, to po zakończeniu obliczeń w komórce o numerze 0 znajduje się liczba z[3]+z[1]-z[2]. Zauważmy, że program nie zatrzyma się, gdy na początku z[2]>z[1]! Z charakteru RAM wynika, że będziemy zajmować się programami, które na wejściu biorą ciągi (ustalonej długości) liczb naturalnych i zwracają jedną 4

5 liczbę naturalną. Umowa : Program zwraca zawartość komórki o numerze 0. Oczywiście nie zawsze program musi się zatrzymać na każdych danych. Naturalne jest więc pytanie jakie funkcje są obliczane przez RAM-programy. Będzie to pierwszy problem, którym się zajmiemy. Okaże się, że funkcje arytmetyczne są RAM-obliczalne. Definicja 1.4 Niech k > 0. Program P oblicza funkcję częściową f : N k N, jeśli po umieszczeniu ciągu danych x w komórkach z[1],..., z[k], wyzerowaniu pozostałych i uruchomieniu P, P zatrzyma się zwracając wartość f na danych x, dokadnie gdy x Dom f. Każdy program P oblicza pewną funkcję k-argumentową, dla k > 0, którą oznaczymy symbolem φ (k) P. Symbolem C k oznaczymy zbiór wszystkich funkcji RAM-obliczalnych i k- argumentowych, a C = k>0 C k zbiór wszystkich funkcji RAM-obliczalnych. Przyklad 1 Na gruncie aksjomatyki Peano liczb naturalnych dodawanie definiuje się rekurencyjnie: x+0=x x+(y+1)=(x+y)+1 Nieformalnie: należy do x dodać 1 y-razy. Oto program RAM obliczający z[1]+z[2], przy założeniu, że z[3]=0. 0 I(2,3,5) if z[2]=z[3] then goto 5 1 S(1) z[1]:=z[1]+1 2 S(3) z[3]:=z[3]+1 3 I(1,1,0) if z[1]=z[1] then goto 0 4 T(1,0) z[0]:=z[1] Zauważmy, że podany program (bez ostatniej instrukcji!) jest zwykłą pętlą for. Nie jest to przypadek. { x 1 gdy x 1 Przykład 2 Niech x 1 =. Funkcja ta jest obliczana 0 gdy x = 0 przez następujący program. 5

6 0 I(1,4,9) if z[1]=z[4] then goto 9 1 S(3) z[3]:=z[3]+1 2 I(1,3,6) if z[1]=z[3] then goto 6 3 S(2) z[2]:=z[2]+1 4 S(3) z[3]:=z[3]+1 5 I(1,1,2) if z[1]=z[1] then goto 2 6 T(2,0) z[0]:=z[2] Uzasadnienie: W czasie obliczeń (od instrukcji 2) różnica z[3]-z[2] stale równa jest 1, a obliczenia zatrzymują się, gdy z[3] osiągnie początkową wartość z[1]. Pytanie: Zgodnie z definicją, możemy zastanawiać się, jaką dwuargumentową funkcję liczy ten program? Odpowiedź: f(x, y) = y + (x 1). Zadanie 0 Jaką funkcję trójargumentową oblicza powyższy program? Zadanie 1 Pokazać, że następujące funkcje są RAM-obliczalne. Symbol oznaczać będzie, że wartość funkcji pozostaje nieokreślona. { x gdy x jest parzysta 1. f(x) = 2 gdy x jest nieparzysta 2. f(x) = 3. f(x) = 5 4. f(x, y) = 5. f(x, y) = { 1 gdy x > 0 0 gdy x = 0 { 1 gdy x y 0 gdy x = y { 1 gdy x y 0 gdy x > y { x gdy x dzieli się przez 3 6. f(x) = 3 w przeciwnym przypadku Umowa: GOTO(n)=I(x,x,n) Rozwiązania wybranych zadań Program obliczający funkcję z zadania pierwszego: 6

7 0 I(1,2,5) if z[1]=z[2] then goto 5 1 S(0) z[0]:=z[0]+1 2 S(2) z[2]:=z[2]+1 3 S(2) z[2]:=z[2]+1 4 GOTO(0) Pomysł jest łatwy do uchwycenia: w jednym cyklu pętli oblicza się kolejną wielokrotność 2 w rejestrze z[2], a w z[0] zapisane jest którą krotność obliczono. Oczywiście program pętli się dla liczb nieparzystych. Zmodyfikuj go tak, aby dla każdej liczby naturalnej x obliczał część całkowitą z dzielenia x przez 2. W zadaniu piątym należy napisać program, który wyznaczy mniejszą z liczb x, y i ustali, czy jest to x, czy y. 0 I(3, 1, 4) 1 I(3, 2, 5) 2 S(3) 3 goto 0 4 S(0) Omówione przykłady pozwalają poczynić pewne obserwacje: 1. Jeśli zmodyfikujemy pierwszy program poprzedając go testowaniem, czy z[1] > z[2] (ostatni { przykład), to otrzymamy program P obliczający x y gdy x y funkcję x y = 0 gdy x < y. 2. Wtedy do obliczania funkcji x 1 można wykorzystać program P uruchamiając go na parze danych (x, 1) czyli podstawiając z[2] := Z drugiej strony wiedząc, że funkcja x 1 jest RAM-obliczalna (przykład 2.) możemy tak jak w przykładzie 1. posłużyć się matematyczną rekurencyjną definicją: x 0 = x x (y + 1) = (x y) 1 którą łatwo wykorzystamy do napisania innego programu obliczającego tę funkcję. Obserwacje te zbierzemy w następnych twierdzeniach. 7

8 Twierdzenie 1.5 (O podstawianiu) Niech f C k a g 1,..., g k C n. Wtedy funkcja h(x) f(g 1 (x),..., g k (x)) C n. Idea dowodu Niech g 1,..., g k będą obliczane przez programy P 1,..., P k odpowiednio. Rozważmy program F obliczający f. Możemy wyznaczyć liczbę ρ(f ) będącą numerem takiej komórki pamięci, że F nie używa jej ani komórek o numerach wyższych. Wtedy programy P i możemy wykorzystać do stworzenia procedur wywoływanych na boku (działających w obszarze komórek o numerach większych równych od max{ρ(f ), k +1} i zwracających wynik do komórek z[i], i = 1... k. Następnie wystarczy uruchomić F na tych danych. Podstawianie pozwala wprowadzać nieistotne argumenty i je utożsamiać: jeśli f C 2, to g(x) = f(x, x), h(x, y, z) = f(x, z) są obliczalne. Rekursja to sposób zadania kolejnej wartości funkcji poprzez wartości wcześniej obliczone. Twierdzenie 1.6 (O operatorze rekursji) Niech f(x) C n i g(x, y, z) C n+2. Wtedy funkcja h(x, y) : N n+1 N określona układem (Rek) jest obliczalna (h C n+1 ). Przykład h(x, 0) f(x) h(x, y + 1) g(x, y, h(x, y)) 1. W definicji dodawania użyto operatora rekursji do funkcji: f(x) = 0, g(x, y, z) = z + 1. Wykorzystując procedury obliczające funkcje f, g łatwo napisać program obliczający h, będzie to prosta pętla. 2. W definicji odejmowania użyto operatora rekursji do funkcji: f(x) = x, g(x, y, z) = z Jaką funkcję definiuje operator rekursji zastosowany do funkcji f(x) = 1, g(x, y, z) = z (y + 1)? Oczywiście h(x, y) = y!. Ponieważ x jest tu zmienną nieistotną taką definicję przez rekursję będziemy zapisywać h(0) 1 h(y + 1) g(y, h(y)) 8

9 i traktować h jak funkcję jednoargumentową. Ważne przykłady funkcji RAM-obliczalnych 1. Dodawanie x + y; 2. Mnożenie x y można zdefiniować przez rekursję wykorzystując dodawanie: x 0 = 0; x (y + 1) = x y + x. Uwaga: do schematu rekursji dobieramy za f funkcję stałą zero, za g(x, y, z) = z + x. 3. Potęgowanie podobnie definiuje się przez rekursję wykorzystujac mnożenie: x 0 = 1; x y+1 = x y x. 4. Odejmowanie x y Pozostałe przykłady są zebrane w poniższej tabeli. Funkcja Schemat { 0 gdy x = 0 sg(0) = 0 sg(x) = 1 gdy x > 0 sg(x + 1) = 1 { 1 gdy x = 0 sg(x) = sg(x) = 1 sg(x) 0 gdy x > 0 x y x y = (x y) + (y x) x! ćwiczenie min(x, y) min(x, y) = x (x y) max(x, y) max(x, y) = x + (y x) rm(x, 0) = 0 rm(x, 0) = 0 { rm(x, y + 1) = 0 rm(x, y) + 1 = x rm(x, y + 1) = (rm(x, y) + 1)sg( x (rm(x, y) + 1) ) rm(x, y) + 1 rm(x, y) + 1 x g(x, y, z) = (z + 1)sg( x z + 1) ) qt(x, 0) = 0 { qt(x, y) + 1 rm(x, y) + 1 = x g(x, y, z) = z + sg( x rm(x, y) + 1) ) qt(x, y + 1) = qt(x, y) rm(x, y) + 1 x { 1 x y div(x, y) = div(x, y) = sg(rm(x, y)) 0 x y Dla f(x, y) : N n+1 N połóżmy: g(x) µ y (f(x, y) = 0) najmniejsze y takie, że f(x, z) jest określona dla wszystkich z y i f(x, y) = 0; gdy takie y nie istnieje wartość funkcji pozostaje nieokreślona. Operator µ nazywamy operatorem minimalizacji; zwany jest też operatorem wyszukiwania. Twierdzenie 1.7 (O operatorze minimalizacji) Jeśli f C n+1, to g C n. 9

10 Dowód Załóżmy, że f jest obliczana przez program F. Wtedy podany program G oblicza funkcję g, o ile procedura F [...] pobiera dane ze wskazanych komórek i używa tylko komórek o numerach większych od n Maszyny Turinga p F[1,..., n, n + 1 0] I(0, n + 2, q) S(n + 1) I(1, 1, p) q T(n + 1, 0) Wprowadziliśmy jedną formalizację pojęcia algorytmu: algorytm to program na maszynę RAM. W podsumowaniu zanotujmy, że ostatnie twierdzenia mówią, że zbiór funkcji RAM-obliczalnych ma matematyczną strukturę: zawiera proste funkcje arytmetyczne i jest domknięty na postawianie rekursję i minimalizację. Moglibyśmy je wykorzystać do wykazania, że C jest najmniejszym zbiorem funkcji o tych własnościach. Taką definicję funkcji obliczalnych zaproponował Kleene i nazwał te funkcje częściowo rekurencyjnymi. Było to w latach 50-tych. Inną formalizację (rachunek lambda) zaproponował Church. Mniej więcej w tym samym czasie (praca Churcha ukazała się w roku a Turinga w 1937.) Alan Turing wprowadził pojęcie maszyny i funcji obliczanej przez tę maszynę. Wobec pracy Churcha stanął on przed problemem równoważności tych pojęć. Udowodnił on ich równoważność konstruując maszynę uniwersalną. Maszynami/programami uniwersalnymi zajmiemy się w rozdziale następnym. Mając pewną wiedze techniczną na temat budowy komputera trudno przyjąć model rozważany wcześniej. Należy też uświadomoć sobie, że prosty pomysł łatwiej zrealizować technicznie. Tę zaletę ma definicja Turinga. Po pierwsze, w tamtych czasach znane były urządzenia mechanicznie realizujące żmudne algorytmy takie jak maszyny szyfrujące czy różnicowe. Po drugie, były one (w najlepszym wypadku) urządzeniami elektrycznymi a nie elektronicznymi. Model Turinga (jedna maszyna) rozwiązuje jeden problem wykonując bardzo proste operacje. Maszyna ta ma nieskończoną taśmę (pamięci) podzieloną na komórki, w których może znajdować się co najwyżej jeden symbol ze skończonego zbioru. Ma też głowicę, która obserwuje dokładnie jedną komórkę i skończony zbiór stanów. Na postawie tych dwóch informacji (stan, litera) podejmuje decyzję jaką literę umieścić w komórce, jaki ruch wykonać i w jaki stan wejść. 10

11 Definicja 1.8 Jednotaśmową maszyną Turinga nazywamy trójkę < S, Q, P >, gdzie Q jest skończonym alfabetem symboli taśmowych, S skończonym zbiorem stanów rozłącznym z Q, a P skończonym zbiorem instrukcji postaci: Matematycznie stan 1 litera 1 litera 2 ruch stan 2. P S (Q {B}) (Q {B}) {L, R, } S gdzie B jest nowym symbolem zwanym blank oznaczającym, że komórka jest pusta, a litery L, R, odpowiadają ruchom w lewo, w prawo i w miejscu. Wejściem dla maszyny będzie dowolne słowo nad alfabetem Q, analizowane od pierwszej litery i początkowego stanu q 0. Kolejny etap tej analizy nazywać będziemy konfiguracją. Definicja 1.9 Niech M =< S, Q, P > będzie ustaloną maszyną Turinga. 1. Konfiguracją M nazywamy każde słowo postaci uqw, gdzie u, w są słowami nad alfabetem Q {B}, a q jest stanem: u, w (Q {B}), q S. Uwaga Będziemy ignorować symbole puste na początku u i końcu w. 2. Dla instrukcji qa brq i konfiguracji vqaw wykonanie jej zapisujemy vqaw M vbq w. Uwaga Dokończ definicję: dla instrukcji qa blq i konfiguracji vqaw Powyższe wzory definiują relację jednokrokowej zmiany konfiguracji. Matematycznie zbiór K konfiguracji M równy jest (Q {B}) S (Q {B}) i M K K. Wtedy relację M K K będącą zwrotnioprzechodnim domknięciem M nazywamy relacją zmiany konfiguracji maszyny M. 4. Niech KF będzie zbiorem konfiguracji końcowych t.j. takich w których M nie może wykonać żadnej instrukcji: KF = {z K ; w K z M w} a q 0 S wyróżnionym stanem. Język L q 0 M słów akceptowanych przez M przy stanie początkowym q 0 definiujemy jako zbiór tych słów s, które 11

12 po umieszczeniu na taśmie słowa, ustawieniu głowicy przy przy jego pierwszej literze w stanie q 0, powodują zatrzymanie maszyny: L q 0 M = {s Q ; w KF q 0 s M w} Jednotaśmowa maszyna Turinga dla palindromów Niech X = {a 1,..., a n } będzie dowolnym skończonym i niepustym alfabetem. Rozważmy MT o instrukcjach q 0 a i a i Rq 0 szukaj prawego końca słowa q 0 B BLq 1 znalazłeś, to czego szukałeś q 1 a i BLs i zapamiętaj, co było na końcu (a i ) s i a als i a X wróć na początek (lewy koniec słowa) s i B BRt i znalazłeś, to czego szukałeś t i a i BRq 0 usuń pierwszą literę, jeśli równa jest a i Maszyna ta zawsze się zatrzyma! W stanie q 1 lub t i, gdy słowo na wejściu jest palindromem; W stanie t i, gdy tak nie jest. W pierwszym przypadku na taśmie pozostaną same symbole puste B. Przyjmując powyższą definicję języka akceptowanego przez M należy dopisać instrukcje prowadzące do zapętlenia w konfiguracjach t i a j dla i j : t i a j t i a j Po co to robić? Chyba lepiej rozpoznawać, który z tych przypadków zachodzi i móc rozstrzygać, czy słowo na wejściu jest palindromem czy nie. Wprowadźmy więc nowy stan f i instrukcje q 1 B BLf, t i B BLf. Definicja 1.10 Niech M =< Q, S, P > będzie maszyną Turinga o wyróżnionych: stanie początkowym q 0 i zbiorze stanów końcowych F S. Wtedy zbiór konfiguracji akceptujących KA i język akceptowany przez M przy zbiorze stanów końcowych F definiujemy: KA = {zqw K ; q F } L q 0 M,F = {s Q ; w KA q 0 s M w} Przykład sugeruje, że te dwie definicje są równoważne: Twierdzenie 1.11 Dla dowolnej maszyny Turinga M i wyróżnionego stanu q 0 istneje maszyna M o wyróżnionym stanie q 0 i zbiorze stanów końcowych F taka, że L q 0 M = L q 0 M,F. Dla dowolnej maszyny Turinga M o wyróżnionym stanie q 0 i zbiorze stanów końcowych F istnieje maszyna M o wyróżnionym stanie q 0 taka, że L q 0 M = L q 0 M,F. 12

13 Maszyna Turinga obliczająca następnik słowa w porządku leksykograficznym Załóżmy, że alfabet X = {a 1,..., a n } jest zbiorem uporządkowanym liniowo: a i < a i+1. Słowo s poprzedza t w porządku leksykograficznym, jeśli jest krótsze albo s i t są tej samej długości i s poprzedza t w porządku alfabetycznym. Porządek leksykograficzny jest liniowy i poprawnie określone jest pojęcie następnika słowa:nast(sa i a k n) = sa i+1 a k 1 nast(a k n) = a k+1 1. Rozważmy MT o instrukcjach q 0 a i a i Rq 0 q 0 B BLq 1 q 1 a n a 1 Lq 1 q 1 a i a i+1 Lq 2 q 2 a i a i Lq 2 q 2 B BRq q 1 B a 1 Lq 2 szukaj prawego końca słowa znalazłeś, to czego szukałeś zastąp ostatnią na końcu pierwszą i < n, teraz wystarczy wrócić na początek (lewy) to koniec wszystkie litery były równe a n Maszyna zawsze zatrzymuje się w stanie q, a na taśmie na prawo od głowicy znajduje się słowo będące następnikiem wejścia. Maszyna ta ma bardzo ważną cechę, mianowicie jest deterministyczna: do dowolnej konfiguracji może zastosować co najwyżej jedną instrukcję. Tylko takie maszyny możemy traktować jako urządzenia obliczające funkcje. Aby porównać model RAM z maszynami Turinga musimy zdecydować się na jakąś reprezentację liczb naturalnych: Definicja Niech n N będzie dowolną liczbą naturalą. Symbolem b(n) oznaczymy zapis n w systemie binarnym bez zbędnych zer. 2. Niech f : N n N będzie dowolną funkcją częściową. Mówimy, że deterministyczna maszyna Turinga M =< Q, S, P, F, q 0 > oblicza funkcję f, jeśli: x1,...,x n N y N f(x 1,..., x n ) = y q F q 0 b(x 1 )B... Bb(x n ) M qb(y). Niech T n oznacza zbiór wszystkich n-argumentowych funkcji o tej własności. 3. Niech T = n N T n oznacza zbiór wszystkich funkcji obliczanych przez maszyny Turinga. 13

14 Maszyna Turinga obliczająca resztę z dzielenia przez 3 liczby naturalnej n, operując zapisami liczb w systemie dwójkowym bez zbędnych zer q 0 0 BRq 0 wczytana liczba daje resztę 0 q 0 1 BRq 1 wczytana liczba daje resztę 1 q 1 0 BRq 2 mnóż przez 2 liczbę dającą resztę 1 q 1 1 BRq 0 mnóż przez 2 i dodaj 1 do liczby dającej resztę 1 q 2 0 BRq 1 mnóż przez 2 liczbę dającą resztę 2 q 2 1 BRq 2 mnóż przez 2 i dodaj 1 do liczby dającej resztę 2 Zadanie Zdefiniuj pozostałe instrukcje MT tak, aby w konfiguracji q i B wypisywała kod liczby i. 1.3 Teza Churcha-Turinga i argumenty na jej rzecz Przypomnijmy, że symbolem C oznaczyliśmy zbiór wszystkich funkcji RAMobliczalnych. Twierdzenie 1.13 C = T. Dowód tego twierdzenia prowadzi się zwykle pokazując, że każdy z tych zbiorów równy jest zbiorowi wszystkich funkcji cześciowo rekurencyjnych, czyli (przypomnijmy) najmniejszemu zbiorowi funkcji zawierających funkcje f(x) = 0, s(x) = x + 1, pri n (x 1,..., x n ) = x i gdzie n 1, 1 i n, i domkniętemu na podstawianie, rekursję i minimalizację. Powrócimy do tego zagadnienia omawiając funkcje uniwersalne. TEZA CHURCHA-TURINGA Intuicyjnie i nieformalnie określona klasa funkcji obliczalnych pokrywa się z klasą funkcji (RAM) obliczalnych (C) T. Oczywiście teza ta nie jest matematycznym twierdzeniem, są jednak ważkie argumenty na jej rzecz: 1. Różne formalizacje prowadzą do tej samej klasy funkcji. 2. Szeroka klasa funkcji zawiera się w C. 3. Realizacja programu P, maszyny Turinga M jest oczywistym przykładem algorytmu. 14

15 Przyjmując te argumenty często nie prowadzi się dowodów zbyt formalnie. Zadanie Niech f, g, c C 1 będą obliczalne. Rozważmy funkcję h(x) = { f(x) c(x) = 1 g(x) c(x) 1 Zastanówmy się czy jest ona obliczalna? W języku programowania wysokiego poziomu definicja ta odpowiada instrukcji if c(x)=1 then f(x) else g(x). Ale, czy zgodnie z tezą Churcha-Turinga możemy uznać, że h jest obliczalna? Jeśli funkcja c jest totalna oczywiście tak, ale gdy program obliczający c na danej x nie zatrzymuje się? Tym zagdanieniem zajmiemy się w dalszej części wykładu. 1.4 Efektywne numeracje programów W rozdziale tym zgłębimy oczywistą obserwację, że RAM-programów jest przeliczalnie wiele. Istnieją więc numeracje zbioru Π wszystkich RAM-programów. Definicja 1.14 Niech β : N Π będzie dowolną numeracją zbioru RAMprogramów (czyli funkcją na ). Mówimy, że β jest efektywna, jeśli istnieją obliczalne funkcje d : N N, kod, A : N 2 N takie, że dla wszelkich x N i β(x) =< i 0,..., i n > mamy: d(x) = n; 0 r n i r =< kod(x, r), A(x, r) >. F-cja d określa długość (ilość instrukcji) programu β(x), natomiast kod, A określają kody kolejnych instrukcji oraz adresy komórek, którymi one manipulują. Przypomnienie: Każda instrukcja wykonywana przez maszynę RAM jest jednoznacznie określona przez swój rodzaj opisany jedną z liczb {0, 1, 2, 3} i liczbę kodującą adresy komórek lub zawartość licznika rozkazów, którymi manipuluje. Matematycznie możemy przyjąć, że zbiór I = {0, 1, 2, 3} N N N jest zbiorem wszystkich instrukcji. Niech x N, x = 4a+k i a będzie częścią całkowitą a k resztą z dzielenia x przez cztery. Odnotujmy oczywisty lemat. 15

16 Lemat 1.15 Funkcja α : N I taka, że α(x) =< k, a > jest bijektywną numeracją zbioru instrukcji. Posłużymy się nią przy zdefiniowaniu efektywnej numeracji programów. Rozważmy funkcję τ : k>0 N k N taką, że τ(a 0, a 1,..., a k 1 ) = 2 a a 0+a a 0+a a k 1 +k 1 1 Jest to bijektywne kodowanie wszystkich skończonych ciągów liczb naturalnych. Omówimy dokładniej numerację odwrotną τ 1, gdyż chcemy udowodnić lemat. Lemat 1.16 Funkcja µ : N Π µ(x) =< α(a 0 ),..., α(a n ) >, gdzie τ(a 0,..., a n ) = x jest efektywną numeracją programów. Oczywiście funkcja τ 1 powiązana jest z przedstawianiem liczb naturalnych w systemie dwójkowym. Każda liczba naturalna większa od zera jest sumą rosnących potęg dwójki, czyli dla x N: x + 1 = 2 b b bm gdzie b i < b i+1 Wtedy wzory a 0 = b 0 i a i+1 = b i+1 b i 1 dla i < m opisują ciąg, którego kodem (poprzez τ) jest liczba x. Wyznaczanie przedstawienia x opisują podane funkcje (prymitywnie rekurencyjne). 1. l(x) = µ(y < x)(x < 2 y+1 ) 2. Pomocniczy ciąg c(0, x) = qt(2, x) c(n + 1, x) = qt(2, c(n, x)) 3. Wtedy b(0, x) = rm(2, x) b(n + 1, x) = rm(2, c(n, x)) 16

17 Zauważmy, że jest to klasyczny algorytm wyznaczania zapisu liczby naturalnej x w systemie binarnym opierający się na spostrzeżeniu, iż cyfra jedności jest resztą z dzielenia przez 2 (b(0, x)), a następną cyfrę (od prawej!) wyznacza się podobnie biorąc zamiast x część całkowitą z tego dzielenia. Teraz można odszukać cyfry 1 w powyższym przedstawieniu. l 1 (x) = Σ y l(x+1) sg(b(y, x + 1)) b 1 (0, x) = µ y l(x + 1)(b(y, x + 1) = 1) b 1 (i + 1, x) = µ y l(x + 1)(b(y, x + 1) = 1 b 1 (i, x) < y) a 1 (0, x) = b 1 (0, x) a 1 (i + 1, x) = b 1 (i + 1, x) b 1 (i, x) 1 x = l 1 (x) i=0 2 a 1(i,x) 1 Dowód lematu 1.16 Wystarczy zauważyć, że d(x) = l 1 (x) kod(x, r) = rm(4, a 1 (r, x)) A(x, r) = qt(4, a 1 (r, x)) są poszukiwanymi funkcjami. Przykład Wyznacz program o numerze Ponieważ = 1254 = program o numerze 1253 składa się z sześciu instrukcji o kolejnych numerach: 1, 0, 2, 0, 0, 2. Ponieważ liczbie 0 odpowiada instrukcja Z(0), 1 odpowiada instrukcja S(0), a 2 instrukcja T (0, 0) podany program oblicza funkcję f(x) = 0. Od tej pory używać będziemy tej numeracji i oznaczenia µ(e) = P e, czyli P e jest programem, który w tej numeracji otrzymał numer e. Wtedy φ (n) e jest n-argumentową funkcją obliczaną przez ten program. Nasuwa się wiele pytań: Czy każdy program ma dokładnie jeden numer? A funkcja obliczalna? Czy dla danej funkcji obliczalnej f istnieje procedura rozsztrzygająca, które liczby naturalne są jej numerami? itp. Omówimy dwa twierdzenia: o parametryzacji i funkcji uniwersalnej, które dadzą matematyczne narzędzia do odpowiedzi na te pytania. Należy zaznaczyć, że każda formalizacja pojęcia algorytmu powinna mieć te własności (efektywna numeracja algorytmów-programów, tw. o parametryzacji i funkcji uniwersalnej). 17

18 1.5 Twierdzenie o parametryzacji i funkcji uniwersalnej Twierdzenie o parametryzacji pozwoli m.in. odpowiedzieć na pytanie: czy dla danej funkcji f C 2 o numerze e można efektywnie wyznaczyć dla dowolnego parametru a N numer funkcji f(a, )? Twierdzenie to jest nieco ogólniejsze. Twierdzenie 1.17 (O parametryzacji, s-m-n ) Dla dowolnych liczb naturalnych n, m 1 istnieje totalna i obliczalna funkcja s m n : N 1+m N taka, że e N a N m φ (m+n) e (a, ) φ (n) s m(e,a)( ) n Dowód, szkic Dla prostoty założymy, że n = m = 1 i będziemy swobodnie używać tych oznaczeń. Niech e, a N. Przez Π e,a oznaczymy program powstały z P e poprzez modyfikacje: 1. na początku umieszczamy ciąg instrukcji T(1,2), Z(1), S(1),..., S(1); przy czym instrukcja S(1) występuje a-razy; 2. potem następuje tekst programu P e ze zmodyfikowanymi instrukcjami warunkowymi. Z konstrukcji wynika, że φ (2) e (a, y) φ (1) Π e,a (y) Pozostaje zauważyć, że µ(m) = Π e,a s 1 1(e, a) = m. Zadanie Sformalizuj powyższy dowód. Wróćmy do początkowych rozważań. Wniosek 1.18 Niech n, m 1 i ψ C n+m będzie dowolną funkcją obliczalną n + m-argumentową. Wtedy istnieje totalna funkcja obliczalna f C m taka, że a N m ψ(a, ) φ (n) f(a) ( ) Dowód Niech e będzie jakimkolwiek numerem ψ. Za f wystarczy wziąć s m n (e, ). Niech n > 0 będzie ustaloną liczbą naturalną. 18

19 Definicja 1.19 Funkcją uniwersalną dla n-argumentowych funkcji RAMobliczalnych nazywamy funkcję Ψ (n) U : N n+1 N taką, że: e N x N nψ (n) U (e, x) φ (n) e (x) Twierdzenie 1.20 (O funkcjach uniwersalnych) Każda funkcja uniwersalna jest częściowo-rekurencyjna, a więc i RAM-obliczalna. Definicja 1.21 Każdy program obliczający funkcję uniwersalną nazywamy programem uniwersalnym. Zanim przystąpimy do omówienia programu uniwersalnego przypomnijmy, że każdy program P na maszynę RAM manipuluje tylko ustaloną skończoną liczbą komórek i numery tych komórek są znane maszynie przy uruchamianiu programu. Oznacza to, że dowolna konfiguracja z RAM matematycznie patrząc jest funkcją z : N {L} N, która każdemu numerowi komórki pamięci i licznikowi rozkazów L przyporządkowuje jej/jego zawartość i która dla prawie wszystkich argumentów przyjmuje wartość zero; tak więc wzór cod(z) = 2 z[l] 3 z[0] 5 z[1]... jest poprawny (prawie wszystkie czynniki są równe 1) i koduje w sposób różnowartościowy dowolą konfigurację RAM. Zarys Programu uniwersalnego Dla danej liczby e istnieje procedura wyznaczania kolejnych instrukcji programu P e. Program uniwersalny dla numeru e, ciągu danych x długości n i kroku obliczeń k pamięta liczbę σ n (e, x, k) będącą kodem konfiguracji uzyskanej w k-tym kroku obliczeń programu P e na danych x, potrafi wyznaczyć zawartość licznika rozkazów m, odszukać instrukcję o numerze m w P e i ją wykonać, jeśli to możliwe, czyli m jest niewiększe od mumeru l(e) ostatniej instrukcji P e. Jeśli m l(e) + 1 obliczenia się kończą. Oczywiście σ n (e, x, 0) jest kodem konfiguracji początkowej, w której ciąg x jest umieszczony w komórkach z[1],..., z[n] a licznik rozkazów ustawiony jest na Rozstrzygalność i częściowa rozstrzygalność W rozdziale tym wykorzystamy twierdzenia o parametryzacji i funkcji uniwersalnej do pokazania ograniczeń teorii, którą zbudowaliśmy. Wykażemy, że wiele problemów jest nierozstrzygalnych. 19

20 Definicja 1.22 Dany jest dowolny zbiór A N n ciągów ustalonej długości n N. 1. Problem x A nazywamy rozstrzygalnym, jeśli funkcja charakterystyczna zbioru A { 1 x A c A (x) = 0 x A jest RAM-obliczalna. 2. Problem x A nazywamy częściowo rozstrzygalnym, jeśli częściowa funkcja charakterystyczna zbioru A jest RAM-obliczalna. { 1 x A cc A (x) = x A Program obliczający c A nazywamy procedurą rozstrzygającą dla x A, natomiast obliczający cc A sprawdzającą dla x A. Będziemy też mówili, że problemy innej natury np. φ x = 0 są (nie)rozstrzygalne, gdy funkcja charakterystyczna odpowiadającego im zbioru jest (nie)obliczalna; w przykładzie jest to zbiór numerów tych programów, które obliczają funkcję tożsamościowo równą zero. Najpierw zauważmy, że istnieją funkcje np. jednoargumentowe, które nie są RAM obliczalne. Jest dosyć oczywiste, gdyż programów jest przeliczalnie wiele, a takich funkcji jest dużo więcej. Ciekawszym jest to, że ważne funkcje mające elegancką definicję matematyczną nie są obliczalne. 1.7 Metoda Cantora Wprowadźmy oznaczenia : 1. φ (n) e oznacza funkcję n-argumentową obliczaną przez program o numerze e; 2. W n e oznacza dziedzinę tej funkcji, czyli zbiór wszystkich ciągów danych, na których ten program się zatrzymuje; 3. E n e oznacza zbiór wartości tej funkcji; 20

21 Gdy górny indeks równy jest 1 będziemy go pomijać. Rozważmy funkcję: f(x) = { φx (x) + 1 x W x 0 x W x Przypuśćmy, że jest ona obliczana przez program o numerze e N: f = φ e. Wtedy { φe (e) + 1 e W φ e (e) = f(e) = e 0 e W e Ponieważ drugi przypadek nie zachodzi (f jest totalna) otrzymujemy, że φ e (e) = φ e (e) + 1, co oznacza, że f nie jest obliczana przez ten program. Wobec dowolności e otrzymujemy, że f nie jest obliczalna. Powyższa matoda została wprowadzona przez Cantora przy dowodzeniu, że zbiór wszystkich podzbiorów N nie jest przeliczalny. Podobnie udowodnimy następne twierdzenie. Twierdzenie 1.23 Problem φ x jest totalna jest nierozstrzygalny. Dowód( Nie wprost) Przypuśćmy, że funkcja c(x) = { 1 φx totalna 0 φ x nie jest totalna jest obliczalna. Wtedy obliczalna jest funkcja t(x, y) = { ΨU (x, y) c(x) = 1 0 c(x) = 0 Z określenia każda funkcja totalna f C 1 jest postaci t(e, ) dla pewnego e. Rozważmy fukcję g(x) = t(x, x) + 1, która oczywiście jest totalna i obliczalna. Przypuśćmy, że g(x) = t(i, x); wtedy g(i) = t(i, i) ( z definicji t) i g(i) = t(i, i) + 1 (z definicji g), co daje sprzeczność. Można udowodnić, że każdy problem rozstrzygalny A jest częściowo rozstrzygalny np. prowadząc do zapętlenia procedurę rozstrzygającą dla A, gdy ta zwróci 0. Nie jest odwrotnie! Rozważmy zbiór/problem K = {x N ; x W x }, 21

22 który jest częściowo rozstrzygalny, gdyż wystarczy zmodyfikować program uniwersalny dla funkcji 1-argumentowych na danych (x, x) tak, aby zwracał po zatrzymaniu wartość jeden. Jest to jeden z ważniejszych problemów nierozstrzygalnych. Twierdzenie 1.24 Problem x K jest nierozstrzygalny. Dowód(nie wprost) Przypuśćmy, że funkcja c K jest obliczalna. Rozważmy funkcję { 0 ck (x) = 0 g(x) = c K (x) = 1 Z tezy Churcha-Turinga jest ona obliczalna. Niech m N będzie numerem pewnego programu obliczającego g, wtedy m W m m Domg m W m co daje sprzeczność. Jako wniosek otrzymujemy Twierdzenie 1.25 Problem stopu y W x jest nierozstrzygalny. Dowód Gdyby funkcja charakterystyczna zbioru A = {(x, y) N 2 ; y W x } była obliczalna, to wobec równości c K (x) = c A (x, x), problem x K byłby rozsrzygalny, co nie jest prawdą. Podsumujmy dotychczasowe rezultaty. Niestety nie istnieje procedura rozstrzygająca dla dowolnego programu P, czy zatrzyma się on na wszystkich danych. Procedurę taką można by wykorzystać np. na etapie kompilacji i w ten sposób uwolnić się od programów pętlących się. Pokażemy też, że różne wersje problemu poprawności są nierozstrzygalne. Uwaga Nie oznacza to, że dla konkretnego programu nie możemy ustalić, czy on jest poprawny i ma własność stopu; często nie jest to zbyt trudne zadanie. Twierdzenie 1.26 Problem φ x = 0 jest nierozstrzygalny. Nieformalnie: nie istnieje procedura rozstrzygająca dla dowolnej liczby x N czy program P x oplicza fukcję tożsamościowo równą zero. Dowód Rozważmy funkcję: { { 0 ck (x) = 1 0 x f(x, y) = c K (x) = 0 = Wx x W x 22

23 Jest ona obliczalna, gdyż f(x, y) = 0 Ψ U (x, x). Zastosujmy do niej wniosek Niech g(x) będzie totalna, obliczalna i taka, że x N y N f(x, y) = φ g(x) (y). Wobec definicji f otrzymujemy x N x W x φ g(x) = 0. Gdyby więc funkcja charakterystyczna zbioru A = {x N; φ x = 0} była obliczalna, to wobec równości c K (x) = c A (g(x)) otrzymalibyśmy, że problem x K jest rozstrzygalny, co daje sprzeczność z poprzednim twierdzeniem. Zadanie Wykaż, że dla dowolnej funkcji h C 1 problem φ x = h jest nierozstrzygalny. W dowodzie ostatniego twierdzenia sprowadziliśmy problem x K do problemu x A. Definicja 1.27 Niech A, B N. Mówimy, że B jest sprowadzalny do A, jeśli istnieje totalna i obliczalna fukcja g(x) taka, że x N x B g(x) A. Wykorzystaliśmy też ważną własność problemów (częściowo) rozstrzygalnych. Lemat 1.28 Jeśli problem x A jest (częściowo) rozstrzygalny, a zbiór B jest sprowadzalny do A, to problem x B jest (częściowo) rostrzygalny. Dowód Z definicji funkcji g sprowadzającej B do A mamy równość c B (x) = c A (g(x)) (cc B (x) = cc A (g(x)). Z obliczalności g i c A (cc A ) wynika obliczalność c B (cc B ). Jeśli chcemy wykorzystać powyższy lemat do udowodnienia, że problem x A jest nierozstrzygalny wystarczy sprowadzić do niego pewien problem x B o którym już wykazaliśmy, że nie jest rozstrzygalny. Postąpimy tak w ostatnim przykładzie. Przykład Dla ustalonej liczby naturalnej e N problemy; wejścia: e W x ; wyjścia: e E x ; 23

24 są nierozstrzygalne, gdyż sprowadzimy problem x W x do każdego z tych problemów. W tym celu rozważmy funkcję: { y x Wx f(x, y) = x W x Funkcja ta jest obliczalna i stosuje się do niej twierdzenie o parametryzacji; niech k C 1 będzie totalna i taka, że czyli co pociąga x x W x x,y f(x, y) = φ k(x) (y) W k(x) = E k(x) = N x x W x e W k(x) e E k(x) Otrzymaliśmy, że problem x W x jest sprowadzalny zarówno do problemu wejścia jak i problemu wyjścia. 2 Teoria złożoności obliczeniowej W rozdziale tym zajmiemy się elementami teorii złożoności obliczeniowej. Istnieją różne miary złożoności algorytmu. Najważniejsze to czas i pamięć. Złożoność czasową mierzy się ilością kroków obliczeń. W przypadku modeli maszynowych (RAM czy Turinga) jest to związane z wywoływaniem instrukcji. Złożoność pamięciową mierzy się ilością komórek pamięci wykorzystywanych w czasie obliczenia. Wtedy możemy przyjąć, że interesują nas tylko dodatkowe koszty nie związane z umieszczeniem danych i wyników w pamięci. Główne rozważnia dotyczyć będą czasu. W rozdziale tym rozważać będziemy tylko maszyny Turinga. Wybór modelu jest uzasadniony: 1. tradycją; 2. konstrukcją rzeczywistych komputerów: są one raczej maszynami Turinga a nie RAM; 3. istotą problemu: można wykazać, że model RAM z ustalonym skończonym rozmiarem pamięci jest wystarczający w teoretycznych rozważaniach; 24

25 Zacznijmy od przykładu. Rozważmy język A = {0 k 1 k ; k 0}. Jak dużo potrzebuje czasu MT, aby rozstrzygnąć, czy w A? Trzeba rozważyć konkretną maszynę M 1 ; M 1 na łańcuchu wejściowym w: 1. sprawdza, czy w słowie w pojawia się 0 na prawo od 1; jeśli tak jest odrzuca to słowo; 2. W przeciwnym przypadku powtarza następujące czynności; 3. poszukuje od lewej do prawej pary 0 i 1 usuwając je; 4. jeśli zostały 0 po usunięciu wszystkich 1 lub 1 po usunięciu wszystkich 0, to odrzuca słowo, w przeciwnym przypadku je akceptuje. Będziemy wyznaczać czas działania algorytmu jako funkcję rozmiaru wejścia. W przypadku MT jest to długość słowa. Wtedy będziemy liczyć przypadek najgorszy, czyli wymagający najwięcej obliczeń. Definicja 2.1 Niech M będzie deterministyczną MT zatrzymującą się na wszystkich wejściach. Czasem działania lub złożonością czasową M jest funkcja f : N N, gdzie f(n) jest maksymalną ilością kroków obliczeń M wykonywanych przez nią na każdym wejściu długości n. Mówimy też, że M działa w czasie f(n). Widać, że raczej będziemu badać asymptotyczne zachowanie maszyn Turinga. 2.1 Notacja O Definicja 2.2 Niech f, g : N R + Mówimy, że f jest rzęd O(g(n)) (zapis f(n) = O(g(n)) jeśli istnieją liczby c R +, n 0 N takie, że dla każdego n n 0 mamy: f(n) cg(n). Mówi się też, że g(n) jest asymptotycznym ograniczeniem górnym f(n). Jasne jest, że f(n) = O(5f(n)) więc w notacji tej pomija się współczynniki. Zadanie Niech f(n) = 5n 3 + 2n n + 4. Wykaż, że f(n) = O(n 3 ). Wiemy z analizy, że lim n 2n n + 4 n 3 = 0 25

26 co pociąga, że n 3 2n n + 4 dla n n 0 (wyznacz takie n 0 ). Wtedy 5n 3 + 2n n + 4 6n 3 dla n n 0. Uwaga W tej notacji rozważając logarytmy o podstawie wiekszej od jeden podstawa jest nieważna, gdyż log a n = log bn. log b a Teraz oszacujmy czasową złożoność obliczeniową podanej na wstępie maszyny M 1 : dla danego na wejściu słowa długości n realizacja 1-go etapu wymaga 2n instrukcji (czytanie od lewej do prawej i powrót na początek słowa); 2-go i 3-go polega na dwukrotnym czytaniu (2n) powtarzanym n razy co daje 2 O(n 2 ) kroków; na koniec 4-ty zrealizuje się w O(n) krokach: w sumie O(n 2 ). Rozważać też będziemy niedeterministyczne MT. Definicja 2.3 Niech M będzie MT zatrzymującą się na wszystkich wejściach. Czasem działania lub złożonością czasową M jest funkcja f : N N, gdzie f(n) jest maksymalną ilością kroków obliczeń M wykonywanych przez nią na każdym wejściu długości n w czasie każdego przebiegu obliczeń. Mówimy też, że M działa w czasie f(n). Funkcja f(n) zapewnia, że każde obliczenia M na dowolnym wejściu długości n zakończą się w tym czasie. Definicja 2.4 Niech t : N N będzie totalna. Funkcja ta definiuje dwie klasy czasowej złożoności obliczeniowej: T IM E(t(n)) tych języków L, które są rozstrzygane prez determistyczną maszynę Turinga o czasowej złożoności O(t(n)) N T IM E(t(n)) tych języków L, które są rozstrzygane prez maszynę Turinga o czasowej złożoności O(t(n)) Niech P = T IME(n k ) i N P = NT IME(n k ). k N k N Bezpośrednio z definicji mamy Twierdzenie 2.5 P N P Stąd naturalnym jest pytanie, czy P= NP. Jemu poświęcimy ten rozdział. Często mówi się, że problem z klasy P jest szybko rozwiązalny, a z klasy 26

27 NP szybko weryfikowalny. Jest to związane z charakterem najważniejszych problemów z NP, jak i z równoważną definicją. Problem P=NP jest jednym z siedmiu wielkich problemów milenijnych. Problemy te zostały sformułowane w czasie sesji Clay Mathematical Institute w College de France w Paryżu w maju 2000 r przez znanych uczonych J.Tate i M.Atyiaha. Za rozwiązanie każdego z tych problemów jest wyznaczona nagroda w wysokości 1 miliona dolarów. Choć dominuje przeświadczenie, że nie jest prawdą, iż P=NP (prównaj Hopcroft, Ullman str ) nie brak też prób udowodnienia tej równości. Standardowo poszukuje się algorytmów deterministycznych o wielomianowej złożoności czasowej dla problemów NP-zupełnych. Mam nadzieję, że nagroda miliona dolarów jest wystarczającą zachętą, choć i względy praktyczne są równie ważne, gdyż lista problemów NPzupełnych jest bardzo długa i zawiera mnóstwo praktycznych (dla informatyków) problemów. Wystarczy tu wspomnieć o problemie całkowitoliczbowego programowania liniowego czy problemie komiwojażera. Skupimy się na wyjaśnieniu użytych wyżej pojęć i omówieniu wagi tego problemu. Najpierw ważne twierdzenie. Twierdzenie 2.6 Dla niedeterministycznej maszyny Turinga M o czasowej złożoności obliczeniowej f(n) takiej, że n f(n) dla wszystkich n N, istnieje deterministyczna maszyna Turinga M 1 rozpoznająca ten sam język, której czasowa złożoność obliczeniowa jest rzędu O(c f(n) ), dla pewnej liczby c > 1. Idea konstrukcji maszyny M 1. Dla ustalenia uwagi załóżmy, że M w każdej konfiguracji może wykonać co najwyżej dwie instrukcje. Ponieważ jest niedeterministyczna w pewnej konfiguracji ma faktycznie wybór pomiędzy dwiema instrukcjami. Dokonajmy ponumerowania liczbami 0 lub 1 tych instrukcji dla takich konfiguracji. Każdy ciąg obliczeń M na wejściu długości n można wtedy opisać ciągiem zer i jedynek długości co najwyżej f(n), odpowiadającym wyborowi kolejnej instrukcji. Ciągów takich jest 2 f(n)+1 1. Maszynę deterministyczną M 1 konstruuje się tak, aby dla wejścia długości n wyznaczała takie ciągi w pewnym porządku (np. leksykograficznym), a następnie realizowała obliczenia M opisane przez wygenerowany ciąg. Każde z O(2 f(n) ) obliczeń wymaga co najwyżej f(n) kroków, a f(n)(2 f(n)+1 1) = O(4 f(n) )./ Można wykazać, że konstruowana w dowodzie deterministyczna MT ma dodatkową własność: jest lewostronnie ograniczona, co oznacza, że można 27

28 użyć dodatkowego znaku początku słowa będącego na taśmie; w sytuacji, gdy głowica obserwuje ten znak niemożliwy jest ruch w lewo. 2.2 Sprowadzalność problemu ścieżki Hamiltona do problemu spełnialności Dla digrafu G=(V,E) o n wierzchołkach ponumerowanych kolejnymi liczbami naturalnymi ze zbioru {1,..., n} zdefiniujemy wyrażenie logiczne (funkcję zdaniową) f G o n 2 zmiennych x ij, którym nadamy wartość logiczną 1 wtw, gdy j-ty wierzchołek występuje na i-tej pozycji ścieżki Hamiltona. Wtedy dla każdego digrafu G, G ma ścieżkę Hamiltona wtw, gdy wyrażenie f G jest spełnialne. f G jest koniunkcją wyrażeń logicznych stwierdzających: 1. Każdy wierzchołek j musi się pojawić na ścieżce: (x 1j x 2j... x nj ), ale co najwyżej raz: ( x kj x ij ) dla wszystkich k i; 2. Jakiś wierzchołek musi być na i-tej pozycji: (x i1 x i2... x in ), ale nie dwa: ( x ik x ij ) dla wszystkich k j; 3. Kolejne wierzchołki muszą być połączone krawędzią: dla każdej pary (j, i) E oraz k {1,..., n 1} : ( x kj x k+1i ) ; Procedura sprowadzania musi spełniać dodatkowe w-ki. Najogólniej, proces sprowadzania nie może być trudniejszy niż sam problem. Zauważmy, że procedura sprowadzania problemu ścieżki Hamiltona do problemu spełnialności wymaga oprócz pamięci dla wejścia i wyjścia tylko przechowywania i, j. W tym sensie pamięciowa złożoność algorytmu zależy logarytmicznie od rozmiaru wejścia. Zakładać będziemy, że języki są rekurencyjne; w związku z tym maszyny Turinga będą zawsze się zatrzymywać i do odróżnienia słów akceptowanych od odrzucanych wykorzystamy stany MT. 2.3 Redukcje Niech L,L będą językami nad ustalonym alfabetem X. 28

29 Definicja 2.7 Redukcją lub sprowadzeniem języka L do L nazywamy funkcję R : X X, która jest obliczalna przez deterministyczną MT w pamięci logarytmicznej i sprowadzającą L do L : Niech C będzie klasą złożoności. x X x L R(x) L Definicja 2.8 Język L C jest zupełny dla C, jeśli dla każdego L C istnieje redukcja L do L. Twierdzenie 2.9 Niech M będzie maszyną Turinga, która jest deterministyczna i operuje pamięcią O(log n). Wtedy M ma wielomianową czasową złożoność obliczeniową. Twierdzenie 2.10 ( COOK (1971)) Język SAT wyrażeń logicznych, które są spełnialne jest zupełny w klasie NP. Ćwiczenie Wykaż, że SAT NP. Dowód polega na zbudowaniu w pamięci logarytmicznej dla dowolnej MT M, operującej wejściowym alfabetem X, o wielomianowej czasowej złożonoci obliczeniowej, oraz dowolnego słowa x X wyrażenia logicznego R(x), które jest spełnialne wtw, gdy x jest akceptowane prze M. Definicja 2.11 Wyrażenie logiczne jest w postaci normalnej koniunkcyjnej PNK, jeżli jest koniunkcją alternatyw zmiennych lub ich zaprzeczeń. Symbolem PNK oznaczymy zbiór wszystkich takich wyrażeń, SAT-PNK oznacza zbiór wszystkich wyrażeń w PNK, które są spełnialne. Twierdzenie 2.12 Język SAT-PNK jest NP-zupełny. Na zakończenie przedstawimy trzy NP-zupełne problemy grafowe. W tym celu rozważymy język SAT-3PNK spełnialnych wyrażeń w PNK, w której każda alternatywa ma co najwyżej trzy elementy. Zadanie Rozważmy wyrażenie logiczne f(x) = x 1 x 2... x m, gdzie m > 3 oraz g(x, y) = (x 1 x 2 y 1 ) ( y 1 x 3 y 2 )... ( y m 3 x m 1 x m ). Wykaż, że wartościowania zmiennych x, dla których f staje się zdaniem prawdziwym, są w odpowiedniości z wartościowaniami zmiennych x, y, dla których g staje się zdaniem prawdziwym. Twierdzenie 2.13 Język SAT-3PNK jest NP-zupełny. 29

30 x 1 x 1 x 1 x 2 x 3 x 2 x 3 x 2 x 3 Rysunek 1: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) ( x 1 x 2 x 3 ) 2.4 Problem zbioru niezależnego Niech G=(V,E) będzie grafem. Zbiór wierzchołków I nazywamy niezależnym, jeśli żadne dwa wierzchołki z I nie są połączone krawędzią. Oczywiście każdy graf ma zbiór niezależny! Problem ZN Dla grafu G=(V,E) i k N rozstrzygnąć, czy G ma zbiór niezależny mocy k. Twierdzenie 2.14 Problem zbioru niezależnego jest NP-zupełny. Dowód Sprowadzenie języka SAT-3PNK do problemu ZN. Idea: wyrażeniu α = 1 i m(α i1 α i2 α i3 ) przyporządkujemy graf o 3m wierzchołkach, który posiada zbiór niezależny mocy m wtw, gdy wyrażenie α jest spełnialne. Wprowadzamy wierzchołki α ij, 1 i m, 1 j 3, krawędziami łączymy te, które należą do jednego elementu koniunkcji oraz te, które odpowiadają zmiennej i jej zaprzeczeniu. Jeśli wyrażenie α jest spełnialne, to przy pewnym wartościowaniu zmiennych w nim wystepujących, każda z koniunkcji ma wartość 1, a pewien składnik każdej z alternatyw również ma wartość 1. Do zbioru niezależnego wybieramy po jednym takim składniku. Odwrotnie, każdy zbiór niezależny wyznacza takie wartościowanie, że dokładnie jeden składnik każdej z alternatyw ma wartość Przykład dwóch pokrewnych problemów NP-zupełnych Problem kliki: Dla grafu G i k N rozstrzygnąć, czy istnieje pełny podgraf G o k wierzchołkach. 30

31 Problem pokrycia wierzchołkowego: Dla grafu G i k N rozstrzygnąć, czy istnieje k-elementowy zbiór B wierzchołków taki, że każda krawędź w G jest koincydentna przynajmniej z jednym wierzchołkiem z B. Łatwo sprowadzić problem zbioru niezależnego, do każdego z tych problemów. Zbiór K V grafu G=(V,E) jest kliką wtw, gdy jest zbiorem niezależnym grafu G=(V,E ), gdzie {i, j} E {i, j} E. Zbiór K V grafu G=(V,E) jest pokryciem wierzchołkowym wtw, gdy zbiór V-K jest niezależny. 3 Półgrupy z jedynką W drugiej części wykładu rozważać będziemy gramatyki, czyli generatory języków i maszyny Turinga, które (przypomnijmy) są akceptorami tychże. Definicja gramatyki (typu 0) jest bardzo pojemna (ogólna); udowodnimy np. twierdzenie, że są one generatorami dokładnie wszystkich języków (zbiorów) rekurencyjnie przeliczalnych. Wykład będzie się więc koncentrował wokół specjalnych gramatyk, i języków przez nie generowanych, o dużym znaczeniu praktycznym. Po wstępie matematycznym dotyczącym monoidów zajmiemy się językami regularnymi, które powinny być dobrze znane użytkownikom Unixa, którzy kiedykolwiek próbowali odszukać plik znając jego niepełną nazwę lub przygotowali nietrywialny skrypt np. w Perlu. Akceptorami dla tych języków będą automaty Rabina-Scotta, a generatorami np. gramatyki prawostronnie liniowe. Następnie przejdziemy do gramatyk bezkontekstowych, które odgrywają kluczową rolę przy definiowaniu i budowaniu kompilatorów języków programowania. Pojęcie gramatyki nie będzie więc pierwszym, które wprowadzimy w wykładzie. No to zaczynamy! Niech X będzie dowolnym niepustym i skończonym zbiorem Definicja 3.1 Deterministycznym i zupełnym X- automatem Rabina-Scotta A nazywamy piątkę < X, Q, F, δ, q 0 >, w której 1. X jest skończonym alfabetem symboli wejściowych. 2. Q jest skończonym zbiorem stanów rozłącznym z X. 3. F Q jest podzbiorem stanów końcowych. 31

32 4. q 0 Q jest wyróżnionym stanem początkowym. 5. F-cja δ : Q X Q zwana jest funkcją przejścia lub zmiany stanu. Nieformalnie Automat Rabina-Scotta (skrótowo: (RS)-automat)jest urządzeniem posiadającym nieskończoną taśmę wejściową, służącą tylko do czytania (od lewej do prawej) słów nad alfabetem X, które (urządzenie) pod wpływem przeczytanej ostatnio informacji (litery słowa na wejściu), zmienia swój stan świadomości. Oczywiście stan początkowy jest naturalnie rozumiany. Wygodniej jest opisywać (RS)-automat jako graf zorientowany o wierzcholkach będących stanami i krawędziach etykietowanych literami alfabetu wejściowego. Przykład Maszyna Turinga obliczająca resztę z dzielenia przez 3 liczby naturalnej n, operując zapisami liczb w systemie dwójkowym bez zbędnych zer q 0 0 BRq 0 wczytana liczba daje resztę 0 q 0 1 BRq 1 wczytana liczba daje resztę 1 q 1 0 BRq 2 mnóż przez 2 liczbę dającą resztę 1 q 1 1 BRq 0 mnóż przez 2 i dodaj 1 do liczby dającej resztę 1 q 2 0 BRq 1 mnóż przez 2 liczbę dającą resztę 2 q 2 1 BRq 2 mnóż przez 2 i dodaj 1 do liczby dającej resztę 2 Tu i teraz będzie dla nas istotne, że maszyna zatrzymuje się w stanie q i wtw, gdy na wejściu był zapis liczby dającej resztę i. Tak więc tablica q 0 0 q 0 q 0 1 q 1 q 1 0 q 2 q 1 1 q 0 q 2 0 q 1 q 2 1 q 2 opisuje funkcję przejścia pewnego (RS)-automatu. Jeśli wybierzemy {q 1 } za zbiór stanów końcowych, to automat znajdzie się w stanie końcowym tylko po przeczytaniu zapisu liczby dającej resztę 1 z dzielenia przez 3. Ten przykład na razie wystarczy nam za definicję języka akceptowanego przez (RS)-automat. 32

1 Maszyny Turinga. stan 1 litera 1 litera 2 ruch stan 2. Matematycznie P S (Q {B}) (Q {B}) {L, R, } S

1 Maszyny Turinga. stan 1 litera 1 litera 2 ruch stan 2. Matematycznie P S (Q {B}) (Q {B}) {L, R, } S 1 Maszyny Turinga Mając pewną wiedze techniczną na temat budowy komputera trudno przyjąć model rozważany wcześniej. Należy też uświadomoć sobie, że prosty pomysł łatwiej zrealizować technicznie. Tę zaletę

Bardziej szczegółowo

Podstawy Teorii Obliczalności

Podstawy Teorii Obliczalności Toruń 2003 Barbara Klunder Podstawy Teorii Obliczalności Materiały do wykładu W wykładze zastanawiać będziemy się nad dwoma kluczowymi pytaniami: Czym jest efektywna procedura? Hardwarem czy softwarem?

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

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

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

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

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

Języki, automaty i obliczenia

Języki, automaty i obliczenia Języki, automaty i obliczenia Wykład 10: Maszyny Turinga Sławomir Lasota Uniwersytet Warszawski 29 kwietnia 2015 Plan Maszyny Turinga (Niedeterministyczna) maszyna Turinga M = (A, Q, q 0, F, T, B, δ) A

Bardziej szczegółowo

Języki, automaty i obliczenia

Języki, automaty i obliczenia Języki, automaty i obliczenia Wykład 11: Obliczalność i nieobliczalność Sławomir Lasota Uniwersytet Warszawski 6 maja 2015 Plan 1 Problemy częściowo rozstrzygalne 2 Problemy rozstrzygalne 3 Funkcje (częściowo)

Bardziej szczegółowo

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1 Odmiany maszyny Turinga 1 Uniwersalna maszyna Turinga Uniwersalna maszyna U nad alfabetem A k jest to maszyna definiująca funkcje: f U, n+1 = {((w(i 1, I 2,..., I n )),y) w - opis maszyny T za pomocą słowa,

Bardziej szczegółowo

Logika i teoria mnogości Wykład 14

Logika i teoria mnogości Wykład 14 Teoria rekursji Teoria rekursji to dział logiki matematycznej zapoczątkowany w latach trzydziestych XX w. Inicjatorzy tej dziedziny to: Alan Turing i Stephen Kleene. Teoria rekursji bada obiekty (np. funkcje,

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

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 5 Prof. dr hab. inż. Jan Magott DMT rozwiązuje problem decyzyjny π przy kodowaniu e w co najwyżej wielomianowym czasie, jeśli dla wszystkich łańcuchów wejściowych

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

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

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

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

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

O ALGORYTMACH I MASZYNACH TURINGA

O ALGORYTMACH I MASZYNACH TURINGA O ALGORYTMACH I MASZYNACH TURINGA ALGORYTM (objaśnienie ogólne) Algorytm Pojęcie o rodowodzie matematycznym, oznaczające współcześnie precyzyjny schemat mechanicznej lub maszynowej realizacji zadań określonego

Bardziej szczegółowo

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość 11. Wykład 11: Rachunek λ. Obliczenia i obliczalność. Rachunek λ jest systemem pozornie bardzo prostym. Abstrakcja i aplikacja wydają się trywialnymi operacjami, i może się zdawać, że niczego ciekawego

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

1 Funkcje uniwersalne

1 Funkcje uniwersalne 1 1 Funkcje uniwersalne 1.1 Konstrukcja funkcji uniweralnej Niech P będzie najmniejszym zbiorem liczb spełniającym warunki 1) 0, 2, 0, 0, 2, 1, 0, 2, 2 P, 2) 0, n, 3, k P dla wszystkich n > 0 oraz k takich,

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

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

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

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

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

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

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

PROBLEMY NIEROZSTRZYGALNE

PROBLEMY NIEROZSTRZYGALNE PROBLEMY NIEROZSTRZYGALNE Zestaw 1: T Przykład - problem domina T Czy podanym zestawem kafelków można pokryć dowolny płaski obszar zachowując odpowiedniość kolorów na styku kafelków? (dysponujemy nieograniczoną

Bardziej szczegółowo

Funkcje rekurencyjne

Funkcje rekurencyjne Funkcje rekurencyjne Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Funkcje rekurencyjne Jerzy Pogonowski (MEG) Funkcje rekurencyjne Funkcje rekurencyjne 1 / 34 Wprowadzenie

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

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

Rekurencyjna przeliczalność

Rekurencyjna przeliczalność Rekurencyjna przeliczalność Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Funkcje rekurencyjne Jerzy Pogonowski (MEG) Rekurencyjna przeliczalność Funkcje rekurencyjne

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

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ

O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ Jakie obiekty matematyczne nazywa się nieobliczalnymi? Jakie obiekty matematyczne nazywa się nieobliczalnymi? Najczęściej: a) liczby b) funkcje

Bardziej szczegółowo

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego 2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną G = gdzie: N zbiór symboli nieterminalnych, T zbiór symboli terminalnych, P zbiór

Bardziej szczegółowo

Wykład 10. Stwierdzenie 1. X spełnia warunek Borela wtedy i tylko wtedy, gdy każda scentrowana rodzina zbiorów domkniętych ma niepusty przekrój.

Wykład 10. Stwierdzenie 1. X spełnia warunek Borela wtedy i tylko wtedy, gdy każda scentrowana rodzina zbiorów domkniętych ma niepusty przekrój. Wykład 10 Twierdzenie 1 (Borel-Lebesgue) Niech X będzie przestrzenią zwartą Z każdego pokrycia X zbiorami otwartymi można wybrać podpokrycie skończone Dowód Lemat 1 Dla każdego pokrycia U przestrzeni ośrodkowej

Bardziej szczegółowo

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1. 3. Wykłady 3 i 4: Języki i systemy dedukcyjne. Klasyczny rachunek zdań. 3.1. Monoidy wolne. Niech X będzie zbiorem niepustym. Zbiór ten będziemy nazywać alfabetem. Skończony ciąg elementów alfabetu X będziemy

Bardziej szczegółowo

Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech

Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech anagram(l) = {w : w jest anagaramem v dla pewnego v L}. (a) Czy jeśli L jest

Bardziej szczegółowo

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski Modele Obliczeń Wykład 1 - Wprowadzenie Marcin Szczuka Instytut Matematyki, Uniwersytet Warszawski Wykład fakultatywny w semestrze zimowym 2014/2015 Marcin Szczuka (MIMUW) Modele Obliczeń 2014/2015 1 /

Bardziej szczegółowo

Teoria obliczeń czyli czego komputery zrobić nie mogą

Teoria obliczeń czyli czego komputery zrobić nie mogą Teoria obliczeń czyli czego komputery zrobić nie mogą Marek Zaionc Uniwersytet Jagielloński Materiały do wykładu: P. Odifreddi, Classical Recursion Theory, North Holland 1989. J.H. Hopcroft, J.D. Ullman

Bardziej szczegółowo

Matematyka dyskretna dla informatyków

Matematyka dyskretna dla informatyków Matematyka dyskretna dla informatyków Część I: Elementy kombinatoryki Jerzy Jaworski Zbigniew Palka Jerzy Szymański Uniwersytet im. Adama Mickiewicza Poznań 2007 4 Zależności rekurencyjne Wiele zależności

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

1 Działania na zbiorach

1 Działania na zbiorach M. Beśka, Wstęp do teorii miary, rozdz. 1 1 1 Działania na zbiorach W rozdziale tym przypomnimy podstawowe działania na zbiorach koncentrując się na własnościach tych działań, które będą przydatne w dalszej

Bardziej szczegółowo

Początki informatyki teoretycznej. Paweł Cieśla

Początki informatyki teoretycznej. Paweł Cieśla Początki informatyki teoretycznej Paweł Cieśla Wstęp Przykładowe zastosowanie dzisiejszych komputerów: edytowanie tekstów, dźwięku, grafiki odbiór telewizji gromadzenie informacji komunikacja Komputery

Bardziej szczegółowo

Lista zadań - Relacje

Lista zadań - Relacje MATEMATYKA DYSKRETNA Lista zadań - Relacje Zadania obliczeniowe Zad. 1. Która z poniższych relacji jest funkcją? a) Relacja składająca się ze wszystkich par uporządkowanych, których poprzednikami są studenci,

Bardziej szczegółowo

Teoria miary. WPPT/Matematyka, rok II. Wykład 5

Teoria miary. WPPT/Matematyka, rok II. Wykład 5 Teoria miary WPPT/Matematyka, rok II Wykład 5 Funkcje mierzalne Niech (X, F) będzie przestrzenią mierzalną i niech f : X R. Twierdzenie 1. NWSR 1. {x X : f(x) > a} F dla każdego a R 2. {x X : f(x) a} F

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

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa Zadanie 1. Rozważmy jezyk złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa równe. Narysować diagram minimalnego automatu deterministycznego akceptujacego

Bardziej szczegółowo

Maszyny Turinga. Jerzy Pogonowski. Funkcje rekurencyjne. Zakład Logiki Stosowanej UAM

Maszyny Turinga. Jerzy Pogonowski. Funkcje rekurencyjne. Zakład Logiki Stosowanej UAM Maszyny Turinga Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl Funkcje rekurencyjne Jerzy Pogonowski (MEG) Maszyny Turinga Funkcje rekurencyjne 1 / 29 Wprowadzenie

Bardziej szczegółowo

n=0 Dla zbioru Cantora prawdziwe są wersje lematu 3.6 oraz lematu 3.8 przy założeniu α = :

n=0 Dla zbioru Cantora prawdziwe są wersje lematu 3.6 oraz lematu 3.8 przy założeniu α = : 4. Zbiory borelowskie. Zbiór wszystkich podzbiorów liczb naturalnych będziemy oznaczali przez ω. Najmniejszą topologię na zbiorze ω, w której zbiory {A ω : x A ω \ y}, gdzie x oraz y są zbiorami skończonymi,

Bardziej szczegółowo

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Wykład 4. Określimy teraz pewną ważną klasę pierścieni. Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia

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

Elementy logiki matematycznej

Elementy logiki matematycznej Elementy logiki matematycznej Przedmiotem logiki matematycznej jest badanie tzw. wyrażeń logicznych oraz metod rozumowania i sposobów dowodzenia używanych w matematyce, a także w innych dziedzinach, w

Bardziej szczegółowo

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ Dwa konteksty obliczalności OBLICZALNE i NIEOBLICZALNE problemy (kontekst informatyczny) liczby (kontekst matematyczny) Problem nieobliczalny jest to problem nierozwiązywalny

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k. Funkcje wymierne Jerzy Rutkowski Teoria Przypomnijmy, że przez R[x] oznaczamy zbiór wszystkich wielomianów zmiennej x i o współczynnikach rzeczywistych Definicja Funkcją wymierną jednej zmiennej nazywamy

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

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

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

Zajęcia nr. 3 notatki

Zajęcia nr. 3 notatki Zajęcia nr. 3 notatki 22 kwietnia 2005 1 Funkcje liczbowe wprowadzenie Istnieje nieskończenie wiele funkcji w matematyce. W dodaktu nie wszystkie są liczbowe. Rozpatruje się funkcje które pobierają argumenty

Bardziej szczegółowo

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej

Schemat rekursji. 1 Schemat rekursji dla funkcji jednej zmiennej Schemat rekursji 1 Schemat rekursji dla funkcji jednej zmiennej Dla dowolnej liczby naturalnej a i dowolnej funkcji h: N 2 N istnieje dokładnie jedna funkcja f: N N spełniająca następujące warunki: f(0)

Bardziej szczegółowo

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych Arytmetyka liczb całkowitych Wykład 1 Na początku zajmować się będziemy zbiorem liczb całkowitych Z = {0, ±1, ±2,...}. Zakładamy, że czytelnik zna relację

Bardziej szczegółowo

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia Informacja w perspektywie obliczeniowej Informacje, liczby i obliczenia Cztery punkty odniesienia (dla pojęcia informacji) ŚWIAT ontologia fizyka UMYSŁ psychologia epistemologia JĘZYK lingwistyka nauki

Bardziej szczegółowo

Rozdział 6. Ciągłość. 6.1 Granica funkcji

Rozdział 6. Ciągłość. 6.1 Granica funkcji Rozdział 6 Ciągłość 6.1 Granica funkcji Podamy najpierw dwie definicje granicy funkcji w punkcie i pokażemy ich równoważność. Definicja Cauchy ego granicy funkcji w punkcie. Niech f : X R, gdzie X R oraz

Bardziej szczegółowo

Hierarchia Chomsky ego

Hierarchia Chomsky ego Hierarchia Chomsky ego Gramatyki nieograniczone Def. Gramatyką nieograniczoną (albo typu 0) nazywamy uporządkowaną czwórkę G= gdzie: % Σ - skończony alfabet symboli końcowych (alfabet, nad którym

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

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

Alan M. TURING. Matematyk u progu współczesnej informatyki

Alan M. TURING. Matematyk u progu współczesnej informatyki Alan M. TURING n=0 1 n! Matematyk u progu współczesnej informatyki Wykład 5. Alan Turing u progu współczesnej informatyki O co pytał Alan TURING? Czym jest algorytm? Czy wszystkie problemy da się rozwiązać

Bardziej szczegółowo

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka Gramatyki, wyprowadzenia, hierarchia Chomsky ego Teoria automatów i języków formalnych Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G =

Bardziej szczegółowo

Złożoność obliczeniowa. wykład 1

Złożoność obliczeniowa. wykład 1 Złożoność obliczeniowa wykład 1 Dwa wykłady: wtorek / środa różnice niewielkie Sprawy organizacyjne wtorek: trochę szybciej, parę dodatkowych rzeczy dedykowana grupa ćw. M. Pilipczuka - ale śmiało mogą

Bardziej szczegółowo

domykanie relacji, relacja równoważności, rozkłady zbiorów

domykanie relacji, relacja równoważności, rozkłady zbiorów 1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i

Bardziej szczegółowo

Dowód pierwszego twierdzenia Gödela o. Kołmogorowa

Dowód pierwszego twierdzenia Gödela o. Kołmogorowa Dowód pierwszego twierdzenia Gödela o niezupełności arytmetyki oparty o złożoność Kołmogorowa Grzegorz Gutowski SMP II rok opiekun: dr inż. Jerzy Martyna II UJ 1 1 Wstęp Pierwsze twierdzenie o niezupełności

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.

Bardziej szczegółowo

O ISTOTNYCH OGRANICZENIACH METODY

O ISTOTNYCH OGRANICZENIACH METODY O ISTOTNYCH OGRANICZENIACH METODY ALGORYTMICZNEJ Dwa pojęcia algorytmu (w informatyce) W sensie wąskim Algorytmem nazywa się każdy ogólny schemat procedury możliwej do wykonania przez uniwersalną maszynę

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń Projekt Matematyka dla ciekawych świata spisał: Michał Korch 22 marzec 2018 Szybkie przypomnienie z wykładu Prezentacja

Bardziej szczegółowo

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Elementy Logiki i Teorii Mnogości 2015/2016 Zadanie 1. Oblicz iteracyjnie i rekurencyjnie f(4), gdzie f jest funkcją określoną na zbiorze

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

zbiorów domkniętych i tak otrzymane zbiory domknięte ustawiamy w ciąg. Oznaczamy

zbiorów domkniętych i tak otrzymane zbiory domknięte ustawiamy w ciąg. Oznaczamy 5. Funkcje 1 klasy Baire a. Pod koniec XIX i początkiem XX wieku kilku matematyków zajmowało się problemami dotyczącymi klasyfikacji funkcji borelowskich: między innymi R. Baire, E. Borel, H. Lebesgue

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

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 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11 M. Beśka, Wstęp do teorii miary, rozdz. 2 11 2 Rodziny zbiorów 2.1 Algebry i σ - algebry zbiorów Niech X będzie niepustym zbiorem. Rodzinę indeksowaną zbiorów {A i } i I 2 X nazywamy rozbiciem zbioru X

Bardziej szczegółowo

Języki, automaty i obliczenia

Języki, automaty i obliczenia Języki, automaty i obliczenia Wykład 12: Gramatyki i inne modele równoważne maszynom Turinga. Wstęp do złożoności obliczeniowej Sławomir Lasota Uniwersytet Warszawski 20 maja 2015 Plan 1 Gramatyki 2 Języki

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

Zadania do Rozdziału X

Zadania do Rozdziału X Zadania do Rozdziału X 1. 2. Znajdź wszystkie σ-ciała podzbiorów X, gdy X = (i) {1, 2}, (ii){1, 2, 3}. (b) Znajdź wszystkie elementy σ-ciała generowanego przez {{1, 2}, {2, 3}} dla X = {1, 2, 3, 4}. Wykaż,

Bardziej szczegółowo

IMIĘ NAZWISKO... grupa C... sala Egzamin ELiTM I

IMIĘ NAZWISKO... grupa C... sala Egzamin ELiTM I IMIĘ NAZWISKO............................ grupa C... sala 10... Egzamin ELiTM I 02.02.15 1. 2. 3. 4.. 1. (8 pkt.) Niech X a,b = {(x, y) R 2 : (x b) 2 + (y 1 b )2 a 2 } dla a, b R, a > 0, b 0. Wyznaczyć:

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

Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences. Matematyka Poziom kwalifikacji: II stopnia

Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences. Matematyka Poziom kwalifikacji: II stopnia Nazwa przedmiotu: Kierunek: Rodzaj przedmiotu: obowiązkowy dla wszystkich specjalności Rodzaj zajęć: wykład, ćwiczenia Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences

Bardziej szczegółowo

O pewnych związkach teorii modeli z teorią reprezentacji

O pewnych związkach teorii modeli z teorią reprezentacji O pewnych związkach teorii modeli z teorią reprezentacji na podstawie referatu Stanisława Kasjana 5 i 12 grudnia 2000 roku 1. Elementy teorii modeli Będziemy rozważać język L składający się z przeliczalnej

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

Języki, automaty i obliczenia

Języki, automaty i obliczenia Języki, automaty i obliczenia Wykład 9: Własności języków bezkontekstowych Sławomir Lasota Uniwersytet Warszawski 27 kwietnia 2016 Plan 1 Pompowanie języków bezkontekstowych 2 Własności domknięcia 3 Obrazy

Bardziej szczegółowo