1 Logika i teoria mnogoÅ›ci WykÅ‚ad 13 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, relacje i zbiory), które nazywa siÄ™ rekurencyjnymi. Uwaga: Od tego momentu w dalszych rozważaniach do zbioru liczb naturalnych doÅ‚Ä…czamy liczbÄ™ zero. Funkcje rekurencyjne, to takie funkcje o argumentach i wartoÅ›ciach naturalnych, które sÄ… albo szczególnie prostej postaci (np. funkcje staÅ‚e lub identyczność), albo powstajÄ… z tych pierwszych w wyniku zastosowania skoÅ„czonej liczby dopuszczalnych operacji (takich jak skÅ‚adanie funkcji czy definiowanie indukcyjne). Natomiast zbiór jest rekurencyjny, gdy jego funkcja charakterystyczna jest rekurencyjna. Funkcje rekurencyjne sÄ… modelem funkcji czy relacji obliczalnych, to znaczy takich, których wartość dla dowolnych argumentów można podać w skoÅ„czonej liczbie kroków w sposób mechaniczny. PojÄ™cie obliczalnoÅ›ci jest nieÅ›cisÅ‚e i może być rozumiane jedynie w sposób intuicyjny, nieformalny, rekurencyjność zaÅ› jest pojÄ™ciem Å›ciÅ›le matematycznym. Obiekty rekurencyjne można zdefiniować w inny, równoważny sposób mianowicie podzbiór A zbioru liczb naturalnych nazywamy rekurencyjnym, jeÅ›li istnieje algorytm rozstrzygajÄ…cy dla każdej liczby naturalnej, czy należy ona do zbioru A czy nie. Algorytm to procedura mechaniczna: skÅ‚ada siÄ™ ze skoÅ„czonej liczby operacji i może być realizowany np. przez maszynÄ™ Turinga. Maszyna Turinga to abstrakcyjny, matematyczny model komputera sÅ‚użący do wykonywania algorytmów. 2 Logika i teoria mnogoÅ›ci WykÅ‚ad 13 Problem jest rozwiÄ…zalny na komputerze (obliczalny), jeÅ›li da siÄ™ zdefiniować rozwiÄ…zujÄ…cÄ… go maszynÄ™ Turinga (algorytm). Okazuje siÄ™, że można ponumerować wszystkie maszyny Turinga, co za tym idzie wszystkie algorytmy (procedury) czyli wszystkie problemy rozwiÄ…zalne. Funkcje rekurencyjne Funkcje rekurencyjne to pojÄ™cie matematyczne obejmujÄ…ce kilka znaczeÅ„. BÄ™dziemy rozróżniać funkcje rekurencyjne (obliczalne), funkcje pierwotnie rekurencyjne, częściowo rekurencyjne i elementarnie rekurencyjne. Najszersza klasa to funkcje częściowo rekurencyjne. Rozważamy funkcje częściowe nad N o dowolnej liczbie argumentów o wartoÅ›ciach naturalnych (okreÅ›lenie funkcje częściowe - oznacza, że nie dla każdego argumentu musi istnieć wartość takich funkcji). Funkcje częściowo rekurencyjne, to funkcje otrzymane z funkcji bazowych (zero, nastÄ™pnik i rzutowania) za pomocÄ… trzech operacji: skÅ‚adania, rekursji prostej i operacji minimum. Oto Å›cisÅ‚e definicje tych pojęć: Niech f : A1 × A2 × × Ak N. JeÅ›li AiÍð N "ði d" k, to mówimy, że f jest okreÅ›lona na liczbach naturalnych i stosujemy zapis: f: Nk -- N, który czytamy: f jest k-argumentowÄ… funkcjÄ… częściowÄ… o argumentach i wartoÅ›ciach w N. Funkcje bazowe: Funkcje zerowe staÅ‚e 0k(n1, & ,nk) = 0, w szczególnoÅ›ci funkcja jednoargumentowa 0: 0(n) = 0, gdy k = 1; NastÄ™pnik S: S(n) = n+1 (inne oznaczenia: n+, succ(n)); Rzutowania: Pðik(n1,& ,nk) = ni, gdzie ke"1, id"k. 3 Logika i teoria mnogoÅ›ci WykÅ‚ad 13 Mówimy, że zbiór funkcji F jest zamkniÄ™ty ze wzglÄ™du na n-argumentowÄ… operacjÄ™ Åš, jeÅ›li z faktu, że fi Îð F dla i d" n wynika, że Åš(f1,& ,fn) Îð F. Operacje: SkÅ‚adanie funkcji: funkcja f: Nk -- N powstaje przez skÅ‚adanie funkcji h: Nl -- N z funkcjami g1,& ,gl: Nk -- N, jeżeli zachodzÄ… równoÅ›ci: (*) D( f ) = { n : n " D(gi ) "i '" (g1(n),..., gl (n))" D(h) }; (**) f (n) = h(g1(n),...,gl (n)) "n " D( f ) . Rekursja prosta (definiowanie przez indukcjÄ™): funkcja f: Nk+1 -- N powstaje przez rekursjÄ™ prostÄ… z funkcji h: Nk+2 -- N i funkcji g: Nk -- N, jeżeli dla dowolnego n Îð N i dowolnego m " Nk speÅ‚nione sÄ… równania: (*) f (0,m) = g(m); f (S(n),m) = h( f (n, m),n, m). (**) Szczególnym przypadkiem tej operacji jest tzw. schemat czystej iteracji, który prowadzi od funkcji h(n) do funkcji f(n) okreÅ›lonej przez równania: f (0) = 0, Å„Å‚ òÅ‚ f (n +1) = h( f (n)). ół Operacja minimum: funkcja f: Nk -- N powstaje z funkcji h: Nk+1 -- N przez zastosowanie operacji minimum, co zapisujemy: f (n) = ( y)[h(n, y) = 0] n " gdy dla dowolnego Nk mamy: h(n,m) = 0 h(n,i) (*) jeÅ›li istnieje takie m, że oraz wszystkie wartoÅ›ci dla f (n) = m f (n) ih(n,m) = 0 takie, że ). f (n) (**) jeÅ›li takiego m nie ma, to jest nieokreÅ›lone. Minimum efektywne: Jeżeli funkcja h: Nk+1 -- N jest taka, że "n "m h(n,m) = 0 , to o operacji minimum zastosowanej do funkcji h mówimy, że jest efektywna. OperacjÄ™ minimum ograniczonÄ… jedynie do funkcji majÄ…cych powyższÄ… wÅ‚asność nazywamy minimum efektywne. 4 Logika i teoria mnogoÅ›ci WykÅ‚ad 13 Minimum ograniczone: PewnÄ… modyfikacjÄ… operacji minimum jest h(n,m) minimum ograniczone, które funkcji przyporzÄ…dkowuje funkcjÄ™ f = ( y d" x)[h(n, y) = 0] okreÅ›lonÄ… nastÄ™pujÄ…co: ( y)[h(n, y) = 0 '" y d" x] gdy taki y istnieje Å„Å‚ f (n, x) = òÅ‚ 0 gdy taki y nie istnieje ół Def. 1. Klasa funkcji częściowo rekurencyjnych to najmniejsza klasa funkcji częściowych nad N zawierajÄ…ca funkcje bazowe i zamkniÄ™ta ze wzglÄ™du na skÅ‚adanie, rekursjÄ™ prostÄ… i operacjÄ™ minimum. Def. 2. Funkcje rekurencyjne (obliczalne) to te funkcje częściowo rekurencyjne, które sÄ… caÅ‚kowite (okreÅ›lone dla wszystkich argumentów naturalnych). Uwaga 1: Zbiór funkcji rekurencyjnych okreÅ›lamy jako najmniejszy zbiór funkcji zawierajÄ…cy funkcje bazowe oraz zamkniÄ™ty ze wzglÄ™du na operacje skÅ‚adania, rekursji prostej i minimum efektywnego. Uwaga 2: Operacja minimum nie jest obliczalna, to znaczy nie istnieje maszyna Turinga, o której wiemy, że dla dowolnej funkcji rekurencyjnej f operacja brania jej minimum zakoÅ„czy siÄ™ w skoÅ„czonym czasie. Aby można byÅ‚o oczekiwać istnienia takiej maszyny funkcja rekurencyjna f musi speÅ‚niać warunek efektywnoÅ›ci. Jednak dla takiej klasy funkcji (rekurencyjne o wÅ‚asnoÅ›ci efektywnoÅ›ci) operacja minimum równoważna jest operacji minimum ograniczonego. Uwaga 3: Funkcje rekurencyjne można równoważnie zdefiniować jako te funkcje, dla których istnieje maszyna Turinga obliczajÄ…ca ich wartoÅ›ci. Def. 3. Zbiór funkcji pierwotnie rekurencyjnych jest to najmniejszy zbiór funkcji nad N zawierajÄ…cy funkcje bazowe i zamkniÄ™ty ze wzglÄ™du na skÅ‚adanie i rekursjÄ™ prostÄ…. Uwaga 4: ZachodzÄ… nastÄ™pujÄ…ce inkluzje: PRek Íð Rek Íð CzRek, gdzie PRek - zbiór funkcji pierwotnie rekurencyjnych, Rek zbiór funkcji rekurencyjnych, CzRek zbiór funkcji częściowo rekurencyjnych. 5 Logika i teoria mnogoÅ›ci WykÅ‚ad 13 Uwaga 5: Zbiory PRek oraz CzRek sÄ… równoliczne ze zbiorem liczb naturalnych. Wniosek: Zbiór funkcji obliczalnych jest przeliczalnym podzbiorem zbioru mocy continuum wszystkich funkcji f: N N. Okazuje siÄ™, że znane funkcje sÄ… najczęściej pierwotnie rekurencyjne, czyli nie znamy wiÄ™kszoÅ›ci funkcji N N. PrzykÅ‚ady: a) definiowanie staÅ‚ych przez zÅ‚ożenie operacji nastÄ™pnika: 1 = S(0) = 0+; 2 = S(S(0)) = (0+)+;& ,n = Sn(0); 0 + m = m Å„Å‚ b) dodawanie przez rekursjÄ™ prostÄ…: ; òÅ‚ ółS(n) + m = S(n + m) 0 Å" m = m Å„Å‚ c) mnożenie: ; òÅ‚ ółS(n) Å" m = n Å" m + m (0)!= 1 Å„Å‚ d) silnia(n) = n! ; òÅ‚ ół(S(n))!= S(n) Å" (n)! power(m,0) = 1 Å„Å‚ e) potÄ™ga(m,n) = power(m,n) = mn: ; òÅ‚ power(m, S(n)) = m Å" power(m, n) ół P(0) = 0 Å„Å‚ f) poprzednik - P(n) = n- : ; òÅ‚P(S (n)) = n ół Å„Å‚m - n gdy m e" n m Å„Å‚ - 0 = m m g) odejmowanie ograniczone - - n = ; òÅ‚ òÅ‚ 0 gdy m < n ółm - S(n) = P(m - n) ół | m h) wartość bezwzglÄ™dna różnicy: - n |= (m - n) + (n - m) ; 1 gdy m = n Å„Å‚ (=)(m,n) = i) Równość sprawdzenie, czy dwie liczby sÄ… równe: òÅ‚ ół0 gdy m `" n (=)(m,n)= 1- | m - n |; j) Reszta z dzielenia n przez m (n mod m): 0 mod m = 0 Å„Å‚ òÅ‚ ółS(n) mod m = (n mod m +1) - m Å" (=)(n mod m, P(m)) Uwaga 6: Nie wszystkie funkcje rekurencyjne sÄ… pierwotnie rekurencyjne. 6 Logika i teoria mnogoÅ›ci WykÅ‚ad 13 PrzykÅ‚ad: Funkcja Eckermanna odkryta w 1928 r. jest funkcjÄ… rekurencyjnÄ…, ale nie jest pierwotnie rekurencyjna. ¨(0,n) = n +1 Å„Å‚ ôÅ‚ ¨(m +1,0) = ¨(m,1) òÅ‚ Definicja indukcyjna tej funkcji: ôÅ‚¨(m +1,n +1) = ¨(m,¨(m +1,n)) ół Funkcja powyższa charakteryzuje siÄ™ bardzo szybkim wzrostem, roÅ›nie szybciej niż jakakolwiek funkcja pierwotnie rekurencyjna. Relacje pierwotnie rekurencyjne Def. 4. RelacjÄ™ R o polu N nazywamy pierwotnie rekurencyjnÄ… (rekurencyjnÄ… równoważnie obliczalnÄ…), jeÅ›li istnieje funkcja f Îð PRek (f Îð Rek) taka, że (m1,...,mk )" R Ô! f (m1,...,mk ) = 0 . PrzykÅ‚ad: NastÄ™pujÄ…ce relacje sÄ… pierwotnie rekurencyjne: x d" y Ô! x - y = 0 Nierówność nieostra: ; Nierówność ostra: x < y Ô! (x +1) - y = 0 ; Równość: x = y Ô! | x - y |= 0 . PrzykÅ‚ad: Wykazać, że jeÅ›li f1 i f2ÎðPRek, a R jest relacjÄ… pierwotnie rekurencyjnÄ…, to f1(n1,...,nk ) gdy (n1,...,nk )" R Å„Å‚ F(n1,...,nk ) = funkcja jest funkcjÄ… pierwotnie òÅ‚ f2(n1,...,nk ) gdy (n1,...,nk ) " R ół rekurencyjnÄ…. Zbiory pierwotnie rekurencyjne Def. 5. Zbiór AÍðN nazywamy zbiorem pierwotnie rekurencyjnym (rekurencyjnym m" A Ô! f (m) = 0 = obliczalnym), jeżeli istnieje taka funkcja fÎðPRek ( fÎðPRek), że . Def. 6. Zbiór AÍðN nazywamy zbiorem rekurencyjnie przeliczalnym, jeżeli istnieje taka funkcja obliczalna f (czyli fÎðRek), że f(N) = A. PrzykÅ‚ad: Uzasadnić, że zbiór liczb pierwszych jest pierwotnie rekurencyjny.