You are on page 1of 27

Teorijske osnove informatike 1

30.oktobar 2014.

() Teorijske osnove informatike 1 30. oktobar 2014. 1 / 27


Pojam algoritma
Algoritam (efektivni postupak, efektivna procedura) predstavlja jedan od
najznačajnijih matematičkih pojmova.
Prisutan u matematici još od samog njenog nastanka.
Reč algoritam dolazi od latiniziranog imena arapskog matematičara
Al-Khwarizmija koji je u IX veku dao pravila za izvod̄enje četiri računske
operacije nad decimalnim zapisima realnih brojeva.
Već vekovima se pojam algoritma u matematici koristi u svom neformalnom,
intuitivnom smislu. Intuitivno, to je mehanički postupak za izvod̄enje neke
matematičke operacije.
Najpre dajemo opisne definicije pojmova koje ćemo kasnije strogo definisati.
Algoritam se neformalno može predstaviti na sledeći način:
ulaz −→ izračunavanje −→ izlaz
Izračunavanje je proces kojim se iz nekog početnog skupa podataka,
primenom fiksiranog skupa pravila, dobija krajnji rezultat.
Ulaz je početni niz podataka na kojima treba da se izvrši izračunavanje.
Fiksirani skup pravila je algoritam ili program.
Izlaz je rezultat izračunavanja.
Algoritam je, dakle, postupak koji mehanički (automatizovano) izvršava
mašina za računanje, računar ili čovek, da bi iz ulaza dobio izlaz.
Ako se algoritmom izračunavaju vrednosti neke funkcije, onda se za tu
funkciju kaže da je efektivno izračunljiva ili algoritamski izračunljiva, ili
samo izračunljiva.

Example
Funkcija NZD(m, n), m, n ∈ N (najveći zajednički delilac dva prirodna
broja) je izračunljiva.
Funkcija f : N → N data sa
( √
1, ako postoji n uzastopnih cifara 5 u decimalnom zapisu 2
f (n) =
0, inače

je dobro definisana, ali ne postoji način da se za svaki n ∈ N može



odrediti postoji li n uzastopnih petica u decimalnom zapisu broja 2,
tj. ne znamo da li je ova funkcija izračunljiva.

() Teorijske osnove informatike 1 30. oktobar 2014. 3 / 27


Osobine algoritma

Sledeći opšti uslovi se prihvataju kao kriterijumi za nazivanje nekog postupka


algoritmom:
(1) Svaki algoritam je konačan niz instrukcija.
(2) Postoji računsko sredstvo koje interpretira i izvodi instrukcije algoritma.
(3) Izračunavanje prema datom algoritmu je diskretne prirode, dakle izvodi se
korak po korak i bez korišćenja neprekidnih metoda.
(4) Postoji memorijski prostor u kojem se čuvaju, privremeno ili stalno, svi
podaci koji se javljaju prilikom izračunavanja.
(5) Izračunavanje prema datom algoritmu je determinisano, tj. izvodi se bez
korišćenja slučajnih metoda ili sredstava. Dakle, ponovljene primene
algoritma na iste ulazne veličine proizvode iste izlazne veličine.

() Teorijske osnove informatike 1 30. oktobar 2014. 4 / 27


(6) Nema ograničenja na veličinu ulaznih podataka, broj instrukcija,
veličinu memorije, kao ni dužinu računa koji se izvodi za konkretne
ulazne podatke.
(7) Algoritam ne mora proizvesti rezultat za sve ulaze. Dakle, moguće je
da se za odred̄ene ulazne podatke izračunavnje prema nekom
algoritmu nikada ne završi.
(8) Postoji univerzalan algoritam koji simulira izračunavanje po svakom
drugom algoritmu.
(9) Algoritama i objekata na kojima se algoritmi izvode ima prebrojivo
mnogo, ali ne i više.
(10) Algoritmi, ulazni i izlazni simboli mogu se efektivno kodirati u skupu
prirodnih brojeva.

() Teorijske osnove informatike 1 30. oktobar 2014. 5 / 27


Primeri algoritamski rešivih problema:
1 Sabiranje i množenje prirodnih brojeva.
2 Odred̄ivanje najvećeg zajedničkog delioca dva prirodna broja (Euklidov
algoritam).
3 Diferenciranje elementarnih funkcija.
4 Rešavanje pomoću radikala algebarskih jednačina drugog, trećeg i četvrtog
stepena.
5 Rešavanje sistema linearnih jednačina (Gausov postupak).
6 Utvrd̄ivanje tautologičnosti iskaznih formula.
Postoje i matematički problemi za koje je dokazano da nisu algoritamski rešivi.Niti
za jedan od sledećih primera ne postoji univerzalan i efektivan postupak kojim bi
se rešio proizvoljan zadatak iz navedene klase.
1 Rešavanje algebarskih diofantovskih jednačina (J. Matijašević.; Deseti
Hilbertov problem).
2 Utvrd̄ivanje istinitosti u strukturi prirodnih brojeva N aritmetičkih iskaza
predstavljenih u predikatskom računu prvog reda (K. Gedel; Drugi Hilbertov
problem)
3 Utvrd̄ivanje da li se program napisan u programskom jeziku C za proizvoljne
ulazne podatke zaustavlja posle konačno mnogo koraka (Halting problem).
Formalni algoritamski sistemi
Da bi se odgovorilo na pitanje "da li je neki matematički problem
algoritamski rešiv" potrebno je formalno precizirati pojmove algoritma i
izračunljivosti.
Algoritamski sistem je formalni sistem S u okviru kojeg se matematičkim
sredstvima definiše pojam efektivne izračunljivosti, odnosno pojam
algoritma. Sistemom S definiše se skup aritmetičkih funkcija
FS ⊆ {f |f : N k → N , k ∈ N }.
Za funkcije iz FS kažemo da su S -izračunljive.
Ako aritmetička funkcija f ne pripada FS , kažemo da f nije
S -izračunljiva.
Ako se nekom matematičkom zadatku M može nekako pridružiti
S-izračunljiva funkcija koja taj zadatak rešava, kažemo da je zadatak
algoritamski rešiv u S. Ako to nije moguće, kažemo da je M
algoritamski nerešiv u sistemu S.

() Teorijske osnove informatike 1 30. oktobar 2014. 7 / 27


Primeri formalnih algoritamskih sistema

Prve formalizacije pojma algoritma javljaju se tridesetih godina 20.-og


veka, pre pojave prvih digitalnih računara.
Primeri algoritamskih sistema:
sistem rekurzivnih funkcije (Gödel, Kleene [1936,1943]);
Turingove mašine (A.Turing [1936]);
Churchov λ-račun (Church [1936]);
Postovi sistemi (Post [1936,1943]);
normalni algoritmi Markova (Markov [1954]);
URM: sistem neograničenih registarskih mašina (Shepherdson and
Sturgis [1963]).
Svaki od ovih sistema ima osobine (1)-(10) i svaki od njih definiše jednu
klasu aritmetičkih funkcija.

() Teorijske osnove informatike 1 30. oktobar 2014. 8 / 27


Kakva je veza izmed̄u klasa izračunljivih funkcija FS i FS′ dva različita
sistema S i S′ ?
Da li algoritamska rešivost zadatka M zavisi od izbora algoritamskog
sistema, tj. da li je moguće da je zadatak M rešiv u algoritamskom sistemu
S, ali ne i u sistemu S′ ?
Iako naizgled različiti, svi ovi sistemi odred̄uju isti skup izračunljivih
funkcija, tj. jednu te istu klasu algoritama (FS = FS ′ ), što navodi na tezu
da ti sistemi izračunavanja upravo odred̄uju granice mogućnosti
mehaničkog izračunavanja (Čerčova teza).

() Teorijske osnove informatike 1 30. oktobar 2014. 9 / 27


Čerčova teza

To je hipoteza koju je Čerč postavio 1936. godine, a koja uspostavlja


odnos izmed̄u intuitivne i matematičkih definicija pojma algoritam.
Ona je najpre izrečena u obliku: Klasa rekurzivnih funkcija je ekvivalentna
sa klasom izračunljivih funkcija (tj. matematička definicija pojma algoritam
pomoću rekurzivnih funkcija je ekvivalentna intuitivnom shvatanju pojma
algoritam).
Kako su sve matematičke definicije pojma algoritam ekvivalentne
med̄usobno, ona se uopštava u obliku:
Definicija algoritma u intuitivnom smislu ekvivalentna je sa nekom
matematičkom definicijom algoritma.
Zašto je ovo hipoteza, a ne teorema?
Šta su argumenti koji idu i prilog tezi Čerča?

() Teorijske osnove informatike 1 30. oktobar 2014. 10 / 27


Kodiranje
Osobina (10) algoritama nam omogućava da govorimo o algoritamskoj rešivosti
matematičkih zadataka koji nisu aritmetičkog karaktera.
Naime, možemo podatke vezane za rešavanje nearitmetičkog zadatka (ulaz,
program, izlaz) preslikati u skup prirodnih brojeva, izborom neke 1-1 funkcije.
Ovakvo preslikavanje zovemo kodiranje ili gedelizacija, a brojeve koji predstavljaju
slike zovemo kodovima.
Definicija
Preslikavanje g : D → N je kodiranje skupa D ako
(1) g je 1-1 preslikavanje,
(2) za svaki element x iz D može se u konačnom broju koraka odrediti
pridruženi broj g (x ) -njegov kôd,
(3) Za dati prirodni broj može se u konačnom broju koraka proveriti da li je to
kôd nekog elementa iz D i, ako jeste, naći odgovarajući element
(dekodiranje).

Dakle,
kodiranje izracunavanje dekodiranje
D −→ N −→ N −→ D.
() Teorijske osnove informatike 1 30. oktobar 2014. 11 / 27
Example
Neka je !
♣ ♦ ♥ ♠
D = {♣, ♦, ♥, ♠}, g= .
3 5 7 9
Ako je (z1 , z2 , . . . , zn ) niz elemenata iz D , neka je
g (z )
ĝ(z1 , z2 , . . . , zn ) = 2g(z1 ) · 3g(z2 ) · · · · · pn n
gde je 2, 3, 5, . . . , pn niz prvih n prostih brojeva. Tada
ĝ (♣♣♥♦♣) = 23 · 33 · 57 · 75 · 113 .
Osnovni stav aritmetike(razlaganja prirodnog broja na proste činioce): Za svaki
n ∈ N postoje jedinstveno odred̄eni prosti brojevi 2 ≤ p1 < p2 < · · · < pk i
jedinstveno odred̄eni prirodni brojevi m1 , m2 , . . . , mk takvi da je
n = p1m1 · p2m2 . . . pkmk
Iz prethodne teoreme sledi da možemo ispuniti i zahtev (3), tj. da za svaki
prirodni broj možemo u konačno mnogo koraka ispitati da li je kôd nekog
elementa i, ako jeste, odrediti taj element.
Na primer,
12 = 22 · 3 nije kôd
,
864 = 25 · 33 je kod niza ♦♣.
() Teorijske osnove informatike 1 30. oktobar 2014. 12 / 27
Example
Ako su kodovi osnovnih simbola aritmetike i logike
!
0 ≤ + · ⇒ ∧ ∨ ¬ ∃ ∀ = xi
g=
1 2 3 4 5 6 7 8 9 10 11 20 + i

tada je kod aritmetičke formule ϕ = s1 s2 . . . sk ,


g(sk )
ĝ (ϕ) = 2g(s1 ) · 3g(s2 ) . . . pk .

Na primer,

ĝ (x1 ≤ x2 → ∃x3 x1 + x3 = x2 ) = 221 32 522 75 119 1323 1721 193 2323 2911 3122 .

() Teorijske osnove informatike 1 30. oktobar 2014. 13 / 27


Idealni računar (IR)

Sada ćemo dati opisnu definiciju algoritamskog sistema URM ("unlimited


register machine") -naograničena registarska mašina.
Saglasno neformalnoj definiciji algoritma, URM se realizuje na idealnom
računaru (IR) koji ima sledeće osobine:
nema nikakvih ograničenja na veličinu memorijskog prostora,
nema nikakvih ograničenja na veličinu ulaznih podataka (za razliku od
realnog računara),
programi su konačni, odnosno sva izračunavanja se izvode u
konačno mnogo koraka,
broj ulaznih podataka je konačan, a izlaz je samo jedan,
ulazni i izlazni podaci su isključivo prirodni brojevi.

() Teorijske osnove informatike 1 30. oktobar 2014. 14 / 27


Definicija
Idealni računar (kraće IR) ima sledeće delove:
neograničen niz registara R1 , R2 , R3 , . . . koji u svakom trenutku sadrže
prirodne brojeve r1 , r2 , r3 , . . . . Ovi brojevi se mogu menjati tokom procesa
izračunavanja.
R1 R2 R3 ...
| r1 | r2 | r3 | . . .

program holder - prostor koji čuva konačan niz instrukcija P = (I1 , I2 , . . . , In )


koji zovemo program. Idealni računar može da interpretira i izvodi
instrukcije. Instrukcije su numerisane prirodnim brojevima.
I1
I2
..
.
In

brojač (counter) koji u svakom trenutku sadrži prirodni broj k - redni broj
instrukcije koju IR treba da izvrši u tom trenutku.
k
IR radi na sledeći način:
unosimo program u program holder
u registre unosimo konačan niz prirodnih brojeva (ulazni podaci)
IR unosi u brojač 1 i počinje da izvršava instrukcije unetog programa
IR izvršava onu instrukciju čiji je redni broj upisan u brojaču u tom
trenutku
sa završetkom izvršavanja neke instrukcije, u brojač se upisuje redni
broj sledeće instrukcije
IR prestaje sa radom kada je u brojaču upisan broj veći od broja
instrukcija koje čine program; ako se to ne dogodi IR radi zauvek.

() Teorijske osnove informatike 1 30. oktobar 2014. 16 / 27


Instrukcije koje prepoznaje idealni računar
IR prepoznaje i izvršava sledeća četiri tipa instrukcija:
NULA INSTRUKCIJA
Ako je
Ik : Z (n), (n ≥ 1)
IR je izvršava tako što u registar Rn unosi 0, ostali registri su
nepromenjeni, a u brojač upisuje broj k + 1.
Pišemo 0 → Rn ili rn = 0.

Example
6 1 5 8 0 ...
1
I1 : Z (3)
6 1 0 8 0 ...
2

() Teorijske osnove informatike 1 30. oktobar 2014. 17 / 27


INSTRUKCIJA SLEDBENIKA
Ako je
Ik : S (n), (n ≥ 1)
IR je izvršava tako što sadržaj registra Rn uvećava za 1, ostali registri su
nepromenjeni, a u brojač upisuje broj k + 1.
Pišemo rn + 1 → Rn ili rn := rn + 1

Example
6 1 0 8 0 ...
2
I2 : S (4)
6 1 0 9 0 ...
3

() Teorijske osnove informatike 1 30. oktobar 2014. 18 / 27


INSTRUKCIJA PRENOSA
Ako je
Ik : T (m, n), (m ≥ 1, n ≥ 1)
IR je izvršava tako što u registar Rn unosi sadržaj registra Rm , ostali
registri su nepromenjeni, a u brojač upisuje k + 1.
Pišemo: rm → Rn ili rn := rm

Example
6 1 0 9 0 ...
3
I3 : T (4, 2)
6 9 0 9 0 ...
4

() Teorijske osnove informatike 1 30. oktobar 2014. 19 / 27


INSTRUKCIJA PRELAZA
Ako je
Ik : J (m, n, p ), (m ≥ 1, n ≥ 1, p ≥ 1)
IR je izvršava tako što sadržaji registara ostaju nepromenjeni, a u brojač
se upisuje p ako su sadržaji registara Rm i Rn jednaki, a upisuje k + 1, ako
su sadržaji Rn i Rm različiti.

Example
6 9 0 9 0 ...
4
I4 : J (3, 5, 6)
6 9 0 9 0 ...
6

() Teorijske osnove informatike 1 30. oktobar 2014. 20 / 27


Konvergencija i divergencija programa
Neka je P = (I1 , . . . , Is ) neki program i n ≥ 1 prirodni broj.
Unesimo prirodne brojeve a1 , a2 , . . . , an redom u registre R1 , R2 , . . . , Rn (u
ostalim je automatski upisano 0). Taj početni niz brojeva u registrima pre
startovanja programa se naziva početna konfiguracija.
R1 R2 R3 ... Rn ...
početna konfiguracija
| a1 | a2 | a3 | . . . | an | . . .

Definicija
Ako IR završi izračunavanje po programu P i u registru R1 je na kraju
upisan broj b, tada kažemo da program P konvergira za ulaz
(a1 , . . . , an ) ka izlazu b i pišemo P (a1 , . . . , an ) ↓ b.
Ukoliko se IR nikada ne zaustavi pri izvršavanju programa P za ulaz
(a1 , . . . , an ), kažemo da program P divergira za ulaz (a1 , . . . , an ) i
pišemo P (a1 , . . . , an ) ↑ .

Niz prirodnih brojeva u registrima nakon završetka programa čini završnu


konfiguraciju.
() Teorijske osnove informatike 1 30. oktobar 2014. 21 / 27
Example
Neka je dat program:
I1 : J (3, 2, 5)
I2 : S (1)
I3 : S (3)
I4 : J (1, 1, 1)
Tada:
(a) ◮ P (3, 2) ↓ 5,
◮ P (5, 2) ↓ 7,
◮ uopšte P (x , y ) ↓ x + y .
(b) ◮ P (3, 2, 1) ↓ 4,
◮ P (5, 2, 1) ↓ 6, ali
◮ P (3, 2, 3) ↑.
◮ Uopšte P (x , y , z ) ↓ x + y − z , za z ≤ y ,
◮ P (x , y , z ) ↑, za z > y .

() Teorijske osnove informatike 1 30. oktobar 2014. 22 / 27


Izračunljive funkcije
Neka je P program i n ≥ 1 prirodni broj.
Za proizvoljne prirodne brojeve x1 , . . . , xn neka je
(
def y, ako P (x1 , . . . , xn ) ↓ y
fPn (x1 , . . . , xn ) =
nedefinisano, ako P (x1 , . . . , xn ) ↑

Program P i broj n odred̄uju funkciju fPn : D → N čiji domen D čine sve


n-torke prirrodnih brojeva za koje program P konvergira. Skup vrednosti ove
funkcije je skup svih izlaza koji se dobijaju izračunavanjem po programu P
za ulazne n−torke prirodnih brojeva.
Za funkciju fPn kažemo da je izračunljiva.
Samo funkcije koje se mogu definisati na ovaj način smatraćemo
izračunljivim.

Definicija
Funkcija f : D → N, D ⊆ N n je izračunljiva ako postoji program P koji izračunava
njene vrednosti, tj.
ako (x1 , . . . , xn ) ∈ D onda P (x1 , . . . , xn ) ↓ f (x1 , . . . , xn ),
ako (x , . . . , x ) < D onda P (x , . . . , x ) ↑.
Example
Sabiranje prirodnih brojeva je izračunljiva funkcija, jer za program
P = (I1 , I2 , I3 , I4 ),
I1 : J (3, 2, 5)
I2 : S (1)
I3 : S (3)
I4 : J (1, 1, 1)
važi
P (x , y ) ↓ x + y za svako x , y ∈ N ,
što dokazuje da je funkcija

fP2 (x , y ) = x + y (x , y ∈ N )

izračunljiva. Njen domen je skup N 2 .


Isti program dokazuje da je funkcija
(
x + y − z, ako y ≥ z
gP3 (x , y , z ) =
nedefinisano, ako y < z

izračunljiva.
Njen domen je D = {(x , y , z ) ∈ N 3 |y ≥ z }
() Teorijske osnove informatike 1 30. oktobar 2014. 24 / 27
Teorema
(a) Nula funkcija z : N → N, z (x ) = 0 je izračunljiva funkcija.
(b) Funkcija sledbenik s : N → N , s (x ) = x + 1 je izračunljiva.
(c) Projekcije πni : N n → N πni (x1 , . . . , xn ) = xi , 1 ≤ i ≤ n, su izračunljive
funkcije.

Dokaz
Odgovarajuće programe koji dokazuju izračunljivost ovih funkcija čini samo
po jedna instrukcija i to:
(a) I1 : Z (1)
(b) I1 : S (1)
(c) I1 : T (i , 1).

() Teorijske osnove informatike 1 30. oktobar 2014. 25 / 27


Example
(
· x − 1, x > 0
Pokazati da je funkcija x − 1 = izračunljiva.
0, x = 0
Ova funkcija je izračunljiva, jer sledeći program računa njene vrednosti:
I1 J (1, 2, 10)
I2 S (3)
I3 J (1, 3, 7)
I4 S (2)
I5 S (3)
I6 J (1, 1, 3)
I7 T (2, 1)

() Teorijske osnove informatike 1 30. oktobar 2014. 26 / 27


Example
x
(
2
, ako je x paran
Pokazati da je funkcija f (x ) =
nedefinisano, ako je x neparan
izračunljiva.

() Teorijske osnove informatike 1 30. oktobar 2014. 27 / 27

You might also like