Примитивна рекурзивна функцијаУ теорији израчунљивости, примитивне рекурзивне функције су класе функција које су дефинисане користећи примитивну рекурзију и композицију као централне операције и представљају строги подскуп укупних µ-рекурзивних функција (µ-рекурзивне функције се такође називају и "парцијално рекурзивне"). Примитивне рекурзивне функције чине важан камен темељац на путу ка пуној формализацији израчунљивости. Ове функције су такође важне у теорији доказа. Већина функција која се нормално проучава у теорији бројева су примитивно рекурзивне. На пример: сабирање, дељење, факторијел, експоненцијална функција и n-та основна су све примитивно рекурзивне функције. Такве су и многе апроксимације стварне вредности функција. У ствари, тешко је пронаћи рекурзивну функцију која није примитивно рекурзивна, мада неке такве функције постоје (видети одељак о ограничењима испод). Скуп примитивних рекурзивних функција је познат као ПР у рачунској теорији комплексности. ДефиницијаПримитивне рекурзивне функције су међу функцијама теорије бројева, то су функције које сликају из природних бројева (ненегативни цели) {0, 1, 2, ...} у природне бројева. Ове функције подразумевају n аргумената за неки природан број n и називају се n-арне. Основне примитивне рекурзивне функције дате овим аксиома:
Сложеније примитивне рекурзивне функције се могу добити применом операција датим овим аксиомима:
Примитивне рекурзивне функције су основне функције и оне добијене од основних функција применом ових операција коначан број пута. Улога функције пројекцијеФункције пројекција се могу користити да би се избегла очигледна крутост у смислу арности функција које су дате горе; помоћу композиције са различитим функцијама пројекције, могуће је да прође подскуп аргумената једне функције на другу функцију. На пример, ако су g и h 2-арне примитивне рекурзивне функције онда је такође примитивна рекурзивна. Једна формална дефиниција користећи пројекцију функција је Претварање предиката у нумеричке функцијеУ неким срединама је природно да се размотре примитивне рекурзивне функције које узимају као улаз оне ниске које имају микс бројева са истинитосним вредностима { t= тачно, f= нетачно}, или да се производе тачне вредности као излази.[1]. Ово се може постићи кроз идентификовање истинитосних вредности са бројевима на било који фиксни начин. На пример, уобичајено је да се идентификују истинитосне вредности t са бројем 1 и истинитосне вредности f са бројем 0. Када је та идентификација направљен, карактеристична функција скупа А, што буквално враћа 1 или 0, може бити посматрана као предикат који говори да ли је број у предвиђеном скупу А. Таква идентификација предиката са нумеричким функцијама ће се претпоставити до краја овог чланка. Дефиниција програмског језикаПример примитивног рекурзивног програмском језика је онај који садржи основне аритметичке операторе (нпр. + и −, или САБИРАЊЕ и ОДУЗИМАЊЕ), условљење и поређење (IF-THEN, EQUALS, LESS-THAN), и for петље, као што је основно за петље, где постоји позната или израчуната горња граница за све петље (FOR и FROM 1 до n, без i без n модификованог од стране тела петље). Нема контролне структуре веће општости, као што су while петљe или АКО-ОНДА плус ГОТО, које се примају у примитивном рекурзивном језику. Петља Дагласа Хофстатера је таква и код Гедела, Есхера, Баха. Додавање необавезне петље (WHILE, GOTO) чини језик делимично рекурзивним, или Тјуринг-комплетним; Петље су као и сви програмски језици који раде у реалном времену. Произвољни компјутерски програми, или Тјурингове машине, не могу уопште да се анализирају да виде да ли се зауставља или не (на обуставу проблема). Међутим, све примитивне рекурзивне функције се заустављају. Ово није контрадикција; примитивни рекурзивни програми нису произвољна подгрупа свих могућих програма, конструисаних тако да су специфични за анализирање. ПримериВећина бројевних-теоријских функција које се дефинишу помоћу рекурзије на једној променљивој су примитивно рекурзивне. Основни примери укључују сабирање и скраћено одузимање функције. СабирањеИнтуитивно, сабирање се може рекурзивно дефинисати са правилима:
Да бисте уклопили ово у строгу примитивну рекурзивну дефиницију, дефинише се:
Овде је S(n) "следбеник од n" (i.e., n+1), P11 је функција идентитета, и P23 је функција пројекције узима 3 аргумента и враћа други. Функције f и g прописане су горњој дефиницији примитивне рекурзивне операције редом P11 слагање од S иP23. ОдузимањеЗато што примитивне рекурзивне функције користе природне бројеве, уместо целих бројева, а природни бројеви се не затварају под одузимањем, функција скраћеног одузимања (која се назива "исправно одузимање") је проучавана у овом контексту. Ова ограничена функција одузимања скупа (a, b) [or b ∸ a] враћа b - a ако је ненегативна, у супротном враћа 0. Функција претходника делује као супротно од функција наследника и рекурзивно је дефинисана правилима:
Ова правила могу да се конвертују у више формалне дефиниције примитивне рекурзије:
Ограничена функција одузимања дефинисана од претходника функционише на начин аналоган начину сабирања дефинисаног од наследника:
Имамо скуп(a, b) коме одговара b ∸ a; ради једноставности, редослед аргумената је узет из "стандардне" дефиниције да задовољава захтеве из примитивне рекурзије. То се лако може исправити коришћењем композиције са одговарајућим пројекцијама. Друге операције са природним бројевимаСтепеновање и просто тестирање су примитивно рекурзивне. С обзиром на примитивне рекурзивне функције e, f, g, и h, функција која враћа вредност g када e≤f или у супротном вредност h је примитивна рекурзивна. Операције над целим и рационалним бројевимаКоришћењем Геделових бројева, примитивне рекурзивне функције могу се продужити за операцију на другим предметима, као што су цели и рационални бројеви. Ако су цели бројеви кодирани од стране Геделових бројева у стандардном начину, аритметичке операције, укључујући сабирање, одузимање и множење су примитивно рекурзивне. Слично томе, ако су рационалним представљени Геделови бројеви онда операције на терену су све примитивно рекурзивне. Однос према рекурзивним функцијамаШира класа парцијалних рекурзивних функција је дефинисана увођењем неограниченог оператера претраживања. Употреба овог оператера може да доведе до делимичне функције, то јест, однос са највише једном вредности за сваки аргумент, али не мора имати никакву вредност за било који аргумент (видети Домен). Једна еквивалентна дефиниција каже да је делимична рекурзивна функција она која може да се израчуна на Тјуринговој машини. Укупна рекурзивна функција је парцијална рекурзивна функција која је дефинисана за сваки унос. Свака примитивна рекурзивна функција је целокупно рекурзивна, али нису све целокупне рекурзивне функције примитивно рекурзивне. Акерманова функција А (м, н) је добро познати пример целокупне рекурзивне функције која није примитивно рекурзивна. Постоји карактеризација примитивних рекурзивних функција као подскуп укупних рекурзивних функција које користе Акерманову функцију. Ова карактеризација наводи да је функција примитивно рекурзивна ако и само ако постоји природан број м такав да се функција може израчунати помоћу Тјурингове машине која се увек зауставља са A(m,n) или са мање корака, где је н збир аргумената примитивне рекурзивне функције.[2] Важна особина примитивних рекурзивних функција је да су оне рекурзивно бројиви подскуп скупа свих укупних рекурзивних функција (која није сама по себи рекурзивно бројива). То значи да постоји једно израчунавање функције f(e,n) тако да:
Међутим, примитивно рекурзивне функције нису највећи рекурзивно бројиви скуп потпуних израчунљивих функција. ОграничењаПримитивно рекурзивне функције имају тенденцију да одговарају веома блиско нашој интуицији о томе израчунљива функција мора бити. Свакако су почетне функције интуитивно израчунљиве (у њиховој самој једноставности), и две операције којима се може створити нова примитивно рекурзивна функција је такође веома једноставна. Међутим скуп примитивних рекурзивних функција не укључује сваку могућу израчунљиву функцију - то може да се види са варијантом Канторовог дијагоналног аргумента. Овај аргумент даје целокупну израчунљиву функцију која није примитивно рекурзивна. Следи скица доказа:
Овај аргумент се може применити на било коју класу израчунљиве (потпуне) функције које се могу набројати на овај начин, као што је објашњено у чланку машина које се увек заустављају. Имајте на уму, међутим, да парцијалне израчунљиве функције (оне које не морају бити дефинисана за све аргументе) могу изричито бити набројане, на пример пописивање кодирања Тјурингове машине. Други примери укупних рекурзивних али не примитивних рекурзивних функција су познати:
Неке уобичајене примитивне рекурзивне функције
У наставку смо приметили да примитивне рекурзивне функције имају четири типа:
У следећим ознакама " ' ", нпр А ', је примитивна ознака и значи "наследник", обично мисли као "+1", на пример, a +1 =def a'. Функције 16-20 и #G су од посебног интереса у вези са конверзијом примитивнног рекурзивнног предиката, и вађење њих из њиховог "аритметичког" облика израженог преко Годелових бројева.
Додатни примитивни рекурзивни облициНеки додатни облици рекурзије такође дефинише функције које су, у ствари, примитивно рекурзивне. Дефиниције у тим облицима могу бити лакше пронађене и природније за читање или писање. Курс-вредности рекурзије дефинише примитивне рекурзивне функције. Неки облици међусобне рекурзије такође дефинишу примитивне рекурзивне функције. Функције које се могу програмирати у петљи програмског језика су потпуно примитивно рекурзивне функције. Ово даје другачију карактеризацију моћи ових функција. Главно ограничење петље језика, у поређењу са Тјуринг-комплетним језиком, јесте да у петљи језика број пута да се свака петља покрене наведен је пре него што се петља покрене. Финитизам и доследност резултатаПримитивне рекурзивне функције су блиско повезане са математичким финитизмом, и користе се у контекстима у математичкој логици у којој се жели посебно конструктиван систем. Примитивни рекурзивна аритметика (ПРА), формални аксиом система за природне бројеве и примитивне рекурзивне функције на њих, често се користи у ту сврху. ПРА је много слабији него Пеанове аритметике, која није финитистички систем. Ипак, многи резултати у теорији бројева и у теорији доказа може се доказати у ПРА. На пример, Годелова теорема непотпуности може бити формализована у ПРА, дајући следеће теореме:
Слично томе, многи од синтаксних резултата у теорији доказа може се доказати у ПРА, што подразумева да постоје примитивни рекурзивне функције које обављају одговарајуће синтаксичке трансформације доказа. У теорији доказа и теорији скупова, постоји интересовање за финитистичку доследност доказима, то јест, доследност доказује да и сами финитистицалли прихватљиво. Такав доказ утврди да конзистентност теорије Т подразумева доследност теорије С производњом примитивни рекурзивну функцију која може да трансформише било доказ о неусклађености са С у доказ о недоследности из Т. Оне довољан услов за доследности доказ да буде финитистиц је способност да се формализује у ПРА. На пример, многи доследност резултата у теорији скупова који су добијени присиљавају може преобликована као синтаксних доказе који могу бити формализовани у ПРА. ИсторијаРекурзивне дефиниције су се мање више формално користиле у математици и раније, али изградња примитивне рекурзије се пратит уназад до теореме 126 Ричарда Дедекинда од његовог Was sind und was sollen die Zahlen? (1888) (1888). Овај рад је био први дати доказ да одређена рекурзивна конструкција дефинише јединствену функцију.[3][4][5] Примитивна рекурзивна аритметика је прво предложена од Торалфа Сколема[6] 1923. Садашњу терминологију је сковао Роза Петер (1934), након што је Акерман показао 1928. године да функција која данас носи име по њему није била примитивно рекурзивна, догађај који је навео потребу да се преименује оно што су до тада назвали рекурзивном функцијом.[4][5] Види још
Референце
Литература
|
Portal di Ensiklopedia Dunia