Professional Documents
Culture Documents
Рекурзивни алгоритми
Тјурингова машина
Рекурзивни алгоритми
• Један од начина да се дефинише алгоритам је и помоћу
рекурзивних функција.
• Рекурзија (lat. recursio, recursion од recurrere: враћање) у
математици и информатици означава поступак или функцију
које у својој дефиницији користе саме себе. Састоје се из два
корака:
• Функција је дефинисана за неку почетну вредност а
( најчешће 0 или 1 )
• Ако је функција дефинисана за неку вредност n, која је већа
или једнака a, тада може да се дефинише и за вредност n+1.
Висока школа електротехнике и рачунарства 2
Алгоритми и структуре података: Структуре података
Рекурзивни алгоритми
Алгоритам је рекурзивни ако се решавање проблема своди на
предходни корак, једноставнијег улаза.
Рекурзивни алгоритми
• Пример:
Рекурзивни алгоритам за решавање функције степеновања
f ( x) a x a * f ( x 1)
Рекурзивни алгоритми
Начин на који се изводи претходни алгоритам:
Нека је n=3, a a=5
stepen(5,3) 125
stepen(5,3)=5*stepen(5,2)
stepen(5,2)=5*stepen(5,1)
stepen(5,1)=5*stepen(5,0)
stepen(5,0)=1
procedura : fakt (n 0)
x 1
f (n) 1* 2*...*( n 1) * n for i 1 to n
x ix
x je n !
Черчова теза
Особине рекурзивних функција:
1. За израчунавање вредности рекурзивних функција постоји
ефективни поступак.
2. Процес израчунавања може да буде дуготрајан, али је увек
јасан и очигледан.
3. До решења се увек долази после коначно много корака.
Рекурзивни алгоритми
• Черчова теза: Аритметичка функција је израчунљива ако је
рекурзивна.
• Нажалост ова теза није доказана у математичком смислу. У
суштини она тврди да за неки проблем постоји алгоритам ако се
решавање проблема своди на израчунавање вредности адекватне
рекурзивне функције. Проблем који се решава тада се мора
формулисати као аритметички проблем. Проблем ван аритметике
мора се пресликати у аритметички. Да би се то постигло прво се
проблем мора представити неким универзалним језиком, на пример,
квантификаторског рачуна, а затим се то пресликава на језик
аритметике. Дакле:
• Рекурзивна функција је један општи модел алгоритма.
Висока школа електротехнике и рачунарства 13
Алгоритми и структуре података: Структуре података
• Ако је o:
o=0 , у ћелију над којом се налази глава уписује се 0.
о=1 , у ћелију над којом се налази глава уписује се 1.
о=L, глава се помера улево за једну ћелију
o=R, глава се помера удесно за једну ћелију
Када заврши једну од ових акција, машина мења стање у qj
Пример 1.
Следећи програм израчунава наследника природног броја тј. f(x)=x’.
q0 1 L q 0
q0 0 1 q z
Прва наредба каже да док год је испод главе 1, глава машине треба
да се помери за место улево и да пређе у стање q0 тј. да понови
дату наредбу.
Друга наредба се односи на ситуацију у којој је испод главе.
Тада треба да уместо упише да заврши са радом.
Треба приметити да на крају програма вредност функције
се налази лево од главе машине.
Висока школа електротехнике и рачунарства 20
Алгоритми и структуре података: Структуре података
Пример 2.
Нека се на траци Тјурингове машине налазе два броја одвојена
једном 0. Написати програм за Тјурингову машину који рачуна збир
та два броја.
q0 1 L q0
q0 0 1 q1
q1 1 L q1
q1 0 R q2
q2 1 0 qz