You are on page 1of 21

Алгоритми и структуре података:

Рекурзивни алгоритми
Тјурингова машина

Професор: др Светлана Штрбац-Савић


Маил / Кабинет: svetlanas@viser.edu.rs / 501
Алгоритми и структуре података: Структуре података

Рекурзивни алгоритми
• Један од начина да се дефинише алгоритам је и помоћу
рекурзивних функција.
• Рекурзија (lat. recursio, recursion од recurrere: враћање) у
математици и информатици означава поступак или функцију
које у својој дефиницији користе саме себе. Састоје се из два
корака:
• Функција је дефинисана за неку почетну вредност а
( најчешће 0 или 1 )
• Ако је функција дефинисана за неку вредност n, која је већа
или једнака a, тада може да се дефинише и за вредност n+1.
Висока школа електротехнике и рачунарства 2
Алгоритми и структуре података: Структуре података

Пример рекурзивне функције

• Написати рекурзивну дефиницију природних бројева:


1. 1 је природан број
2. Ако је n природан број, онда је то и n+1.

Рекурзивне функције имају особину да за израчунавање њених


вредности постоји ефективни поступак. Нажалост процес
израчунавања може да буде дуготрајан, али је увек јасан и
очигледан. До решења ћемо увек доћи после коначно много
проверавања. За такве функције кажемо да су израчунљиве.

Висока школа електротехнике и рачунарства 3


Алгоритми и структуре података: Структуре података

Пример рекурзивне функције


Уочимо функцију f(n)=aⁿ, дефинисану на скупу позитивних целих
бројева.
Она се може схватити као производ од n вредности броја a,
Исто тако функција се може записати и рекурзивно на следећи
начин.
f(0)=1 (znajući da je a°=1).
f(n+1)=a*f(n)
Израчунати f(3).
Како је a°=1,
f(3)=a*f(2)=a*a*f(1)=a*a*a*f(0)=a*a*a*1=a³
Висока школа електротехнике и рачунарства 4
Алгоритми и структуре података: Структуре података

Рекурзивни алгоритми
Алгоритам је рекурзивни ако се решавање проблема своди на
предходни корак, једноставнијег улаза.

Да би се алгоритам који користи рекурзију завршио мора се


предвидети услов изласка, односно услов завршетка. Рекурзивни
алгоритам захтева једну или више улазних величина, а враћа једну
израчунату. Та вредност је све ближа жељеној, исказаној у услову
изласка.
Алгоритам у себи садржи наредбе if која тестира услов изласка и
наредбу else којом се рекурзивно позива сама функција, односно
алгоритам.
Висока школа електротехнике и рачунарства 5
Алгоритми и структуре података: Структуре података

Рекурзивни алгоритми
• Пример:
Рекурзивни алгоритам за решавање функције степеновања
f ( x)  a x  a * f ( x  1)

procedura: stepen (a je realan broj, n je nenegativan broj)


If n=0 then stepen (a,n)=1
else stepen (a,n)= a*stepen (a, n-1)
End_If

Висока школа електротехнике и рачунарства 6


Алгоритми и структуре података: Структуре података

Рекурзивни алгоритми
Начин на који се изводи претходни алгоритам:
Нека је 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

Висока школа електротехнике и рачунарства 7


Алгоритми и структуре података: Структуре података

Итеративни алгоритмам за израчунавање


факторијела

procedura : fakt (n  0)
x 1
f (n)  1* 2*...*( n  1) * n for i  1 to n
x  ix
x je n !

Висока школа електротехнике и рачунарства 8


Алгоритми и структуре података: Структуре података

Рекурзивни алгоритмам за израчунавање


факторијела
Математички, множење Рекурзивна верзија алгоритма за
природних бројева од 1 рачунање факторијела
до n може се изразити
следећом математичком procedura : fakt (n  0)
функцијом:
if n  1 then fakt  n   1
f (1)  1
f (n)  n * f (n  1)
else
fakt  n   n  fakt  n  1

Висока школа електротехнике и рачунарства 9


Алгоритми и структуре података: Структуре података

Рекурзивни алгоритмам за израчунавање


Фибоначијевог низа
Рекурзивне функције не морају да зависе само од једног, претходно израчунатог
елемента, већ могу да зависе од више њих. Пример је Фибоначијев низ који је
рекурзивна формула другог реда, јер сваки елемент низа зависи од два претходно
израчуната елемента.
procedura : fib(n  0)
if n  0 then fib  0   0
Фибоначијев низ:
Fib(0)=0
Fib(1)=1 else n  1 then fib 1  1
Fib(n)=Fib(n-1)+Fib(n)
else fib  n   fib  n  1  fib  n  2 
Висока школа електротехнике и рачунарства 10
Алгоритми и структуре података: Структуре података

Черчова теза
Особине рекурзивних функција:
1. За израчунавање вредности рекурзивних функција постоји
ефективни поступак.
2. Процес израчунавања може да буде дуготрајан, али је увек
јасан и очигледан.
3. До решења се увек долази после коначно много корака.

• Рекурзивне функције су израчунљиве.

• Обрнуто, верује се да је свака израчунљива функција


рекурзивна. Ово тврђење назива се Черчова теза.
Висока школа електротехнике и рачунарства 11
Алгоритми и структуре података: Структуре података

Итеративни алгоритмам за израчунавање


Фибоначијевог низа
procedura : fibonaci (n je nenеgativni broj )
if n  0 then y  0
else
begin
x  0, y  1
for i  1 to n  1
begin
z  x y
Итеративни поступак
x y
одређивања елемената
yz
Фибоначијевог низа end
end
y je fibonacijev broj
Висока школа електротехнике и рачунарства 12
Алгоритми и структуре података: Структуре података

Рекурзивни алгоритми
• Черчова теза: Аритметичка функција је израчунљива ако је
рекурзивна.
• Нажалост ова теза није доказана у математичком смислу. У
суштини она тврди да за неки проблем постоји алгоритам ако се
решавање проблема своди на израчунавање вредности адекватне
рекурзивне функције. Проблем који се решава тада се мора
формулисати као аритметички проблем. Проблем ван аритметике
мора се пресликати у аритметички. Да би се то постигло прво се
проблем мора представити неким универзалним језиком, на пример,
квантификаторског рачуна, а затим се то пресликава на језик
аритметике. Дакле:
• Рекурзивна функција је један општи модел алгоритма.
Висока школа електротехнике и рачунарства 13
Алгоритми и структуре података: Структуре података

Дигитални рачунар на апстрактном нивоу


• Процесор
• Меморија
• Улазно–излазни уређаји

• Процесор из меморије прибавља наредбе и податке над којима


се врши обрада у складу са значењем наредби, добијени
резултат се враћа у меморију. Подаци се у меморију уносе
преко улазно-излазних уређаја, односно из меморије
преузимају резултате обраде и приказују кориснику на
одговарајући начин.
Висока школа електротехнике и рачунарства 14
Алгоритми и структуре података: Структуре података

Тјурингова верзија Черчове тезе

• Проблем је алгоритамски решив акко се може решити на


Тјуринговој машини.

• Алгоритмом се може сматрати сваки низ инструкција који се


може урадити на Тјуринговој машини.

Висока школа електротехнике и рачунарства 15


Алгоритми и структуре података: Структуре података

Тјурингова машина се састоји од:

• Траке подељене у ћелије, меморијске регистре, која се неограничено


пружа на лево и десно. Број ћелија је неограничен.
Садржај ћелије може бити 0 или 1.

• Главе која се увек налази над тачно једном ћелијом траке.


• Индикатора стања машине

Висока школа електротехнике и рачунарства 16


Алгоритми и структуре података: Структуре података

Глава Тјурингове машине

• Налази се увек над тачно једном ћелијом траке и може:


• Прочитати садржај ћелије над којом се налази и
• Уписати у ћелију над којом се налази знак 1 или 0 (блано
знак, тј. обрисати ћелију) или померити се за један корак у
лево или у десно у односу на тренутну позицију.

Висока школа електротехнике и рачунарства 17


Алгоритми и структуре података: Структуре података

Наредбе Тјурингове машине

• Нека је S={q0, q1, …} је скуп стања Тјурингове машине.

• Свака наредба је четворка облика:


qi s o qj
Где су:
 qi и qj нека стања из скупа S, где је q0 почетно стање машине, а qz
завршно стање
 s је знак над којим се налази глава машине (1 или 0),
 о∈{1, 0, L, R} је ознака операције.

Висока школа електротехнике и рачунарства 18


Алгоритми и структуре података: Структуре података

• У сваком кораку рада машина анализира стање у којем се


налази и садржај ћелије над којом је глава, а затим извршава
наредбу која има одговарајуће вредности параметра qi и s.

• Ако је o:
 o=0 , у ћелију над којом се налази глава уписује се 0.
о=1 , у ћелију над којом се налази глава уписује се 1.
о=L, глава се помера улево за једну ћелију
o=R, глава се помера удесно за једну ћелију
Када заврши једну од ових акција, машина мења стање у qj

Висока школа електротехнике и рачунарства 19


Алгоритми и структуре података: Структуре података

Пример 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

Висока школа електротехнике и рачунарства 21

You might also like