Professional Documents
Culture Documents
Podatkovne strukture
Prof. Matja Colnari
Podatkovne strukture
Prof. Matja Colnari
Uvodni podatki
http://www.rts.uni-mb.si Matja Colnari, G2-1N-04, torek 13h-15h colnaric@uni-mb.si Matej progar, F202, torek 10h-12h matej.sprogar@uni-mb.si
Podatkovne strukture
Prof. Matja Colnari
Literatura
M. Colnari: Zbrani materiali. UM FERI Maribor, 2009. http://www.moodle.uni-mb.si I. Kononenko, M. Robnik ikonja: Algoritmi in podatkovne strukture I in II. Zaloba FE in FRI Ljubljana, 2004. (Jernej Kozak: Podatkovne strukture in algoritmi) M. Colnari, B. Hadjar: Strukture. Programsko okolje za demonstracijo delovanja ter eksperimentiranje s podatkovnimi strukturami in algoritmi. UM FERI Maribor, 2000-2006.
Podatkovne strukture
Prof. Matja Colnari
Vsebina
Uvod: algoritmi, zahtevnost. Podatkovne strukture, osnovni pojmi, primer (tabela); izvedba podatkovnih struktur. Sklad, vrsta: pojmi, definicije, statine in dinamine izvedbe, primeri uporabe. Linearni povezani seznam: pojmi, definicije, statine in dinamine izvedbe, posebne oblike seznamov, primeri uporabe. Zgoena tabela. Drevesa: pojmi, definicije, vrste, lastnosti, pregledi dreves. Kopica: naini gradnje, zahtevnosti. Iskalno drevo: lastnosti, vstavljanje v vrh. Nadziranje rasti iskalnih dreves: popolnoma izravnano drevo. Uravnoteeno drevo (AVL), optimalno drevo. Vesmerna drevesa: Bayerjevo (B-)drevo. Grafi: pojmi, definicije, predstavitve, pregledi, vpeta drevesa.
Podatkovne strukture
Prof. Matja Colnari
programiranje
niji nivo; realizacija specificiranih problemov obiajno zanemo uenje raunalnitva s programiranjem - s snovanjem algoritmov in uenjem programskih jezikov dovolj za reevanje preprostih problemov preverjanje: testiranje programov, verifikacija (preverjanje skladnosti s specifikacijami)
Podatkovne strukture
Prof. Matja Colnari
Primer:
3 4 8 2 7 5 6 1
Algoritem, zapisan v programskem jeziku, je program. Za programerja je problem reen, ko je sprogramiran; lahko reemo, da je raunalnitvo tudij algoritmov.
Podatkovne strukture
Prof. Matja Colnari
Lastnosti algoritma
Algoritem je konni nabor ukazov, ki ob izvajanju opravi neko nalogo v konnem tevilu korakov.
vhodi: - ima podatke (ni obvezna lastnost),
izhodi:
- ima rezultat(e),
dolonost:
konnost:
izvedljivost: - se ga da izvesti.
Podatkovne strukture
Prof. Matja Colnari
Snovanje algoritmov
Razvoj algoritma predstavlja preslikavo KAJ KAKO
Problema pri snovanju algoritma: Kako zasnovati algoritem, ki ni trivialno reljiv?
Obiajno kompleksni problem razdelimo na delne, jih loeno reimo ali dalje razdelimo na manje ter reitve sestavimo. V zahtevnejih primerih je vasih potrebno uporabiti bolj sofisticirane metode (glej poglavje o snovanju algoritmov).
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
naravni jezik:
grafini opis: psevdo kod:
programski jezik: program, izvedljiv na raunalniku. Lahko na razlinih nivojih. Tudi grafini!
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
Diagram poteka
odloitev
Povezovalna toka
povezava
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
sestavljeni stavek
stavek stavek
Psevdo kod
izvedbeni stavek
postavi, izraunaj, izvedi, itd..
//komentar
vhodno/izhodni stavek
preitaj, izpii da
odloitveni stavek
e je(ni) pogoj potem stavek1 [sicer stavek2]
(konec odloitve)
pogoj?
ne
stravek2 stavek1
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
Psevdo kod
ponovitveni stavki
ponavljaj za tevec od zaetni do konni s korakom korak stavek (konec zanke)
tevec=tevec+korak
tevec=zaetni
stavek
tevec=konni
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
Psevdo kod
ponovitveni stavki
ponavljaj za tevec od zaetni do konni s korakom korak stavek (konec zanke) tevec=zaetni
tevec>konni
da
tevec=tevec+korak
stavek
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
Psevdo kod
ponovitveni stavki
dokler je(ni) pogoj ponavljaj stavek (konec zanke)
pogoj
ne{da}
da{ne} stavek
Podatkovne strukture
Prof. Matja Colnari
Izraanje algoritmov
Psevdo kod
ponovitveni stavki
ponavljaj stavek dokler je(ni) pogoj stavek
pogoj
ne[da]
da[ne]
Podatkovne strukture
Prof. Matja Colnari
Analiza algoritmov
a) preverjanje pravilnosti
verifikacija, validacija. Testiranje.
b) preverjanje optimalnosti
ali gre morda algoritem zasnovati preprosteje ali ceneje;
Podatkovne strukture
Prof. Matja Colnari
Preverjanje algoritmov
Algoritmu slepo sledimo, zato ne sme imeti napak; preverjanje je potrebno na vseh nivojih snovanja; Verifikacija: preverjanje skladnosti s specifikacijami; (formalne) specifikacije so zelo pomembne; preverjajo se prenosna funkcija ter vstopni in izstopni pogoji. Testiranje je oji pojem kot verifikacija. Za testiranje obstajajo razline metode, npr. preizkus vseh loginih poti. Validacija: ali program opravi to, za kar je namenjen? (Vkljuuje tudi preverjanje specifikacij!)
Podatkovne strukture
Prof. Matja Colnari
Podatkovne strukture
Prof. Matja Colnari
Kakne so najbolja, najslaba in priakovana zahtevnost? obiajno je zahtevnost teko natanno realno doloiti v absolutnih enotah, zelo dobri so e priblini oz. relativni (primerjalni) rezultati; najvekrat je tudi to problematino takrat je dovolj red velikosti posebej teko je doloiti priakovano zahtevnost.
Podatkovne strukture
Prof. Matja Colnari
Teki problemi: eksponentne funkcije, npr. 2n, nn primerni le, kadar obdelujemo malo podatkov;
Lahki problemi: polinomski, logaritemski, npr. nc, n*log(n) ugodni, posebno pri majhnem c.
Podatkovne strukture
Prof. Matja Colnari
2x
x3
x2
104 103 102 10 1
1 2 4 8 16 32 64 128
x*log2(x) x log2(x)
Podatkovne strukture
Prof. Matja Colnari
Seta si je izbral itna zrna, kolikor je polj na ahovnici: na prvo polje 1, na drugo 2, na tretje 4 in na vsako naslednje dvakrat ve kot na prejnje.
Vladar je bil ualjen zaradi domnevnega omalovaevanja njegove irokogrudnosti, a se je kmalu streznil, ko so izraunali koliino zrnja, ki ga je dolan Seti:
18 446 744 073 709 551 615 zrn 1 200 000 000 000 m3 (v 1m3 gre priblino 15 milijonov zrn) e je irina shrambe 10m, viina pa 4m: dolina 30 000 000 km = 80x razdalja do Meseca ali petino razdalje od Zemlje do Sonca
Podatkovne strukture
Prof. Matja Colnari
Podatkovne strukture
Prof. Matja Colnari
2. opazujemo, kako tevilo vhodnih podatkov vpliva na tevilo izvajanj aktivne operacije. Primer:
vsota := 0; ponavljaj za I od 1 do N vsota := vsota + V[I] (konec zanke);
Podatkovne strukture
Prof. Matja Colnari
C[I,J] := vsota
(konec zanke) (konec zanke)
K J
[I,J]
Za merilo dimenzije vzamemo N namesto t. elementov 2*N2. Aktivna operacija naj bo mnoenje; tevilo ponovitev: N3
Podatkovne strukture
Prof. Matja Colnari
C[I,J] := vsota}
(konec zanke) (konec zanke)
Podatkovne strukture
Prof. Matja Colnari
f:
a: 1 poveanje tevca, 1 vpis, 1 primerjava b: 1 poveanje tevca, 1 vpis, 1 primerjava c: 1 vpis d: 1 poveanje tevca, 1 vpis, 1 primerjava e: 1 vpis, 2 aritm. oper., 2 ra. indeksa f: 1 vpis, 1 ra. indeksa
=3 =3 =1 =3 =5 =2
Podatkovne strukture
Prof. Matja Colnari
1012
1010
108 106
N3
104 102 1
10
100
1000
10000
Podatkovne strukture
Prof. Matja Colnari
g(n)
O(g(n)) podaja tip obnaanja T(n) pri velikih vrednostih n g(n) je asimptotina zgornja meja funkcije T(n)
n0
Podatkovne strukture
Prof. Matja Colnari
Primeri
2 PRIMER (N) for (j=0; j!=N; j=j+2) for (i=0; i!=N/2; i=i+3) x[i,j]++; Reitev: n/2 * n/2 * 1/3 = n2/12 T(n)= O(n2) 2 PRIMER (N) for (int i=0; i<N; i++) for (int j=0; j<=2*N; j=j+3) C[i]=C[i]*A[i][j]; int k=0; while (k<N) T=T+C[k]; k=k+2; Reitev: n*2*n/3 + n / 2 = =2*n2/3 + n/2 T(n)= O(n2) Zanka j od 0 do n-1, korak po 2: n/2 ponovitev Zanka i od 0 do n/2-1, korak po 3: n/2 x 1/3 ponovitev
n/2 ponovitev
Podatkovne strukture
Prof. Matja Colnari
iemo najboljo reitev; zahtevnost iskanja obiajno velika, ne moremo reiti v polinomskem asu (NP poln problem). Vasih pomaga vpeljava omejitve prostora in usmerjena strategija.
iskanje
pribline reitve
iemo reitev, ki bo zadostila naim priakovanjem; ni nujno najbolja, a je zahtevnost iskanja obvladljiva; kakovost reitev se lahko bolj ali manj priblia optimalni, praviloma je ne dosee.
stohastini
algoritmi
Podatkovne strukture
Prof. Matja Colnari
zanemo z obiskom enega od vozli. Naslednjo pot dobimo tako, da dodamo neko blinje vozlie.
poveemo po nekaj blinjih vozli v delne poti. Naslednjo reitev dobimo tako, da poveemo konec ene poti z zaetkom druge.
Podatkovne strukture
Prof. Matja Colnari
Deli in vladaj
Osnovna strategija reevanja problemov. Celoten problem skuamo razbiti na preprosteje podprobleme. To ponavljamo tako dolgo, dokler niso trivialno reljivi. Dekompozicija na dva naina: na raznovrstne podprobleme (top-down pristop, postopno izboljevanje; najobiajneja metoda programskega inenirstva)
na istovrstne podprobleme
(bolj zanimivo. Glej primere spodaj; tudi npr. iskanje nile funkcije z razpolavljanjem intervala, ..)
Podatkovne strukture
Prof. Matja Colnari
kadar graf ni prevelik, lahko preizkusimo vsa mona zaporedja obiskov, eprav nekatera niso smiselna; kadar je graf velik, ga je ugodno razdeliti na smiselne podgrafe (npr. obisk vseh strank v enem mestu ali strnjenem naselju) in poiskati delne reitve ter jih konno zdruiti v skupen obhod. Potrebno je stohastino poznavanje geografije oz. strateko odloanje o delitvi poti na dele. eprav ta reitev ne bo nujno optimalna, bo najbr sprejemljiva in dobljena z razumnim vloenim trudom.
Podatkovne strukture
Prof. Matja Colnari
Podatkovne strukture
Prof. Matja Colnari
Podatkovne strukture
Prof. Matja Colnari
Poreno iskanje
Reitev gradimo tako, da ne preizkusimo vseh monih reitev v nekem koraku, temve se odloimo za eno, najbolj obetavno. Primer: barvanje vozli grafa: vozlia je treba pobarvati s im manj barvami tako, da dve sosednji vozlii ne bosta iste barve. Reitev: pobarvamo prvo vozlie in nadaljujemo z vsemi vozlii, ki niso sosednja. Ko jih zmanjka, nadaljujemo z naslednjo barvo, itd. Iskanje v snopu: raziritev porene metode; ohranimo in preizkusimo n najobetavnejih reitev
Podatkovne strukture
Prof. Matja Colnari
Podatkovne strukture
Prof. Matja Colnari
Na ta nain dobivamo s transformacijami nove reitve. e so dobre, se bodo v naslednji generaciji ohranile v vejem tevilu ali obsegu, e so slabe, bodo izumrle. Veje tevilo pomeni vejo verjetnost sodelovanja pri krianju in s tem monost nastanka e boljih reitev.
Podatkovne strukture
Prof. Matja Colnari