Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen.

Slides:



Advertisements
Lignende præsentationer
Anskaffelse af ny teknologi
Advertisements

1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Iterativ udvikling og UP
DProg2 E Programmering 2 dProg2 E2010
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal.
GP10, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 10 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Fagets Informations Teknologi Introduktion til Programmering i Java For Industri, Global Forretningsudvikling, samt fri studie aktivitet ved Bent Thomsen.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
1 Nordjyllands Erhvervakademi Lektion 6 Opsamling på opgaver Mere om rekursion: –Del&Hersk –Sortering –Kompleksitet (effektivitet – ”Store O”) Abstrakte.
Datastruktur & Algoritmik1 Sidste gang 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.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
MM4 Algoritmiske grundprincipper. MM1 Lister, stakke og køer. MM2 Hash-tabeller og Træer. MM3 Sortering.MM4 Søgning.MM5.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel 2.3, , problem 30.1.c] Gerth Stølting Brodal.
1 Algoritmik ved Keld Helsgaun. 2 Plan Hvad er algoritmik? Et eksempel Kursusbeskrivelse formål, indhold og form.
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
Lektion 7 Læsestof: Kopier fra Caranno
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
FEN IntroJava AAU1 Loops og algoritmer Sweep – for-loop Søgning – while-loop.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
1 Algoritmedesign med internetanvendelser ved Keld Helsgaun.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal Aarhus Universitet.
Grundlæggende programmering Forår 2002
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Algoritmer og Datastrukturer 1 ”Rush Hour” Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
DADS: Algoritmer og Datastrukturer Forelæser: Gerth S. Brodal (vikar: EMS) Forelæsninger: timer, Aud E Kvarter: 3. (dADS 1) + 4. (dADS 2) Øvelser:
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Analyseværktøjer [CLRS, 1-3.1]
DAIMIIntroducerende objektorienteret programmering3C.1 Design af klasser Specifikation og implementation.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
I o p o DAIMI, AU, November 1999Introducerende objektorienteret programmering9D.1 Del, løs og kombinér.
Eksamen Praktisk prøve.
Manipulation af data Medieobjekter
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Programmering.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 2
Algoritmer og Datastrukturer 1
Grundlæggende Algoritmer og Datastrukturer
Algoritmer og Datastrukturer 1
Præsentationens transcript:

Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen

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!!

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

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

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

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

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)

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 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

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 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

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?

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.

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

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?

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?

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

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 Grådig algoritme

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.

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 Design korteste net der omfatter alle! Grådig algoritme

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

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

Datastruktur & Algoritmik21 Algoritmiske forbedringer afgørende også i fremtiden T(n) n n 5n 2 n 3 /2 2n2n Eksponentiel polynomiel T(n)10 3 s10 4 sForøgFak 100n n n 3 / n