12.07.2015 Views

Marcin Szczuka: Modele Obliczeń. Wykład 3. Maszyny RAM i ...

Marcin Szczuka: Modele Obliczeń. Wykład 3. Maszyny RAM i ...

Marcin Szczuka: Modele Obliczeń. Wykład 3. Maszyny RAM i ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Modele</strong> ObliczeńWykład 3 - <strong>Maszyny</strong> <strong>RAM</strong> i funkcje rekurencyjne<strong>Marcin</strong> <strong>Szczuka</strong>Instytut Matematyki, Uniwersytet WarszawskiWykład fakultatywny w semestrze zimowym 2008/2009<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 1 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 2 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 3 / 42


Random Access Machine (<strong>RAM</strong>)Maszyna o dostępie swobodnym (Random Access Machine – <strong>RAM</strong>) jestjednym z najstarszych sposobów opisu formalnego procesu obliczania.Została zaproponowana w połowie lat czterdziestych XX wieku przez Johnavon Neumanna we współpracy z Johnem Williamem Mauchly i J. PresperEckertem. Miała pomóc w zrozumieniu zasad działania pierwszych maszynelektronowych (EDVAC, ENIAC).Maszyna <strong>RAM</strong>Random Access Machine (<strong>RAM</strong>) składa się z:Taśmy wejściowej, z której maszyna wczytuje dane wejściowe;Taśmy wyjściowej, na której maszyna zapisuje wyniki działania;Nieskończenie wielu rejestrów R 0 , R 1 , . . ., z których każdy możeprzechowywać liczbę całkowitą;Listy instrukcji (programu) Π = (π 1 , . . . , π m ).Przez r i oznaczamy wartość przechowywaną w rejestrze R i .<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 4 / 42


Instrukcje w modelu <strong>RAM</strong>W skład ciągu instrukcji Π mogą wchodzić następujące operacje:LOAD op READ op STORE op WRITE opADD op SUB op MULT op DIV opJUMP et JGTZ et JZERO et HALTop może przyjmować postać:liczby całkowitej – ADD 3;wartości rejestru – MULT r 3 ;wskaźnika do wartości rejestru r ri – STORE r r7 .et etykieta (numer) instrukcji, np. JZERO 7, JGTZ początek.Akumulator i licznikRejestr r 0 jest nazywany akumulatorem i ma specjalne znaczenie. Służyjako przestrzeń robocza do przechowywania danych dla bieżącej operacji.Kolejność wykonywania instrukcji jest kontrolowana przez licznikprogramu κ, który przechowuje numer aktualnie przetwarzanej instrukcji.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 5 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 6 / 42


Przykład obliczenia w <strong>RAM</strong>Gdybyśmy chcieli napisać program, który liczy funkcję{ nnn > 0f(n) =0 w p.p.to wyglądałby on mniej więcej tak:read n to r 1 ;if(r 1 = 0) then return(0)else {r 2 := r 1 ;r 3 := r 1 − 1;while r 3 > 0 {r 2 := r 2 ∗ r 1 ;r 3 := r 3 − 1;};return(r 2 );};<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 7 / 42


Program dla <strong>RAM</strong>Etykieta Instrukcja DziałanieREAD r 1 Wczytanie n do r 1LOAD r 1Wczytanie n do akumulatoraJGTZ pos if(r 1 = 0 )WRITE 0then return(0)JUMP endifSkok na koniec programupos: LOAD r 1 else – r 1 = n do akumulatoraSTORE r 2 r 2 := r 1SUB 1 r 0 := r 0 − 1STORE r 3 r 3 := r 1 − 1while: LOAD r 3 r 3 do akumulatoraJGTZ continue while r 3 > 0JUMP endwhile gdy r 3 = 0 - zakończcontinue: LOAD r 2 r 2 do akumulatoraMULT r 1 r 0 := r 2 ∗ r 1STORE r 2 r 2 := r 2 ∗ r 1LOAD r 3 r 0 := r 2SUB 1 r 0 := r 0 − 1STORE r 3 r 3 := r 3 − 1endwhile: WRITE r 2 return(r 2 )endif: HALT Koniec programu<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 8 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 9 / 42


Złożoność obliczeniowa a model <strong>RAM</strong>Istotna uwagaModel maszyny o dostępie swobodnym jest nierealistyczny, jeżeli założymy,że nieskończenie (przeliczalnie) wiele rejestrów jest w stanie przechowywaćdowolnie duże liczby całkowite bez dodatkowych kosztów związanych zodczytem, zapisem i przetwarzaniem.Przy założeniu stałego kosztu (czasu) wszystkich operacji w maszynie <strong>RAM</strong>moglibyśmy policzyć wartość wyrażenia 2 2k w k krokach, a co za tym idziekoszt obliczeniowy dla tej funkcji byłby liniowy. Tymczasem w maszynieTuringa samo zapisanie wyniku (reprezentacja binarna) na taśmie wymagaco najmniej 2 k kroków.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 10 / 42


Złożoność operacji <strong>RAM</strong>Dla otrzymania bardziej sensownych oszacowań złożoności obliczeniowejprocedur realizowanych przez model <strong>RAM</strong> wprowadza się kosztywykonywania poszczególnych operacji. Koszty operacji są uzależnione odrozmiaru argumentu.Będziemy przyjmować, że koszt przetworzenia liczby całkowitej n jestrówny jej długości w zapisie pozycyjnym (binarnym) – log n.Koszt niektórych operacji <strong>RAM</strong>ADD/SUB r 1 – log(r 0 ) + log(r 1 )MULT 2 – log(r 0 ) + 1LOAD r r3 – log(r 3 ) + log(r r3 )STORE r 7 – log(r 0 ) + 3<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 11 / 42


Złożoność obliczenia w <strong>RAM</strong>Złożoność obliczeniową <strong>RAM</strong> możemy teraz przedefiniować jako sumękosztów wszystkich wykonanych w algorytmie kroków.Analogicznie, możemy zdefiniować złożoność pamięciową obliczenia w<strong>RAM</strong> jako największy obszar jaki zajmowały rejestry (zapisane w nichliczby) w trakcie wykonywania poszczególnych kroków programu, tj.maxκ∑log(|r i |),igdzie κ jest licznikiem programu (pilnuje numeru wykonywanej instrukcji).Powrót do przykładuW przedstawionym przykładzie obliczania funkcji n n złożoności policzone zuwzględnieniem kosztu operacji to odpowiednio:O(n 2 log n) – złożoność czasowa;O(n log n) – złożoność pamięciowa.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 12 / 42


Model <strong>RAM</strong> vs. maszyny TuringaSymulacja TM w modelu <strong>RAM</strong>Twierdzenie: Jeżeli zadanie rozpoznania języka L przez deterministycznąmaszynę Turinga M ma złożoność czasową f(n) (n – rozmiar danychwejściowych) to istnieje program <strong>RAM</strong>, który oblicza funkcjęcharakterystyczną χ L języka L w czasie O(f(n)).Symulacja programu <strong>RAM</strong> w modelu TMTwierdzenie: Jeżeli program Π maszyny <strong>RAM</strong> wylicza funkcjęcałkowitoliczbową φ w czasie f(n) to istnieje deterministyczna maszynaTuringa M o siedmiu taśmach taka, że M oblicza φ w czasie O(f(n) 3 ).Dowody (stosunkowo elementarne) obu tych twierdzeń można znaleźć wrozdziale 2.6 książki:C.H. PapadimitriouZłożoność obliczeniowa.WNT, Warszawa, 2002.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 13 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 14 / 42


MotywacjaStwierdziliśmy już wcześniej, że jednym ze sposobów reprezentacjiobliczenia może być utożsamienie go z funkcją całkowitoliczbową (a nawetnaturalną) która przyporządkowuje wyjście wejściu.Oczywiście natychmiast pojawia się pytanie, o to czy można jakoś dobrzewyróżnić klasy funkcji odpowiadających sensownym rodzajom obliczeń.Inną kwestią jest jak powiązać klasy funkcji całkowitoliczbowych zpoznanymi wcześniej modelami obliczeń.Podstawowe wymaganiaJest jak najbardziej na miejscu wymagać od zbiorów funkcji które uznamyza “obliczalne”, aby zawierały funkcje intuicyjnie możliwe do wyliczenia.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 15 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 16 / 42


Funkcje elementarneKlasa funkcji elementarnie rekurencyjnych jest intuicyjnie najprostszą“sensowną” klasą funkcji, dla których jesteśmy skłonni przyznać, że mogąbyć obliczalne.Definicja: Klasą funkcji elementarnie rekurencyjnych, lub krócejelementarnych EL nazwiemy najmniejszy zbiór funkcji z N w N taki że:1 EL zawiera następujące funkcje specjalne:1 Dwuargumentową funkcję dodawania + : N 2 → N;2 Dwuargumentową funkcję mnożenia ∗ : N 2 → N;3 Dwuargumentową funkcję f : N 2 → N taką, że f(m, n) = |m − n|;4 Dwuargumentową funkcję g : N 2 → N taką, że g(m, n) = ⌊ m n ⌋;5 n-argumentowe funkcje rzutu na i-tą współrzędną dla wszystkichn, i ∈ N i 0 < i ≤ n. Przy oznaczeniu U n i mamy U n i (x 1, . . . , x n ) = x i .2 EL jest zamknięta ze względu na: złożenie, sumowanie, produkt.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 17 / 42


Zamkniętość funkcji elementarnych1 Jeżeli f jest funkcją m argumentową, a g 1 , . . . , g m funkcjami nargumentowymi to złożeniem f z g 1 , . . . , g m nazywamy taką funkcjęn-argumentową K(f; g 1 , . . . , g m ), że dla x 1 , . . . , x n ∈ NK(f; g 1 , . . . , g m )(x 1 , . . . , x n ) = f(g 1 (x 1 , . . . , x n ), . . . , g m (x 1 , . . . , x n ))2 Jeżeli f jest funkcją m argumentową to powiemy, że m argumentowafunkcja g została otrzymana z f przez podsumowanie, co oznaczamyprzez g = ∑ f, jeśli dla x 1 , . . . , x m ∈ Ng(x 1 , . . . , x m ) =x m ∑y=0g(x 1 , . . . , x m−1 , y)3 Jeżeli f jest funkcją m argumentową to powiemy, że m argumentowafunkcja g została otrzymana z f przez wymnożenie, co oznaczamyprzez g = ∏ f, jeśli dla x 1 , . . . , x m ∈ Ng(x 1 , . . . , x m ) =x m ∏y=0g(x 1 , . . . , x m−1 , y)<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 18 / 42


Przykłady funkcji elementarnychFunkcje elementarne mają różne pożyteczne własności. W szczególnościwiele intuicyjnie elementarnych funkcji należy do tej klasy.TwierdzenieNastępujące funkcje działające na liczbach naturalnych są elementarne:n-argumentowa funkcja stała C n m(x 1 , . . . , x n ) = m, dla n > 0, m ∈ N;Funkcja następnika s(n) = n + 1;{ { 0 gdy n = 01 gdy n = 0Funkcje sg(n) =1 gdy n ≠ 0 i sg(n) = 0 gdy n ≠ 0 ;Funkcja wykładnicza f(x, y) = x y ;Silnia n!;Funkcja poprzednika p(n) ={ 0 gdy n = 0n − 1 gdy n ≠ 0 .<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 19 / 42


Dowód1 C0 1 jest elementarna, bo C1 0 (x) = |x − x| dla x ∈ N;2 sg jest elementarna, bo sg(x) = ∏ y


Relacje elementarneDefinicja relacji elementarnejRelację n-argumentową R nazywamy elementarną, jeśli jej funkcjacharakterystyczna χ R jest elementarna.Taka definicja relacji elementarnej pociąga za sobą pewne pożytecznewłasności relacji elementarnych.Własności relacji elementarnychTwierdzenie: Relacje elementarne mają następujące własności:1 Jeżeli relacje n-argumentowe R i S są elementarne to relacje R ∪ S,R ∩ S, R \ S także są elementarne.2 Każda skończona relacja jest elementarna.3 Binarne relacje ≤,


Definiowanie przez przypadkiBardzo często przy definiowaniu funkcji posługujemy się definicjamiwariantowymi (np. poprzednio podane sgn). Klasa funkcji elementarnychjest tak skonstruowana, że definiowanie przez przypadki (wariantowe) jestuprawnione. Mówi o tym następujące twierdzenie:TwierdzenieNiech g 1 , . . . , g m będą elementarnymi funkcjami o n argumentach, aR⋃ 1 , . . . , R m elementarnymi relacjami n wymiarowymi takimi, żet≤m R t = N n . Wtedy funkcja⎧g 1 (x 1 , . . . , x n ) gdy (x 1 , . . . , x n ) ∈ R 1⎪⎨ g 2 (x 1 , . . . , x n ) gdy (x 1 , . . . , x n ) ∈ R 2f(x 1 , . . . , x n ) =..⎪⎩g m (x 1 , . . . , x n ) gdy (x 1 , . . . , x n ) ∈ R mtakże jest elementarna.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 22 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 23 / 42


Idea funkcji pierwotnie rekurencyjnychBadania nad funkcjami, które mogą być realizowane algorytmicznie zostałypodjęte niezależnie przez kilku badaczy już na przełomie lat dwudziestych itrzydziestych XX wieku. Powstało kilka konkurencyjnych podejść, w tymfunkcje pierwotnie i częściowo rekurencyjne (Kleene).Funkcje pierwotnie rekurencyjneKleene wyróżniał podstawowe funkcje obliczalne:Funkcja stała (równa 0) 0(n) ≡ 0;Następnik s(n) = n + 1;Uin – n-argumentowe funkcje rzutu na i-tą współrzędną dla wszystkichn, i ∈ N i 0 < i ≤ n.Oraz wymagał by klasa tych funkcji była zamknięta ze względu na operacjezłożenia i rekursji pierwotnej.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 24 / 42


Rekursja pierwotnaNiech g( −→ x ), h( −→ x , m, y) dla −→ x ∈ N n−1 będą funkcjami odpowiednio n − 1i n + 1 argumentowymi. Wtedy n-argumentową funkcję f( −→ x , m)definiujemy przez pierwotną (prymitywną) rekursję jako:f( −→ x , 0) = g( −→ x )f( −→ x , m + 1) = h( −→ x , m, f( −→ x , m))Tak zdefiniowaną operację rekursji można traktować jako przekształcenie:Rek : N Nn−1 × N Nn+1 ↦→ N NnMówimy, że funkcja f( −→ x , m) jest zadana przez niesparametryzowanąrekursję pierwotną gdy g jest stała.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 25 / 42


Klasa funkcji pierwotnie rekurencyjnychDefinicjaKlasą funkcji pierwotnie rekurencyjnych (PREK) nazwiemy najmniejszyzbiór funkcji naturalnych taki, że:1 Funkcja zerowa, następnik i rzutowania należą do PREK;2 PREK jest zamknięta na operacje złożenia, i rekursji pierwotnej(sparametryzowanej i niesparametryzowanej)Powiemy, że relacje jest pierwotnie rekurencyjna, jeśli jej funkcjacharakterystyczna należy do PREK.Zauważmy, że wszystkie tak określone funkcje pierwotnie rekurencyjne sątotalne.Intuicyjnie możemy myśleć o klasie PREK jako o funkcjach które mogąbyć wyliczane przez programy wykorzystujące odwołania rekurencyjne, alenie zawierające pętli while i instrukcji skoku goto. Dokładniej mówiąc,liczba wykonań każdej pętli musi być znana z góry.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 26 / 42


Przykłady funkcji pierwotnie rekurencyjnychNiemal wszystkie (intuicyjnie) podstawowe funkcje totalne są pierwotnierekurencyjne. Na przykład:Suma dwóch liczb naturalnych jest w PREK gdyżsuma(x, 0) = U 1 1 (x)suma(x, y + 1) = s(U 3 3 (x, y, suma(x, y)))Iloczyn dwóch liczb naturalnych jest w PREK gdyżprod(x, 0) = 0(x)prod(x, y) = x + prod(x, y − 1) == suma(U 3 1 (x, y, prod(x, y)), U 3 3 (x, y, prod(x, y − 1)))Funkcje takie jak: x y , x − y, sg(x), dzielenie całkowite, min, max,modulo, ...<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 27 / 42


Własności funkcji pierwotnie rekurencyjnychTwierdzenieKażda funkcja elementarna jest funkcją pierwotnie rekurencyjną. Instniejąnieelementarne funkcje pierwotnie rekurencyjne. ZatemEL PREKTwierdzenie – ograniczoność rekursji pierwotnejNiech g( −→ x ), h( −→ x , m, y) będą elementarne dla −→ x ∈ N n−1 , a funkcja fpowstaje z g i h przez zastosowanie rekursji pierwotnej. Jeżeli istniejen-argumentowa funkcja elementarna k taka, że dla każdego(x 1 , . . . , x n ) ∈ N n zachodzi:to f jest elementarna.f(x 1 , . . . , x n ) ≤ k(x 1 , . . . , x n )<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 28 / 42


Własności funkcji pierwotnie rekurencyjnychTwierdzenie (Robinson)Każda funkcja z f(x) ∈ PREK 1 (jednoargumentowa funkcja pierwotnierekurencyjna) może być otrzymana z s(x) i q(x) = df x − ⌊ √ x⌋ 2 zapomocą skończonej liczby:Dodawań (f + g)(x) = f(x) + g(x);Superpozycji (f ◦ g)(x) = f(g(x));Iteracji takich że: (If)(0) = 0, (If)(n + 1) = f((If)(n)).{ x − y gdy x ≥ yUwaga: Tutaj x − y =0 gdy x < y .TwierdzenieIstnieje funkcja uniwersalna F (n, x) dla PREK 1 ale nie należy ona doPREK. (Patrz następny slajd.)<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 29 / 42


Funkcja uniwersalna dla PREK 1Szkic dowodu twierdzenia z poprzedniego slajdu:Z twierdzenia Robinsona wynika, że funkcji w PREK 1 jest przeliczalniewiele. Możemy je zatem ustawić w ciąg (f i ) i∈N .Funkcją uniwersalna dla PREK 1 będzie zdefiniowana jakoF (n, x) = f n (x).Pokażemy, że F /∈ PREK.1 Przypuśćmy, że F ∈ PREK, wtedy g(x) = F (x, x) + 1 ∈ PREK 1 .2 Jeśli g ∈ PREK 1 to istnieje takie n 0 , że g = f n0 .3 Wtedy g(n 0 ) = f n0 (n 0 ), ale jednocześnieg(n 0 ) = F (n 0 , n 0 ) + 1 = f n0 (n 0 ) + 1 i sprzeczność.Zatem F /∈ PREK.UWAGI: Powyższy dowód jest prawdziwy pod warunkiem prawdziwościnieudowodnionego tw. Robinsona. Funkcja F nie jest pierwotnierekurencyjna, ale intuicyjnie jest obliczalna, więc być może klasa PREKjest zbyt uboga.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 30 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 31 / 42


Zauważmy, że tak zdefiniowana funkcja f może nie być określoną na całejdziedzinie (totalną) lecz funkcją częściową.Jeżeli f( −→ x ) = µyg( −→ x , y) i z tego, że g jest określona dla wszystkich −→ x i ywynika, że f jest określona dla wszystkich −→ x to mówimy że f powstaje z gza pomocą minimum efektywnego.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 32 / 42MinimalizacjaDla poradzenia sobie z problemami wynikającymi ze zbyt słabych własnościklasy funkcji pierwotnie rekurencyjnych musimy wzbogacić nasz warsztat ooperację minimum, która pozwala “domknąć” klasę funkcji obliczalnych.DefinicjaNiech g : N n+1 ↦→ {0, 1} Powiemy, że funkcja n-argumentowa f jestzdefiniowana przez minimalizację g, jeśli dla −→ x ∈ N nf( −→ { min{y : g(−→ x , y) = 0} gdy znajdziemy takie−→ x , yx ) =nieznanaw p.p.Zapisujemy to jako f( −→ x ) = µyg( −→ x , y).


Funkcje częściowo rekurencyjneCZREKNajmniejszą klasę funkcji zawierającą funkcje podstawowe (zero, następnik,rzutowania) i zamkniętą na złożenie, rekursję i minimum nazywamy klasąfunkcji częściowo rekurencyjnych i oznaczamy CZREK.REKNajmniejszą klasę funkcji totalnych zawierającą funkcje podstawowe (zero,następnik, rzutowania) i zamkniętą na złożenie, rekursję i minimumefektywne nazywamy klasą funkcji rekurencyjnych i oznaczamy REK.W oczywisty sposób:EL PREK REK CZREKUWAGA: Bardziej będzie nas interesować klasa CZREK, gdyż to onalepiej odpowiada intuicji klasy funkcji obliczalnych.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 33 / 42


Funkcje istotnie częściowo rekurencyjneDobrym przykładem funkcji istotnie częściowo rekurencyjnej jest funkcjaodwrotna do funkcji różnowartościowej. Jeśli f : N ↦→ N, taka żef(x) = f(y) ⇒ x = y to (częściową) funkcję odwrotną{f −1 y gdy ∃y f(y) = x(x) =nieznana w p.p.możemy wyznaczyć jako µy(f(y) = x).Wcześniej widzieliśmy już przykład funkcji uniwersalnej dla PREK 1 , któranie była pierwotnie rekurencyjna. Można wszakże pokazać, że funkcjauniwersalna dla PREK 1 jest w REK.Niestety wspomniana funkcja uniwersalna nie jest zdefiniowanakonstruktywnie i jakkolwiek stanowi przykład funkcji pochodzącej zCZREK \ PREK, to nie jest zbyt przydatna.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 34 / 42


Funkcja AckermanaPrzykład (bardzo istotny) funkcji, która jest rekurencyjna, ale niepierwotnie rekurencyjna stanowi funkcja Ackermana.Funkcja AckermanaDla m, n ∈ N:1 Ack(0, n) = n + 12 Ack(m + 1, 0) = Ack(m, 1)3 Ack(m + 1, n + 1) = Ack(m, Ack(m + 1, n))Funkcja Ackermana rośnie szybciej niż każda funkcja w PREK 1 tzn.∀ f∈PREK 1∃ m ∀ n>m Ack(n, n) > f(n)Nota bene: Funkcja Ackermana jest wcześniejsza niż teoria funkcjiobliczalnych. Także zakres przydatności funkcji Ackermana wykracza pozateorię obliczeń.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 35 / 42


Ograniczoność minimum efektywnegoNieco światła na wzajemne relacje między klasą funkcji pierwotnierekurencyjnych, a funkcjami rekurencyjnymi rzuca twierdzenie o minimumograniczonym.Twierdzenie o minimum ograniczonymNiech:1 g( −→ x , y) ∈ PREK dla −→ x ∈ N n , y ∈ N;2 f( −→ x ) = µy(g( −→ x , y) = 0) i to minimum jest efektywne (f jesttotalna);3 k( −→ x ) ∈ PREK dla −→ x ∈ N n ;4 ∀−→ x ∈N nf( −→ x ) ≤ k( −→ x ).Wtedy f jest pierwotnie rekurencyjna.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 36 / 42


Plan wykładu1 Maszyna <strong>RAM</strong>Opis maszyny <strong>RAM</strong>Przykład obliczenia <strong>RAM</strong>Złożoność obliczania w <strong>RAM</strong>2 Funkcje rekurencyjneFunkcje elementarnie rekurencyjneFunkcje pierwotnie rekurencyjneFunkcje częściowo rekurencyjneZbiory rekurencyjnie przeliczalne<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 37 / 42


Problemy obliczalne jako zbioryZagadnienie obliczalności (opisywalności) różnych zagadnień możnaprzeformułować jako zagadnienie opisywania zbioru obiektów spełniającychokreślone warunki.Na przykład:W zbiorze wszystkich grafów nieskierowanych wyznaczyć podzbiórgrafów, które mają klikę o zadanej mocy k ∈ N;W zbiorze liczb naturalnych wyznaczyć zbiór wszystkich liczbpierwszych.Charakteryzacji zbiorów tego typu dokonujemy przez określenie ich funkcjicharakterystycznej. W ten sposób możemy wprowadzić pojęcie zbiorupierwotnie rekurencyjnego i rekurencyjnego. Problem może się pojawić przyfunkcjach częściowo rekurencyjnych.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 38 / 42


Zbiory rekurencyjneZbiory pierwotnie rekurencyjnePowiemy, że zbiór A ⊂ N jest pierwotnie rekurencyjny jeśli jego funkcjacharakterystyczna χ A jest w PREK.Zbiory rekurencyjnePowiemy, że zbiór A ⊂ N jest pierwotnie rekurencyjny jeśli jego funkcjacharakterystyczna χ A jest rekurencyjna. Zbiory rekurencyjne mają ścisłyzwiązek z obliczalnością i rozstrzygalnością.Rodzina zbiorów pierwotnie rekurencyjnych (rekurencyjnych) jest zamkniętaze względu na ∩, ∪, \.∅, N są pierwotnie rekurencyjne z funkcjami charakterystycznymirównymi (odpowiednio) stale 0 i 1.Dowolny skończony podzbiór A = {n 1 , . . . , n k }, n i , k ∈ N jestpierwotnie rekurencyjny z funkcją charakterystycznąχ A (x) = sg(|(x − n 1 ) · . . . · (x − n k )|).<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 39 / 42


Zbiory rekurencyjnie przeliczalneDefinicjaZbiór A ⊂ N jest rekurencyjnie przeliczalny (re – recursivelyenumerable), jeśli istnieje funkcja pierwotnie rekurencyjna F (x, y) taka, że:x ∈ A ⇔ ∃ y∈N (F (x, y) = 0).Zbiory rekurencyjnie przeliczalne są istotne, gdyż za ich pomocą możnacharakteryzować zbiory funkcji (częściowo, pierwotnie) rekurencyjnych ipokazywać istotne związki między nimi. Omówimy kilka takich zależności.Twierdzenie o przeciwobrazieNiech f ∈ PREK oraz f(x) ≥ x dla x ∈ N. Wtedy przeciwobrazR f = {y : ∃ x∈N f(x) = y} jest zbiorem pierwotnie rekurencyjnym.Dowód: Ponieważ f(y) ≥ y, wystarczy rozpatrywaćy∏χ Rf (y) = sg(|f(x) − y|).x=0<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 40 / 42


Własności zbiorów rekurencyjnieprzeliczalnychTwierdzenieNiech ∅ ≠ A ⊂ N. A jest re wtedy i tylko wtedy, gdy istnieje f ∈ PREK 1taka, że R f = A.Twierdzenie (Post)Jeżeli A ⊂ N, A jest re i N \ A jest re to A jest zbiorem rekurencyjnym.Zdefiniujemy pojęcie wykresu funkcji f : D f ↦→ N dla D f ⊂ N n przez:GF (f) = {( −→ x , y) ∈ N n+1 : −→ x ∈ D f ∧ f( −→ x ) = y}.Twierdzenie o wykresieFunkcja f : N n ↦→ N jest częściowo rekurencyjna wtedy i tylko wtedy, gdyGF (f) jest re.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 41 / 42


Pożytki ze zbiorów reDzięki zbiorom rekurencyjnie przeliczalnym można pokazać kilka istotnychfaktów dotyczących interesującej nas klasy funkcji częścioworekurencyjnych.Jeżeli f ∈ CZREK 1 i f ⊂ g, to g nazwiemy rozszerzeniem f. Jeżeli gjest określona dla wszystkich argumentów to nazywamy ją uzupełnieniemf.TwierdzenieIstnieje funkcja f ∈ CZREK 1 taka, że R f = {0, 1} i nie istniejerekurencyjne uzupełnienie dla f.Wniosek pośredniIstnieje zbiór rekurencyjnie przeliczalny, który nie jest rekurencyjny.<strong>Marcin</strong> <strong>Szczuka</strong> (MIMUW) <strong>Modele</strong> Obliczeń 2008/2009 42 / 42

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!