The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Test TEST, 2023-05-29 05:07:43

IR2ASP_Predavanja_I

IR2ASP_Predavanja_I

Katedra za ra čunarsku tehniku i informatiku Odsek za softversko in ženjerstvo [SI ] Algoritmi i strukture podataka Milo V. Toma ševi ć


III IV II I Linearne strukture podataka Nelinearne strukture podataka Pretraživanje Sortiranje Algoritmi i strukture podatakaSadržaj


Uvod Algoritmi i strukture podataka  Algorithms + Data Structures = Programs  Dva osnovna gradivna bloka za implementaciju programskih sistema  Struktura podataka – opis načina organizacije podataka  Algoritam – opis načina obrade podataka


O algoritmima Algoritmi i strukture podataka  Osobine jedan ili više ulaza i izlaza nedvosmislenost i ostvarljivost naredbi kona čno vreme izvršavanja  Deterministi čko ponašanje (ali i pseudoalgoritmi)  Mera efikasnosti – vremenska i prostorna složenost  Naj češ će u pseudojeziku  Implementacija algoritama (jezik, mašina) Uvod


O strukturama podataka Algoritmi i strukture podataka  Modelira objekte i podatke iz problema  Elementarni, primitivni tipovi  Složeni, struktuirani tipovi logi čka struktura fizi čka struktura  Osnovni na čini struktuiranja homogeni - nizovi nehomogeni - zapisi Uvod


Uvod O strukturama podataka Algoritmi i strukture podatakaZapis  Agregacija elemenata različitog tipa (polja)  Tretira se kao logička celina  Koristi se u implementaciji dinamičkih struktura datoteka  Operacije obično nad poljima


Uvod O strukturama podataka Algoritmi i strukture podatakaZapis Smeštanje u memoriji a) kontinualna alokacija polja b) vezivanje polja za početak reči 14444444444244444444443 14243 marka snaga godina snaga marka godina 1444442444443 14243 14243 1444442444443 14243 1444444444424444444444443 a1 a1 a) b) 100 110 114 100 112 116


Podele struktura Algoritmi i strukture podataka  Po relacijama elemenata linearne nelinearne  Po mogu ćnosti promene veli čine stati čke dinami čke  Po mestu čuvanja unutrašnje (u operativnoj memoriji) spoljašnje (datoteke) Uvod O strukturama podataka


Uvod O strukturama podataka Algoritmi i strukture podatakaMemorijska reprezentacija Sekvencijalna  Fizički i logički poredak isti  Pristup elementima direktan  Obično za linearne strukture a) b)


Uvod O strukturama podataka Algoritmi i strukture podatakaMemorijska reprezentacija Ulančana  Fizički i logički poredak različiti  Pristup elementima indirektan  Koristi pokazivački mehanizam  Obično za nelinearne strukture


Linearne strukture podataka Algoritmi i strukture podataka  Linearna lista (a1, a 2, ..., a n), n ≥ 0  Apstraktni tip nezavisno od implementacije  Strukturno svojstvo – jednodimenzionalnost  Operacije obilazak po poretku 1..n pretraživanje pristup elementu umetanje brisanje, ...


Linearne strukture podataka Algoritmi i strukture podataka  Implementacija sekvencijalna – niz ulan čana – ulan čana lista  Disciplina pristupa LIFO - stek FIFO - red


Linearne strukture podataka Algoritmi i strukture podatakaNizovi  Niz - homogeni struktuirani tip  Indeks – pozicija elementa u nizu  X[l :u] = {X[i]}, i = l, l + 1, … , u - 1, u  Direktan pristup elementu bez ograničenja  Višedimenzionalni nizovi (nizovi nizova)  Selekcija elementa  Operacije


Linearne strukture podataka Nizovi Algoritmi i strukture podatakaSmeštanje vektora  Sekvencijalna reprezentacija, ne razdvaja se logički koncept od implementacije  Ai = Al + (i - l)s (jedan element zauzima s reči)  Efikasan, direktan pristup, neefikasno umetanje i brisanje X [l] X [i] X [u] Al Ai s X Predstavljanje nizova u memoriji


Linearne strukture podataka Nizovi Algoritmi i strukture podatakaSme štanje vektora  Kontinualno prostorno efikasno neefikasan pristup  Sa dopunjavanjem (padding ) iskoriš ćenje prostora S u = s /  s  efikasniji pristup X [l] 1442443 X [l+1] X [l+2] 1442443 1442443 X [l] 14424431442443 1442443 X[l+1] X [l+2] Predstavljanje nizova u memoriji


Linearne strukture podataka Nizovi Algoritmi i strukture podatakaSme štanje vektora  Pakovanje k = 1/ s  elemenata u jednoj re či prostorno iskoriš ćenje S u = ks Ai = Al +  (i - l)/ k pozicija u re či (i - l) mod k X [l] 123 X [l+6] 123 123 X [l+5] Predstavljanje nizova u memoriji


Linearne strukture podataka Nizovi Algoritmi i strukture podatakaSme štanje matrica  Cilj - efikasna adresna funkcija  Linearizacija po vrstama (row-major) po kolonama (column -major) X 1 i,1 i, j i,N M,1 M, j M,N i M 1 j N 1,1 1, j 1, N Predstavljanje nizova u memoriji


Linearne strukture podataka Nizovi Algoritmi i strukture podatakaSme štanje po vrstama  X[l 1:u 1, l 2:u 2 ]  Ai,j = Al1,l2 + (( i - l 1)( u2 - l2 + 1) + j - l 2 ) s  X[1:M,1:N]  Ai,j = A1,1 + ((i - 1) N + j - 1)s  ne zavisi od broja vrsta 1,1 1, j 1, N ... ... M,1 M,j M,N vrsta 1 vrsta i vrsta M i,1 i,j i,N Predstavljanje nizova u memoriji


Linearne strukture podataka Nizovi Predstavljanje nizova u memoriji Algoritmi i strukture podatakaSme štanje po kolonama  X[l 1:u 1, l 2:u 2 ]  Ai,j = Al1,l2 + ((j – l 2)( u1 – l1 + 1) + i – l 1 )s  X[1:M,1:N]  Ai,j = A1,1 + ((j - 1) M + i - 1) s  ne zavisi od broja kolona 1,1 i,1 M,1 ... 1,j i,j M,j ... 1, N i,N M,N kolona 1 kolona j kolona N


Linearne strukture podataka Nizovi Predstavljanje nizova u memoriji Algoritmi i strukture podatakaVi šedimenzionalni nizovi  X[1:u 1, 1:u 2, ..., 1:u n ]  Generalizovano smeštanje po vrstama X[1, ..., 1, 1] X[1, ..., 1, 2] … X[1, ..., 1, u n ] X[1, ..., 2, 1] X[1, ..., 2, 2] … X[1, ..., 2, u n ] ... X[u 1,..., un-1,1] X[u 1,..., un-1,2] … X[u 1,..., un-1, u n]  Leksikogafski poredak


Linearne strukture podataka Nizovi Predstavljanje nizova u memoriji Algoritmi i strukture podatakaVi šedimenzionalni nizovi Ai1,.., in = A1,..,1 + ((i 1 - 1)u 2 u 3...u n + (i 2 - 1) u 3 u 4...u n +… + (in-1 - 1)u n + i n - 1)s  Efikasno izra čunavanje offset = 0 for j = 1 to n do offset = U [j ] offset + I [j ] - 1 end_for A = A1,..,1 + s * offset  Implikacije na čina smeštanja


a) 0 x x x X b) X x x x 0 c) 0 0 0 0 X d) X 0 0 0 0 Linearne strukture podataka Nizovi Algoritmi i strukture podatakaOptimizacije pri smeštanju  Cilj – ušteda prostora, ali ipak efikasan pristup  Primer - trougaone matrice Optimizacije pri smeštanju nizova


Linearne strukture podataka Nizovi Optimizacije pri smeštanju nizova Algoritmi i strukture podatakaTrougaona matrica  Npr. donja trougaona matrica X[ i,j] = 0 , i < j  Primena smeštanja po vrstama X[1,1] X[2,1] X[2,2] X[3,1] X[3,2] X[3,3] ...  Ušteda u prostoru oko 50%  Ai,j = A1,1 + ( i (i - 1)/2 + j - 1)s ako je i ≥ j


1 2 n+1 X Y 1 n X Y 1 n n 1 2 a) b) Linearne strukture podataka Nizovi Optimizacije pri smeštanju nizova Algoritmi i strukture podatakaTrougaone matrice  X[i,j] = Z[i,j +1] ako je i ≤ j X[i,j] = 0 za i > j  Y[i,j] = Z[i,j] ako je i ≥ j Y[i,j] = 0 za i < j


0 0 0 0 9 0 0 0 0 0 0 4 0 0 0 0 0 5 0 8 0 0 0 0 0 0 0 11 0 0 15 0 0 0 0 X = 4 5 11 9 8 15 V 3 4 6 1 4 7 C 1 2 2 4 4 5 R Linearne strukture podataka Nizovi Optimizacije pri smeštanju nizova Algoritmi i strukture podatakaRetki nizovi  Relativno veliki broj nultih elemenata  Pamte se samo nenulti elementi – ušteda prostora  Vektorska reprezentacija  Neefikasne operacije!


list info info info next next next Linearne strukture podataka Algoritmi i strukture podatakaUlančane liste  Nedostaci sekvencijalne implementacije  Ulančana lista - ulančana implementacija linearne liste  Element liste - čvor  Dinamička alokacija, pokazivački mehanizam Ulančane liste


Linearne strukture podataka Ulan čane liste Osnovni pojmovi i osobine Algoritmi i strukture podatakaVrste lista  Po na činu povezanosti jednostruko ulan čane dvostruko ulan čane kružne nekružne  Po organizaciji ure đene neure đene


y z p q y z p q x ⇒ Linearne strukture podataka Ulančane liste Operacije sa jednostruko ulančanim listama Algoritmi i strukture podataka INSERT-AFTER(p, x) q = GETNODE info(q) = x next(q) = next(p) next(p) = q Jednostruko ulančane liste  Umetanje iza zadatog čvora


y z p q x z p q y ⇒ Linearne strukture podataka Ulančane liste Operacije sa jednostruko ulančanim listama Algoritmi i strukture podataka INSERT-BEFORE(p, x) q = GETNODE next(q) = next(p) info(q) = info(p) info(p) = x next(p) = q Jednostruko ulančane liste  Umetanje ispred zadatog čvora


x p y z x p z ⇒ Linearne strukture podataka Ulančane liste Operacije sa jednostruko ulančanim listama Algoritmi i strukture podataka DELETE-AFTER(p) q = next(p) next(p) = next(q) FREENODE(q) Jednostruko ulančane liste  Brisanje iza zadatog čvora


x p y q y p ⇒ Linearne strukture podataka Ulančane liste Operacije sa jednostruko ulančanim listama Algoritmi i strukture podataka DELETE(p) q = next(p) next(p) = next(q) info(p) = info(q) FREENODE(q) Jednostruko ulančane liste  Brisanje zadatog čvora


Linearne strukture podataka Ulan čane liste Operacije sa jednostruko ulan čanim listama Algoritmi i strukture podataka SEARCH(list, x) p = list while ( p ≠ nil) and (info ( p) ≠ x) do p = next ( p) end_while return p Jednostruko ulan čane liste Pretraživanje neure đene liste


Linearne strukture podataka Ulan čane liste Operacije sa jednostruko ulan čanim listama Algoritmi i strukture podatakaJednostruko ulan čane liste SEARCH-ORD(list, x) p = list while ( p ≠ nil) and (info ( p) < x) do p = next ( p) end_while if ( p ≠ nil) and (info ( p) > x) then p = nil end_if return p Pretraživanje ure đene liste


info info info next next next list Linearne strukture podataka Ulan čane liste Operacije sa kružnim ulan čanim listama Algoritmi i strukture podatakaKru žne liste  Poslednji čvor ukazuje na prvi  Omogu ćeno kružno kretanje po listi  Spoljašnji pokaziva č na listu ponekad ukazuje na poslednji čvor


list y y x ⇒list Linearne strukture podataka Ulančane liste Algoritmi i strukture podataka INSERT-AFTER-C(p, x) q = GETNODE info(q) = x next(q) = next(p) next(p) = q if (list = p) then list = q end_if Kružne liste Operacije sa kružnim ulančanim listama


Linearne strukture podataka Ulan čane liste Algoritmi i strukture podatakaKru žne liste sa zaglavljem list H H a) b) list  Na po četku poseban čvor – zaglavlje  Ukazuje na prvi čvor  Lista nikad nije prazna! Operacije sa kružnim ulan čanim listama


p q prev next info prev next info p q Linearne strukture podataka Ulančane liste Operacije sa dvostruko ulančanim listama Algoritmi i strukture podatakaDvostruko ulančane liste  Pokazivači na prethodnika i sledbenika  Lako kretanje u oba smera  next(prev(p)) = p = prev(next(p))


p q y z p q y z x r 3 5 6 4 2 1 ⇒ Linearne strukture podataka Ulančane liste Operacije sa dvostruko ulančanim listama Algoritmi i strukture podataka INSERT-AFTER-D(p, x) q = GETNODE info(q) = x r = next(p) prev(q) = p next(q) = r next(p) = q prev(r) = q Dvostruko ulančane liste Umetanje


q p r x y z q r x z ⇒ Linearne strukture podataka Ulančane liste Operacije sa dvostruko ulančanim listama Algoritmi i strukture podataka DELETE-D(p) q = prev(p) r = next(p) next(q) = r prev(r) = q FREENODE(p) Dvostruko ulančane liste Brisanje


Linearne strukture podataka Ulančane liste Poređenje ulančane i sekvencijalne reprezentacije linearnih lista Algoritmi i strukture podatakaPoređenje nizova i lista  Ulančana reprezentacija obično bolje koristi prostor efikasnija za operacije umetanja, brisanja, spajanja, ... fleksibilnost za dinamičke strukture  Sekvencijalna reprezentacija efikasniji pristup elementu pogodna za statičke strukture  Vektorska implementacija liste


Linearne strukture podataka Ulan čane liste Primene ulan čanih lista Algoritmi i strukture podataka 1 list 3 4 2 2 4 5 6 11 4 1 9 4 5 4 8 7 15 Predstavljanje retkih nizova  Jednostruko ulan čane liste ( čvor - nenulti element)  Lakše umetanje i brisanje  Pristup i dalje neefikasan  Poboljšanje – kružne liste ulan čane po vrstama i kolonama


Linearne strukture podataka Ulan čane liste Algoritmi i strukture podataka Primene ulan čanih lista Predstavljanje retkih matrica 1 3 2 4 2 6 11 4 1 9 4 4 8 5 7 15 4 5 R C 1 2 3 4 5 1 2 3 4 5 6 7


Linearne strukture podataka Ulan čane liste Primene ulan čanih lista Algoritmi i strukture podatakaPredstavljanje skupova  Vektorska realizacija prostorna neefikasnost efikasne operacije (unija, presek, razlika, pripadnost)  Ulan čana implementacija čvor - element skupa prostorno efikasnije manje efikasne operacije (za ure đene liste – O(n), za neure đene liste – O(n 2))


Linearne strukture podataka Ulan čane liste Primene ulan čanih lista Algoritmi i strukture podatakaPredstavljanje polinoma  Jednostruko ulan čane kružne liste sa zaglavljem  Npr. 3 x15 – 8 x 7 + 2 x - 6  Ako su liste ure đene po vrednosti polja eksponenta, efikasnost operacija ve ć a c exp c c c next exp exp exp next next next 3 15 -8 7 2 1 -6 0


Linearne strukture podataka Algoritmi i strukture podatakaStekovi  Linearna lista sa LIFO disciplinom pristupa  Jedan pristupni kraj – vrh steka  Dinamička, homogena struktura top A B C D E b top A B b top A B F G b C D E a) b) c) Stekovi


Linearne strukture podataka Stekovi Implementacija steka i operacije sa njim Algoritmi i strukture podatakaSekvencijalna reprezentacija  Niz S[1: n ]  Pokaziva č steka top [ S ]  Sadržaj S[1], ..., S [top [ S]] top 6 5 9 1 top 6 5 9 1 3 2 top 6 5 9 1 3 2 a) b) c)


Linearne strukture podataka Stekovi Implementacija steka i operacije sa njim Algoritmi i strukture podatakaOperacije sa stekom STACK-EMPTY( S ) if (top[S] = 0) then return true else return false end_if PUSH( S, x ) if (top[S] = n) then ERROR(Overflow) else top[S] = top[S] + 1 S[top[S]] = x end_if Provera da li je Umetanje prazan


Linearne strukture podataka Stekovi Implementacija steka i operacije sa njim Algoritmi i strukture podatakaOperacije sa stekom POP( S ) if (top[S] = 0) then return underflow else x = S[top[S]] top[S] = top[S] – 1 return x end_if TOP( S ) if (top[S] = 0) then return underflow else return S[top[S]] end_if Uklanjanje Čitanje bez uklanjanja


Linearne strukture podataka Stekovi Implementacija steka i operacije sa njim Algoritmi i strukture podatakaImplementacija dva steka  Rastu jedan prema drugom  Realokacija prostora izme đu stekova  Uslov prekora čenja top[2] = top[1] +1 b[1] top[1] b[1] b[2] b[2] top[2] top[1]top[2] S 1 S 1 S 2 S 2 a) b)


Linearne strukture podataka Stekovi Implementacija steka i operacije sa njim Algoritmi i strukture podatakaImplementacija vi še stekova top[1] top[2] top[3] top[4] top[5] b[1] b[2] b[3] b[4] b[5] b[6] b[1] top[1] top[2] top[3] top[4] top[5] b[2] b[3] b[4] b[5] top[1] top[2] top[3] top[4] top[5] b[1] b[2] b[3] b[4] b[5] S 1 S 2 S 3 S4 S 5 S 5 S 5 S 4 S4 S 3 S 3 S 2 S 2 b) c) a) S 1 S 1


Click to View FlipBook Version