Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen.

Lignende præsentationer


Præsentationer af emnet: "Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen."— Præsentationens transcript:

1 Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen

2 Datastruktur & Algoritmik2 Kursus Hvorfor dette kursus på Dat1/Inf1? –Kendskab til fundamentale algoritme og datastruktureringsteknikker –Kendskab til teknikker til at vurdere effektivitet og korrekthed af algoritmer –Kendskab til teknikker til at vurdere sværhed af problemer BOG: Cormen, Leiserson, Rivest..... Form –SE kursus, skriftelig eksamen (13 skala), 3 hjælpelærer. –Forelæsninger sidste halvdel, opgaver for gangen før i første halvdel. Tjek altid hjemmesiden inden opgaveregning!!

3 Datastruktur & Algoritmik3 KURSUSGANG 1 INTRODUKTION SORTERINGS ALGORITMER NETVÆRKS PROBLEMER Dårlige/Gode algoritmer?

4 Datastruktur & Algoritmik4 Software Udvikling Analyse & Specifikation Design Implementation Testing Dokumentation Vedligeholdelse Analyse&Design Programmering Datastruktur&Algoritmik

5 5 Hvorledes organiseres den information der ønskes behandlet ? DATALOGI DATATEKNIK Beskrivelse/foreskrift for hvordan information skal behandles. COMPUTER SCIENCE COMPUTER ENGINEERING Dualitet

6 Datastruktur & Algoritmik6 Problem Løsnings Proces Analyse Specifikation Design Abst.datastr. & alg. D begin var x: integer while x<=10 do x:=x+1 end; Implementation Konkr. datastr. & alg. JAVA PSEUDO-kode

7 Datastruktur & Algoritmik7 Kriterier Effektivitet/kompleksitet Hvad er kompleksistet af konkrete implementation Kompleksitet af algoritme baseret på valgte datastr. Kompleksitet af vilkårlig implementation Korrekthed Tilfredsstiller den konkrete implementation de opstillede krav? Korrekthed af algoritme baseret på valgte datastruktur Validering af valgt datastr (konsekvenser kan bestemmes inden implementation)

8 Datastruktur & Algoritmik8 Sortering SORT INPUT sekvens af tal a 1, a 2, a 3,….,a n b 1,b 2,b 3,….,b k OUTPUT sekvens af tal 3 2 5 4 2 3 4 5 KORREKTHED Standser på alle input, således at: b 1 < b 2 < b 3 < …. < b k b 1, b 2, b 3, …., b k er en permutation af a 1, a 2, a 3,….,a n (dvs k=n) KORREKTHED Standser på alle input, således at: b 1 < b 2 < b 3 < …. < b k b 1, b 2, b 3, …., b k er en permutation af a 1, a 2, a 3,….,a n (dvs k=n) KOMPLEKSITET Afhænger af antal elementer (n) hvor sorterede de er lagerform KOMPLEKSITET Afhænger af antal elementer (n) hvor sorterede de er lagerform

9 Datastruktur & Algoritmik9 INSERTION SORT Sortering ved indsættelse STRATEGI Start med tomme liste Indsæt nu et element i den allerede sorterede liste på rette plads Bliv ved indtil alle elementer er indsat STRATEGI Start med tomme liste Indsæt nu et element i den allerede sorterede liste på rette plads Bliv ved indtil alle elementer er indsat A 1nj 368497251 For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key i

10 Datastruktur & Algoritmik10 INSERTION SORT kompleksitet tid/gang antal gange For j:=2 to len(A) do key:=A[j] (* indsæt key *) i:=j-1 while i>0 and A[i]>key do A[i+1]:=A[i] i-- A[i+1]:=key KOMPLEKSITET: plads, båndbredde, tid,.... MODEL: enkelt CPU RAM maskine Kan det gøres bedre?

11 Datastruktur & Algoritmik11 Worst case vs Gns. Øvre grænse; det bliver aldrig værre! I nogle algoritmer forekommer worst case ofte. Ofte er gennemsnit lige så slemt som worst case.

12 Datastruktur & Algoritmik12 Design af Algoritmer Inkrementel Tilføj ét element af gangen til foreløbig løsning

13 Datastruktur & Algoritmik13 Design af algoritmer Del-og-hersk opdel sammensæt Function DH(p:problem):løsning if Let(p) then Løs(p) else Opdel p i p 1 og p 2 l 1 :=DH(p 1 ) l 2 :=DH(p 2 ) l:= Sammensæt(l 1, l 2 ) return l Function DH(p:problem):løsning if Let(p) then Løs(p) else Opdel p i p 1 og p 2 l 1 :=DH(p 1 ) l 2 :=DH(p 2 ) l:= Sammensæt(l 1, l 2 ) return l Parametrer Let Løs Opdel Sammensæt Eksempler Nulpkt.søgn Addition Sorterin?

14 Datastruktur & Algoritmik14 Mergesortering Del-og-hersk sortering Merge-Sort(A,p,r) (* Sortering A[p],A[p+1],..,A[r] *) if p<r then q:= (p+r)/2 Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Merge-Sort(A,p,r) (* Sortering A[p],A[p+1],..,A[r] *) if p<r then q:= (p+r)/2 Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Kan det gøres bedre?

15 Datastruktur & Algoritmik15 Problem 1 Bybusser Banegården Stadion AAU Problem: Design optimale (=korteste) cirkulære busrute så alle vigtige stoppe steder besøges præcis 1 gang 3 km 7 km 9 km

16 Datastruktur & Algoritmik16 Løsning (algoritme) Stops :={1..n} Besøgt:= Ø; total:=0; aktuel:=1; while not (Besøgt = {1..n}) do Tag m fra Stops\Besøgt så afst(aktuel,m) mindst; Besøgt:=Besøgt U {m}; total:=total+afst(m,aktuel); aktuel:=m total:=total+afst(aktuel,1) Stops :={1..n} Besøgt:= Ø; total:=0; aktuel:=1; while not (Besøgt = {1..n}) do Tag m fra Stops\Besøgt så afst(aktuel,m) mindst; Besøgt:=Besøgt U {m}; total:=total+afst(m,aktuel); aktuel:=m total:=total+afst(aktuel,1) Model = Graf A B C D 30 4 2 7 10 5 Grådig algoritme

17 Datastruktur & Algoritmik17 Kriterier Kompleksitet n iterationer Identifikation af m : n ________ IALT: størrelsesorden n 2 operationer Korrekthed Forkert!! NP-fuldstændigt problem. Ingen “effektiv” løsning kendes!! Adskillige NP-fuldstændige problemer.

18 Datastruktur & Algoritmik18 Problem2 Højhastigehedsnet i DK (155Mbps ) Net:= Ø; Med:= {AAU}; while not (Med = Alle) do Lad (x,y) være korteste kant mellem Med og Alle\Med; Med:=Med U {y} Udvid Net med (x,y) Net:= Ø; Med:= {AAU}; while not (Med = Alle) do Lad (x,y) være korteste kant mellem Med og Alle\Med; Med:=Med U {y} Udvid Net med (x,y) AAUDTU UNI-c RUC AU OU 540 111 320 340 200 15 30 185 210229 Design korteste net der omfatter alle! Grådig algoritme

19 Datastruktur & Algoritmik19 Kriterier Kompleksitet n iterationer Find midste af n 2 = k n 2 _________ IALT = str.orden n 3 Korrekthed JA!

20 Datastruktur & Algoritmik20 Tidskompleksitet Afhænger af Input til program Kvalitet af kode genereret af kompiler Instruktionshastighed af maskine Kompleksistet af underliggende algoritme. T(n) Køretid (værste) for input af størrelse n. Antal instruktioner på idealiseret maskine. T(n) er af størrelsesordenen … = abstraher fra konst. faktorer

21 Datastruktur & Algoritmik21 Algoritmiske forbedringer afgørende også i fremtiden T(n) n 5101520 1000 2000 3000 100n 5n 2 n 3 /2 2n2n Eksponentiel polynomiel T(n)10 3 s10 4 sForøgFak 100n1010010 5n 2 14453.2 n 3 /212272.3 2 n 10131.3


Download ppt "Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen."

Lignende præsentationer


Annoncer fra Google