Rekurzivní funkce (teorie vyčíslitelnosti)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 4. června 2021; kontroly vyžadují 2 úpravy .

Termín rekurzivní funkce v teorii vyčíslitelnosti se používá k označení tří tříd funkcí:

Ten se shoduje s třídou Turingově vyčíslitelných funkcí . Definice těchto tří tříd spolu úzce souvisí. Zavedl je Kurt Gödel , aby formalizoval pojem vyčíslitelnosti.

Sada částečně rekurzivních funkcí zahrnuje množinu obecných rekurzivních funkcí a obecné rekurzivní funkce zahrnují primitivní rekurzivní funkce. Částečně rekurzivní funkce se někdy označují jednoduše jako rekurzivní funkce.

Primitivní rekurzivní funkce

Definice

Definice pojmu primitivní rekurzivní funkce je induktivní . Skládá se ze specifikace třídy základních primitivních rekurzivních funkcí a dvou operátorů ( superpozice a primitivní rekurze ), které umožňují vytvářet nové primitivní rekurzivní funkce založené na těch stávajících.

Mezi základní primitivní rekurzivní funkce patří následující tři typy funkcí:

Operátory substituce a primitivní rekurze jsou definovány takto:

V této definici lze proměnnou chápat jako iterační čítač, — jako počáteční funkci na začátku iteračního procesu, která vydává určitou posloupnost funkcí proměnných počínaje , a — jako operátor, který přijímá jako vstupní proměnné , číslo kroku iterace , funkce v daném kroku iterace a funkce návratu v dalším kroku iterace.

Množina primitivních rekurzivních funkcí je minimální množina obsahující všechny základní funkce a uzavřená pod specifikovanými operátory substituce a primitivní rekurze.

Pokud jde o imperativní programování , primitivní rekurzivní funkce odpovídají programovým blokům, které používají pouze aritmetické operace, stejně jako podmíněný operátor a operátor aritmetické smyčky (operátor smyčky, ve kterém je znám počet iterací v době, kdy smyčka začíná). Pokud programátor začne používat operátor smyčky while, u kterého není počet iterací předem znám a v zásadě může být nekonečný, přechází do třídy částečně rekurzivních funkcí.

Příklady

Uveďme řadu známých aritmetických funkcí , které jsou primitivně rekurzivní.

; ; . ; ; . ; ; ; ; ;

Částečně rekurzivní funkce

Částečně rekurzivní funkce je definována podobně jako primitivní rekurzivní, pouze ke dvěma operátorům, superpozice a primitivní rekurze, je přidán třetí operátor - minimalizace argumentů.

, za podmínky To znamená, že funkce vrací minimální hodnotu posledního argumentu funkce , při které je její hodnota 0.

Částečně rekurzivní funkce pro některé hodnoty argumentů nemusí být definovány, protože operátor minimalizace argumentů není vždy správně definován, protože funkce nemusí být pro žádné hodnoty argumentu rovna nule. Z hlediska imperativního programování může být výsledkem částečně rekurzivní funkce nejen číslo, ale i výjimka nebo nekonečná smyčka odpovídající nedefinované hodnotě.

Obecná rekurzivní funkce

Obecná rekurzivní funkce je částečně rekurzivní funkce definovaná pro všechny hodnoty argumentů. Problém určení, zda je částečně rekurzivní funkce s daným popisem obecná rekurzivní nebo ne, je algoritmicky nerozhodnutelný .

Vlastnosti

Je snadné pochopit, že jakákoli primitivní rekurzivní funkce je částečně rekurzivní, protože podle definice operátory pro konstrukci částečně rekurzivních funkcí zahrnují operátory pro konstrukci primitivních rekurzivních funkcí.

Je také jasné, že primitivní rekurzivní funkce je definována všude, a proto je obecnou rekurzivní funkcí (primitivní rekurzivní funkce nemá důvod „viset“, protože její konstrukce používá operátory, které definují funkce definované všude).

Je poměrně obtížné dokázat existenci a uvést příklad obecné rekurzivní funkce, která není primitivně rekurzivní. Jedním z populárních příkladů je Ackermannova funkce . Další příklad obecné rekurzivní funkce, která není primitivní rekurzivní, je konstruován Cantorovou diagonální metodou z univerzální funkce pro množinu unárních primitivních rekurzivních funkcí.

Jak ukázal Gödel , částečně rekurzivní funkce se shodují se souborem vypočitatelných funkcí .

Historie jmen

Pojmy „částečně rekurzivní funkce“ a „obecná rekurzivní funkce“ zakořenily z historických důvodů a jsou v podstatě výsledkem nepřesného překladu anglických výrazů částečná rekurzivní funkce a celková rekurzivní funkce , které jsou správněji přeloženy jako „definované rekurzivní funkce. na části množiny možných argumentů“ a „rekurzivní funkce definované na celé množině možných argumentů“. Příslovce „částečně“ neodkazuje na přídavné jméno „rekurzivní“, ale na rozsah funkce. Možná správnější název by byl „částečně definované rekurzivní funkce“ a jednoduše „všude definované rekurzivní funkce“. Dlouhá jména se ale neprosadila.

Viz také

Literatura