Funkcja rekurencyjna

Funkcja rekurencyjna – funkcja N i N , {\displaystyle \mathbb {N} ^{i}\to \mathbb {N} ,} która jest obliczalna za pomocą maszyny Turinga. Klasę tych funkcji definiuje się za pomocą mniejszej klasy funkcji pierwotnie rekurencyjnych:

Funkcja pierwotnie rekurencyjna

Funkcjami pierwotnie rekurencyjnymi nazywamy funkcje:

  • Funkcja zerowa
Z : N N , {\displaystyle Z\colon \mathbb {N} \to \mathbb {N} ,} zdefiniowana jako Z ( n ) = 0 {\displaystyle {\begin{matrix}Z(n)=0\end{matrix}}}
  • Funkcja następnika
S : N N , {\displaystyle S\colon \mathbb {N} \to \mathbb {N} ,} zdefiniowana jako S ( n ) = n + 1 {\displaystyle {\begin{matrix}S(n)=n+1\end{matrix}}}
  • Funkcja rzutowania
I n i : N n N , {\displaystyle I_{n}^{i}\colon \mathbb {N} ^{n}\to \mathbb {N} ,} zdefiniowana jako I n i ( x 1 , , x n ) = x i ,   i n {\displaystyle I_{n}^{i}(x_{1},\dots ,x_{n})=x_{i},\ i\leqslant n}

oraz wszystkie funkcje zbudowane z funkcji pierwotnie rekurencyjnych za pomocą następujących metod kompozycji:

  • Złożenia funkcji
Dla danych funkcji f : N k N {\displaystyle f\colon \mathbb {N} ^{k}\to \mathbb {N} } oraz g 1 , , g k : N n N , {\displaystyle g_{1},\dots ,g_{k}\colon \mathbb {N} ^{n}\to \mathbb {N} ,} złożeniem nazywamy funkcję
h : N n N , {\displaystyle h\colon \mathbb {N} ^{n}\to \mathbb {N} ,} zdefiniowaną jako h ( n ¯ ) = f ( g 1 ( n ¯ ) , , g k ( n ¯ ) ) {\displaystyle h({\overline {n}})=f(g_{1}({\overline {n}}),\dots ,g_{k}({\overline {n}}))}
  • Rekursji prostej
Dla danych funkcji g : N n N {\displaystyle g\colon \mathbb {N} ^{n}\to \mathbb {N} } oraz h : N n + 2 N , {\displaystyle h\colon \mathbb {N} ^{n+2}\to \mathbb {N} ,} złożeniem rekurencyjnym nazywamy funkcję
f : N n + 1 N {\displaystyle f\colon \mathbb {N} ^{n+1}\to \mathbb {N} } zdefiniowaną jako { f ( n ¯ , 0 ) = g ( n ¯ ) f ( n ¯ , S ( m ) ) = h ( f ( n ¯ , m ) , n ¯ , m ) {\displaystyle {\begin{cases}f({\overline {n}},0)=g({\overline {n}})\\f({\overline {n}},S(m))=h(f({\overline {n}},m),{\overline {n}},m)\end{cases}}}

Funkcja częściowo rekurencyjna

Dodając do zbioru możliwych operacji operator minimalizacji otrzymujemy klasę funkcji częściowo rekurencyjnych:

  • Operator minimalizacji

Dla danej funkcji f : N n + 1 N , {\displaystyle f\colon \mathbb {N} ^{n+1}\to \mathbb {N} ,} definiujemy funkcję h : N n N {\displaystyle h\colon \mathbb {N} ^{n}\to \mathbb {N} } w ten sposób, że wartością h ( x 1 , x 2 , , x n ) {\displaystyle h(x_{1},x_{2},\dots ,x_{n})} jest minimalne y takie, że

x y f ( x , x 1 , x 2 , , x n ) {\displaystyle \forall _{x\leqslant y}f(x,x_{1},x_{2},\dots ,x_{n})} jest zdefiniowane, oraz
f ( y , x 1 , x 2 , , x n ) = 0. {\displaystyle f(y,x_{1},x_{2},\dots ,x_{n})=0.}

Ponieważ nie dla wszystkich wartości x 1 , x n {\displaystyle x_{1},\dots x_{n}} takie y musi istnieć, funkcje częściowe rekurencyjne mogą być (w przeciwieństwie do funkcji pierwotnie rekurencyjnych) funkcjami częściowymi.

Funkcja rekurencyjna

Funkcję częściowo rekurencyjną, która jest zdefiniowana dla każdego argumentu, nazywamy funkcją rekurencyjną

Przykładem funkcji która jest rekurencyjna, ale nie jest pierwotnie rekurencyjna, jest funkcja Ackermanna.

Funkcja elementarnie rekurencyjna

Funkcjami elementarnie rekurencyjnymi nazywamy funkcje:

  • funkcję następnika,
  • funkcję odejmowania ograniczonego
˙ : N 2 N , {\displaystyle {\dot {-}}\colon \mathbb {N} ^{2}\to \mathbb {N} ,} zdefiniowaną jako ˙ ( x , y ) = { 0 ,   x < y x y ,   x y , {\displaystyle {\dot {-}}(x,y)={\begin{cases}{0,\ x<y}\\{x-y,\ x\geqslant y}\end{cases}},}
  • funkcję potęgowania
p o w : N 2 N , {\displaystyle pow\colon \mathbb {N} ^{2}\to \mathbb {N} ,} zdefiniowaną jako p o w ( x , y ) = x y . {\displaystyle {\begin{matrix}pow(x,y)=x^{y}\end{matrix}}.}

oraz wszystkie funkcje zbudowane z powyższych trzech za pomocą złożenia funkcji i operatora minimalizacji ograniczonej.

Twierdzenie o zamkniętości funkcji pierwotnie rekurencyjnych ze względu na sumę i iloczyn

Niech dana będzie pierwotnie rekurencyjna funkcja f : N n + 1 N . {\displaystyle f\colon \mathbb {N} ^{n+1}\to \mathbb {N} .} Wówczas funkcje

h 1 : N n + 1 N , {\displaystyle h_{1}\colon \mathbb {N} ^{n+1}\to \mathbb {N} ,} zdefiniowana jako h 1 ( n ¯ , m ) = i = 0 m f ( n ¯ , i ) , {\displaystyle h_{1}({\overline {n}},m)=\sum _{i=0}^{m}f({\overline {n}},i),}
h 2 : N n + 1 N , {\displaystyle h_{2}\colon \mathbb {N} ^{n+1}\to \mathbb {N} ,} zdefiniowana jako h 2 ( n ¯ , m ) = i = 0 m f ( n ¯ , i ) {\displaystyle h_{2}({\overline {n}},m)=\prod _{i=0}^{m}f({\overline {n}},i)}

są funkcjami pierwotnie rekurencyjnymi.

Analogicznie twierdzenie zachodzi dla funkcji elementarnie rekurencyjnych.

Przykłady funkcji rekurencyjnych

Zobacz też

Bibliografia

  • Mycka J., Teoria funkcji rekurencyjnych, wrzesień 2000, [1] (dostęp 27 sierpnia 2011).

Linki zewnętrzne

  • PiergiorgioP. Odifreddi PiergiorgioP., S. BarryS.B. Cooper S. BarryS.B., Recursive Functions, [w:] Stanford Encyclopedia of Philosophy, CSLI, Stanford University, 11 maja 2012, ISSN 1095-5054 [dostęp 2017-12-30]  (ang.). (Funkcje rekurencyjne)
Kontrola autorytatywna (funkcja obliczalna):
  • LCCN: sh85112014
  • BnF: 11977577z
  • BNCF: 45388
  • J9U: 987007565763305171
  • LNB: 000165558
Encyklopedia internetowa:
  • Britannica: topic/recursive-function
  • SEP: recursive-functions