slide1
Download
Skip this Video
Download Presentation
Linearne strukture

Loading in 2 Seconds...

play fullscreen
1 / 19

Linearne strukture - PowerPoint PPT Presentation


  • 152 Views
  • Uploaded on

Linearne strukture. Polja jednodimenzionalna (nizovi, vektori) dvodimenzionalna (matrice) višedimenzionalna (tenzori višeg reda) Povezani popis Stogovi Redovi. Definicija stoga. Princip rada stoga je LIFO (Last In First Out).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Linearne strukture' - alfonso-pearson


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Linearne strukture

Polja

jednodimenzionalna (nizovi, vektori)

dvodimenzionalna (matrice)

višedimenzionalna (tenzori višeg reda)

Povezani popis

Stogovi

Redovi

slide2

Definicija stoga

Princip rada stoga je LIFO (Last In First Out).

Stog kao struktura podataka definiran je pomoću četiri funkcije:

Push(x) - dodaje element x na stog

Pop( ) - vraća kao rezultat zadnji element stoga i briše ga

Clear( ) - briše sve elemente stoga

Is_empty( ) - vraća TRUE ako je stog prazan, inače FALSE

slide3

Izvedba stoga pomoću niza (1/4)

Nije dovoljan samo niz V od N elemenata, potreban je i dodatni podatak Sp (Stack pointer). Sp je cijeli broj koji pokazuje na zadnji element u stogu.

Prazni dio

stoga

6

5

4

3

2

1

Pokazivač stoga

Sp=4

Popunjeni

dio stoga

slide4

Izvedba stoga pomoću niza (2/4)

Stog je prazan ako je Sp = 0

Stog je pun ako je Sp = N

Stog se “puni” i “prazni” na “vrhu”. Podatak koji je zadnji stavljen na stog, bit će prvi skinut sa stoga.

Algoritam procedure Clear( )

Sp = 0

Algoritam funkcije Is_empty( )

Ako jeSp = 0 vratiti TRUE

vratiti FALSE

slide5

Izvedba stoga pomoću niza (3/4)

Algoritam procedure Push( x )

Ako je Sp = Nonda

Ispiši “Stack overflow. Aborting...”

Završi algoritam /* obavezan prekid programa! */

Sp = Sp + 1

VSp = x

slide6

Izvedba stoga pomoću niza (4/4)

Algoritam funkcije Pop( )

Ako je Sp = 0 onda

Ispiši “Illegal POP. Aborting...”

Završi algoritam /* obavezan prekid programa! */

x = VSp

Sp = Sp 1

Vratitix

Sve četiri operacije su “atomske”.

Vremenskasloženostsvake jeO(1)

slide7

Izvedba stoga pomoću povezanog popisa

Dovoljan je jedan povezani popis za izvedbu stoga.

Vrh stoga mora biti na početku povezanog popisa ako želimo biti efikasni.

Sve četiri osnovne funkcije se mogu izvesti kao “atomske”, međutim procedura Clear( ) u svojoj pravilnoj izvedbi može zahtjevati O(n) operacija

(n – broj elemenata na stogu).

slide8

Problem “putne torbe” (1/4)

ZADANO: Niz Tezine od n prirodnih brojeva

T – kapacitet torbe

TRAŽI SE: Naći bilo koji podskup Torba skupa Tezine tako da zbroj elemenata u Torba bude jednak T.

Ako takvog podskupa nema,

ispisati odgovarajuću poruku.

- Stog će predstavljati torbu. Stavljati i vaditi iz torbe predmete različitih težina dok se ne dobije tražena kombinacija. Rezultat su predmeti koji su trenutno na stogu.

slide9

Problem “putne torbe” (2/4)

Algoritam PUTNA TORBA

rješenje_postoji=FALSE

uk_tez=0,pred=0

Pozvati proceduru Torba

Ako rješenje_postojionda

Za svakii=1 dopred činiti

IspisatiTezinePop( )

U suprotnom

Ispisati “Nema rješenja”

slide10

Problem “putne torbe” (3/4)

Algoritam procedure Torba

Clear( )

Ponavljati

Ako jeuk_tez=Tondarješenje_postoji = TRUE

U suprotnom

Ako jeuk_tez<T i pred <nonda

pred = pred +1

uk_tez = uk_tez + Tezinepred

Push(pred)

U suprotnom

pred = Pop( )

uk_tez = uk_tez  Tezinepred

Ako jepred<nonda

pred = pred +1

uk_tez = uk_tez + Tezinepred

Push(pred)

Sve doknije rješenje_postoji i nije Is_empty( )

slide11

Problem “putne torbe” (4/4)

Algoritam isprobava sve moguće kombinacije.

Vrlo visoka složenost.

Vremenska složenost nije polinomijalna, već eksponencijalna

O(nn).

(U stvari se radi o kombinacijama bez ponavljanja

za svaki podskup od 1,2,...,n elemenata, što na kraju

rezultira danom ukupnom složenosti)

U ovom slučaju govorimo o NP-teškim problemima.

(NP kao nepolinomijalni)

slide12

Dobro je poznato da je

Problem računanja ‘povrh’ (1/3)

ZADANO: Nenegativni brojevi a,b; a b

TRAŽI SE: Dati algoritam koji će izračunati

Ali, čim je a veličine preko 20, rezultat je 20znamenkast i izlazi iz okvira SVIH cjelobronih tipova (čak i 64-bitnih)

slide13

Problem računanja ‘povrh’ (2/3)

Algoritam POVRH

s1.Clear( ), s2.Clear( )

s1.Push( a ), s2.Push( b )

povrh = 0

Ponavljati

n = s1.Pop( )

m = s2.Pop( )

Ako jem=n ili n=1 ili m=0 ondapovrh = povrh +1

U suprotnom

s1.Push( n-1 )

s2.Push( m-1 )

s1.Push( n-1 )

s2.Push( m )

Sve doknije s1.is_empty( )

Ispisatipovrh

slide14

Problem računanja ‘povrh’ (3/3)

Algoritam koristi 2 stoga, ali može se lako realizirati sa samo jednim stogom.

Algoritam uvijek uvećava rezultat za 1. Osim toga može i stavljati na stog ali otprilike isto toliko puta.

Tako da imamo ponavljanja.

Vremenska složenost opet nije polinomijalna, ona

iznosi:

O( ).

slide15

Problem sortiranja

QUICKSORT (1/5)

ZADANO: Niz V od N elemenata

TRAŽI SE: Preurediti elemente niza tako da bude

V1V2 ... VN

Ovaj put želimo bolje od kvadratne složenosti!

- Uzeti prvi element u nizu i naći mu odmah konačno mjesto, tako da svi lijevo od njega budu manji od njega, a svi desno od njega veći od njega (zapravo, mogu biti i jednaki, a ne strogo manji ili veći)

To se može postići u linearnom vremenu O(N)!

slide16

25

12

9

15

7

31

19

Vs>Vgg

25

7

9

15

12

31

19

Vdg>Vs

25

7

9

12

15

31

19

Problem sortiranja

QUICKSORT (2/5)

- Isti postupak ponavljati s lijevim i desnim podnizom, stogove iskoristiti samo za praćenje granica podnizova

slide17

Problem sortiranja

QUICKSORT (3/5)

Algoritam QUICKSORT

Push( 1 ), Push( N )

Ponavljati

gg = Pop( )

dg = Pop( )

s = Nadji_s(dg,gg)

Ako jedg < m–1onda

Push( dg )

Push( m–1 )

Ako jegg > m+1onda

Push( m+1 )

Push( gg )

Sve dok nije Is_empty( )

Ključna funkcija za ispravan rad

slide18

Problem sortiranja

QUICKSORT (4/5)

Algoritam funkcije Nadji_s(dg,gg)

Ponavljati

s = dg

Sve dokjeVgg>Vs i gg  sčinitigg = gg – 1

Ako jegg = sonda vratitis

Pozovi proceduruZamjeni( Vs, Vgg)

s = gg

Sve dokjeVdg > Vsi dg  sčinitidg = dg + 1

Ako jedg = sonda vratitis

Pozovi proceduruZamjeni( Vs, Vdg)

slide19

Problem sortiranja

QUICKSORT (5/5)

Algoritam funkcije Nadji_s ima najviše gg – dg ponavljanja.

Glavni program također razdvaja dijelove niza na podnizove. Dubljom analizom može se utvrditi da se razdvajanje u slučaju polovljenja većih dijelova niza, proteže na log2N razina.

Složenost algoritma je u tom slučaju O( N log N )

Međutim moramo biti svjeni da algoritam može doseći i

O( N 2 ) ukoliko je niz u početku sortiran ili obrnuto sortiran.

ad