Ogólna funkcja rekurencyjna
W logice matematycznej i informatyce , ogólna funkcja rekurencyjna , częściowa funkcja rekurencyjna lub funkcja μ-rekurencyjna to funkcja częściowa od liczb naturalnych do liczb naturalnych, która jest „obliczalna” w sensie intuicyjnym - jak również formalnym . Jeśli funkcja jest całkowita, jest również nazywana całkowitą funkcją rekurencyjną (czasami skracaną do funkcji rekurencyjnej ). W teorii obliczalności , pokazano, że funkcje μ-rekurencyjne są dokładnie funkcjami, które mogą być obliczone przez maszyny Turinga (jest to jedno z twierdzeń wspierających tezę Churcha-Turinga ). Funkcje μ-rekurencyjne są blisko spokrewnione z prymitywnymi funkcjami rekurencyjnymi , a ich definicja indukcyjna (poniżej) opiera się na definicji prymitywnych funkcji rekurencyjnych. Jednak nie każda całkowita funkcja rekurencyjna jest prymitywną funkcją rekurencyjną — najbardziej znanym przykładem jest funkcja Ackermanna .
Innymi równoważnymi klasami funkcji są funkcje rachunku lambda i funkcje, które można obliczyć za pomocą algorytmów Markowa .
Podzbiór wszystkich całkowitych funkcji rekurencyjnych o wartościach w {0,1} jest znany w teorii złożoności obliczeniowej jako klasa złożoności R .
Definicja
Funkcje μ-rekurencyjne (lub ogólne funkcje rekurencyjne ) to funkcje częściowe, które pobierają skończone krotki liczb naturalnych i zwracają pojedynczą liczbę naturalną. Są najmniejszą klasą funkcji częściowych, która obejmuje funkcje początkowe i jest zamknięta w złożeniu, prymitywnej rekurencji i operatorze μ .
Najmniejszą klasą funkcji obejmującą funkcje początkowe i domknięte pod złożeniem oraz pierwotną rekurencję (tj. bez minimalizacji) jest klasa prymitywnych funkcji rekurencyjnych . Chociaż wszystkie prymitywne funkcje rekurencyjne są całkowite, nie dotyczy to częściowych funkcji rekurencyjnych; na przykład minimalizacja funkcji następcy jest niezdefiniowana. Prymitywne funkcje rekurencyjne są podzbiorem całkowitych funkcji rekurencyjnych, które są podzbiorem częściowych funkcji rekurencyjnych. Na przykład można udowodnić, funkcja Ackermanna jest całkowicie rekurencyjna i nie jest prymitywna.
Funkcje prymitywne lub „podstawowe”:
-
Funkcje stałe do k n
k : Dla każdej liczby naturalnej n i każdego do- Alternatywne definicje używają zamiast funkcji zerowej jako funkcję pierwotną, która zawsze zwraca zero, i zbuduj funkcje stałe z funkcji zerowej, funkcji następcy i operatora kompozycji.
-
Następnik funkcji S:
-
Funkcja projekcji zwana także funkcją tożsamości wszystkich liczb naturalnych , że :
Operatory ( dziedziną funkcji zdefiniowaną przez operatora jest zbiór wartości argumentów takich, że każde zastosowanie funkcji, które musi być wykonane podczas obliczeń, daje dobrze zdefiniowany wynik):
-
Operator kompozycji (nazywany także operatorem podstawienia ): Biorąc pod uwagę funkcję m-ary , i m k-funkcje :
- Oznacza to, że jest zdefiniowany tylko wtedy, gdy i są zdefiniowane.
-
Prymitywny operator rekurencji ρ : Biorąc pod uwagę funkcję k -ary sol k + 2 - funkcja :
- Oznacza to, że jest zdefiniowany tylko wtedy, gdy i dla wszystkich
-
Operator minimalizacji μ : Biorąc pod uwagę funkcję ar ( k + 1 ) , funkcja k -ary
Intuicyjnie, minimalizacja szuka — rozpoczynając wyszukiwanie od 0 i kontynuując w górę — najmniejszego argumentu, który powoduje, że funkcja zwraca zero; ma takiego argumentu lub jeśli napotka się argument, dla którego nie jest zdefiniowane, to wyszukiwanie nigdy się nie kończy i zdefiniowane dla argumentu
Podczas gdy niektóre podręczniki używają operatora μ zgodnie z definicją tutaj, inne wymagają, aby operator μ był stosowany tylko do funkcji całkowitych f . Chociaż ogranicza to operatora μ w porównaniu z podaną tutaj definicją, klasa funkcji μ-rekurencyjnych pozostaje taka sama, co wynika z twierdzenia o postaci normalnej Kleene'a (patrz poniżej ) . Jedyna różnica polega na tym, że staje się nierozstrzygalne, czy określona definicja funkcji definiuje funkcję μ-rekurencyjną, tak jak nierozstrzygalne jest, czy funkcja obliczalna (tj. μ-rekurencyjna) jest całkowita.
Operatora silnej równości do porównania częściowych funkcji μ-rekurencyjnych . Jest to zdefiniowane dla wszystkich funkcji cząstkowych f i g tak, że
obowiązuje wtedy i tylko wtedy, gdy dla dowolnego wyboru argumentów albo obie funkcje są zdefiniowane, a ich wartości są równe, albo obie funkcje są niezdefiniowane.
Przykłady
Przykłady nieobejmujące operatora minimalizacji można znaleźć w Primitive recursive function#Examples .
Poniższe przykłady mają na celu tylko zademonstrowanie użycia operatora minimalizacji; można je również zdefiniować bez niego, choć w bardziej skomplikowany sposób, ponieważ wszystkie są prymitywnie rekurencyjne.
- Całkowity pierwiastek kwadratowy z x można zdefiniować jako najmniejszą z taką, że . Używając operatora minimalizacji, ogólną definicją rekurencyjną jest , gdzie Not , Gt i Mul to odpowiednio logiczna negacja , większa niż i mnożenie. Faktycznie, 0 jest wtedy i tylko wtedy, gdy trzyma. Stąd jest najmniejszą z taką, że posiada. Złącze negacji Not jest potrzebne, ponieważ Gt koduje prawdę przez 1 0 , podczas gdy μ szuka .
Poniższe przykłady definiują ogólne funkcje rekurencyjne, które nie są prymitywnymi funkcjami rekurencyjnymi; stąd nie mogą uniknąć użycia operatora minimalizacji.
Całkowita funkcja rekurencyjna
Ogólna funkcja rekurencyjna jest nazywana całkowitą funkcją rekurencyjną , jeśli jest zdefiniowana dla każdego wejścia lub, równoważnie, jeśli może być obliczona przez całkowitą maszynę Turinga . Nie ma możliwości obliczeniowego stwierdzenia, czy dana ogólna funkcja rekurencyjna jest całkowita — patrz problem z zatrzymaniem .
Równoważność z innymi modelami obliczalności
W równoważności modeli obliczalności rysuje się paralelę między maszynami Turinga , które nie kończą się dla pewnych danych wejściowych, a niezdefiniowanym wynikiem dla tego wejścia w odpowiedniej częściowej funkcji rekurencyjnej. Nieograniczonego operatora wyszukiwania nie można zdefiniować za pomocą reguł rekurencji pierwotnej, ponieważ nie zapewniają one mechanizmu „nieskończonych pętli” (niezdefiniowanych wartości).
Twierdzenie o postaci normalnej
Twierdzenie o postaci normalnej ze względu na Kleene mówi, że dla każdego prymitywne funkcje rekurencyjne y takie, że dla dowolnej funkcji μ-rekurencyjnej z k wolnymi zmiennymi istnieje e takie, że
- .
Liczba e jest nazywana indeksem lub liczbą Gödla dla funkcji f . Konsekwencją tego wyniku jest to, że dowolną funkcję μ-rekurencyjną można zdefiniować za pomocą pojedynczego wystąpienia operatora μ zastosowanego do (całkowitej) pierwotnej funkcji rekurencyjnej.
Minsky zauważa, że zdefiniowana powyżej jest w istocie μ-rekurencyjnym odpowiednikiem uniwersalnej maszyny Turinga :
Skonstruować U to zapisać definicję funkcji ogólnie rekurencyjnej U(n, x), która poprawnie interpretuje liczbę n i oblicza odpowiednią funkcję x. bezpośrednie zbudowanie U wymagałoby zasadniczo takiego samego wysiłku i zasadniczo tych samych pomysłów , ile zainwestowaliśmy w zbudowanie uniwersalnej maszyny Turinga
Symbolizm
W literaturze używa się wielu różnych symboli. Zaletą stosowania symboliki jest wyprowadzenie funkcji przez „zagnieżdżanie” operatorów jeden w drugim, co jest łatwiejsze do zapisania w zwartej formie. W dalszej części ciąg parametrów x 1 , ..., x n jest oznaczany skrótem x :
-
Funkcja stała : Kleene używa „C
n q ( x ) = q ”, a Boolos-Burgess-Jeffrey (2002) (BBJ) używa skrótu „ const n ( x ) = n ”:
- np. C
7 13 ( r, s, t , u, v, w, x ) = - 13 const 13 ( r, s, t, u, v, w, x ) = 13
- np. C
- Funkcja następnika : Kleene używa x' i S dla określenia „Następca”. Ponieważ „następca” jest uważany za prymitywny, większość tekstów używa apostrofu w następujący sposób:
- S(a) = a +1 = def a', gdzie 1 = def 0', 2 = def 0 ' ', itd.
-
Funkcja tożsamości : Kleene (1952) używa „ U
n i ” do wskazania funkcji tożsamości na zmiennych x i ; BBJ użyj funkcji tożsamości id
n i nad zmiennymi od x 1 do x n :
- U
n i ( x ) = id
n ja ( x ) = x i - np. U
7 3 = id
7 3 ( r, s, t, u, v, w, x ) = t
-
Operator składu (substytucji) : Kleene używa pogrubionej litery S
m n (nie mylić z jego S jak „następca” ! ). Indeks górny „m” odnosi się do m -tej funkcji „f m ”, podczas gdy indeks dolny „n” odnosi się do n-tej zmiennej „x n ”:
- Jeśli mamy dane h( x )= g( f 1 ( x ) , ... , f m ( x ) )
- h( x ) = S
n m (g, f 1 , ... , f m )
- h( x ) = S
- W podobny sposób, ale bez indeksów dolnych i górnych, BBJ napisz:
- h( x' )= Cn[g, f 1 ,..., f m ]( x )
- Rekurencja pierwotna : Kleene używa symbolu „ R n (krok podstawowy, krok indukcyjny)”, gdzie n oznacza liczbę zmiennych, BBJ używa „ Pr(krok podstawowy, krok indukcyjny) ( x )”. Dany:
- krok podstawowy: h( 0, x )= f( x ), oraz
- krok indukcyjny: h( y+1, x ) = g( y, h(y, x ), x )
- Przykład: prymitywna definicja rekurencji a + b:
-
- krok podstawowy: f( 0, a ) = a = U
1 1 (a) - krok indukcyjny: f( b' , a ) = ( f ( b, a ) )' = g( b, f( b, a), a ) = g( b, c, a ) = c' = S(U
3 2 ( b, c, a ))
- R 2 { U
1 1 (a), S [ (U
3 2 ( b, do, za ) ] } - Pr { U
1 1 (a), S [ (U
3 2 ( b, do, za ) ] }
- krok podstawowy: f( 0, a ) = a = U
-
Przykład : Kleene podaje przykład, jak wykonać rekurencyjne wyprowadzenie f(b, a) = b + a (zwróć uwagę na odwrócenie zmiennych aib). Zaczyna z 3 początkowymi funkcjami
-
- S(a) = a'
- U
1 1 (a) = za - U
3 2 ( b, do, za ) = do - g(b, c, a) = S(U
3 2 ( b, c, a )) = c' - krok podstawowy: h( 0, a ) = U
1 1 (a)
- krok indukcyjny: h( b', a ) = g( b, h( b, a ), a )
Przyjeżdża o:
- a+b = R 2 [ U
1 1 , S
3 1 (S, U
3 2 ) ]
- a+b = R 2 [ U
Przykłady
Zobacz też
- Kleene, Stephen (1991) [1952]. Wprowadzenie do metamatematyki . Walters-Noordhoff i Holandia Północna. ISBN 0-7204-2103-9 .
- Soare, R. (1999) [1987]. Rekurencyjnie przeliczalne zbiory i stopnie: badanie funkcji obliczalnych i zbiorów generowanych obliczeniowo . Springer-Verlag. ISBN 9783540152996 .
- Minsky, Marvin L. (1972) [1967]. Obliczenia: maszyny skończone i nieskończone . Prentice Hall. s. 210–5. ISBN 9780131654495 .
- Na stronach 210-215 Minsky pokazuje, jak stworzyć operatora μ za pomocą modelu maszyny rejestrowej , demonstrując w ten sposób jego równoważność z ogólnymi funkcjami rekurencyjnymi.
- Boolos, George ; Burgess, Jan ; Jeffrey, Richard (2002). „6.2 Minimalizacja” . Obliczalność i logika (wyd. 4). Wydawnictwo Uniwersytetu Cambridge. s. 70–71. ISBN 9780521007580 .
Linki zewnętrzne
- Stanford Encyclopedia of Philosophy wpis
- Kompilator do przekształcania funkcji rekurencyjnej w równoważną maszynę Turinga