Introduktion - PowerPoint PPT Presentation

About This Presentation
Title:

Introduktion

Description:

... 42.2 velsesopgaver Multiple choice tests Sp rgsm l til stoffet Data Structures & Problem Solving Using Java Mark Allen Weiss, Addison-Wesley, 1998. ... – PowerPoint PPT presentation

Number of Views:98
Avg rating:3.0/5.0
Slides: 37
Provided by: Keld5
Category:

less

Transcript and Presenter's Notes

Title: Introduktion


1
Datastrukturer og algoritmer
ved Keld Helsgaun
2
Plan
  • Algoritmebegrebet
  • Kursusbeskrivelse

3
Hvad er en algoritme?
Bemærk. Det er ikke et krav, at en algoritme
skal kunne udføres på en datamat! Dette kursus
omhandler dog mest algoritmer af denne type.
4
Tre vigtige områder Design
Analyse Verifikation
Design Hvorledes konstrueres en
algoritme? Analyse Hvor ressourcekrævende er
en algoritme? Verifikation Er en algoritme
korrekt?
5
Hvorfor studere algoritmer?
(1) For at kunne vælge kvalificeret imellem
eksisterende algoritmer (2) For at kunne
tilpasse eksisterende algoritmer til givne
formål (3) For at kunne udvikle nye
algoritmer
6
Databegrebet
Data En formaliseret repræsentation af
kendsgerninger eller forestillinger på en sådan
form, at den kan kommunikeres eller omformes ved
en eller anden proces. Datalogi Læren om data,
deres væsen og brug. Datastruktur Den
sammenhæng, der er mellem en række sammenhørende
dataelementer.
7
Informationsbegrebet
Information Det betydningsindhold, et
menneske tillægger data ud fra en vedtagen
konvention. Informationsteknologi Enhver
form for teknologi, der anvendes til opsamling,
behandling, lagring og formidling af data og
information.
8
Hvad forstås ved en god algoritme?
(1) En algoritme, der løser problemet
korrekt (2) En algoritme, der er (tilstrækkelig)
hurtig (3) En algoritme, der kræver et
(tilstrækkeligt) lille lagerforbrug (4) En
algoritme, der er simpel De sidste tre krav kan
ofte være i konflikt med hinanden.
9
Betydningen af effektive algoritmer
Hvorfor bekymre sig om effektivitet med
dagens hurtige computere?
Teknologi forbedrer hastigheden med en konstant
faktor. Med godt algoritmedesign opnås ofte
langt større hastighedsforbedringer.
En dårlig algoritme på en supercomputer kan være
langsommere end en god algoritme på en kugleramme.
Antag at en algoritmes tidsforbrug er
proportional med kvadratet på problemet størrelse
(tid kn2, hvor k er en konstant, og n er
problemstørrelsen). Med anskaffelsen af en ny
computer med 10 gange så meget lager, kan der
løses problemer, der er 10 gange så store. Men
hvis den nye computer kun er 10 gange
hurtigere, vil det tage 10 gange så lang tid at
udføre algoritmen.
10
Algoritmebegrebet
Historie Ordet algoritme er
oprindelig afledt af algorisme (i
middelalderen) at udføre aritmetik med arabertal,
i modsætning til abacisme at udføre aritmetik
med kugleramme. Algorisme er igen afledt at
navnet på en persisk forfatter af
matematiklærebøger, Abu Jafar Mohammed ibn Mûsâ
al-Khowârizmî (cirka år 825).
11
Euklids algoritme
En af de første ikke-trivielle algoritmer blev
designet af Euklid (græsk matematiker cirka 300
år f. Kr.)
Den største fælles divisor for to positive heltal
er det største heltal, der går op i begge tal
(giver resten 0 ved division).
Givet Løsning 24 og 32 8 og 12
7 og 8
8 4 1
12
Lad gcd(u,v) betegne største fælles divisor for
u og v. Problemet kan da formuleres
således Givet to heltal u 1 og v 1. Bestem
gcd(u,v). gcd betegner greatest common
divisor
Løsning af problemet er bl.a. relevant ved
forkortelse af brøker 24 24/gcd(24,32)
24/8 3 32 32/gcd(24,32)
32/8 4
13
To simple algoritmer
En simpel algoritme er følgende (skrevet i
Java)
En anden simpel algoritme er
Algoritmernes ineffektivitet er tydelig for store
værdier af u og v, f.eks. 461952 og 116298 (hvor
gcd er lig med 18).
14
Euklids algoritme
Euklid benyttede følgende observation til at
opnå en mere effektiv algoritme Hvis u v, og
d går op i både u og v, så går d også op i
differensen imellem u og v.
Hvis u gt v, så gælder gcd(u,v)
gcd(u-v,v). Hvis u v, så gælder gcd(u,v) v
gcd(0,v) Hvis u lt
v, så udnyttes, at gcd(u,v) gcd(v,u) u
og v ombyttes
15
Euklids algoritme(version 1)
while (u gt 0) if (u lt v) int t
u u v v t u u - v gcd
v
Eksempel på kørsel

u 461952, v 18 u 461934, v 18 u
461916, v 18 . . . u 18 , v
18 u 0 , v 18
461952/18 25664 iterationer
16
Euklids algoritme(version 2)
Kan effektiviteten forbedres? Ja.
Algoritmen trækker v fra u, indtil u bliver
mindre end v. Men det er præcis det samme som at
dividere u med v, og så sætte u lig med resten.
Hvis u gt v, så er gcd(u,v) gcd(uv,v).
Antallet af iterationer ved kørsel af eksemplet
fra før reduceres til 1.
17
Udførelse af version 2

u 461952, v 116298 u 113058, v
116298 u 3240, v 113058 u 2898, v
3240 u 342, v 2898 u 162, v
342 u 18, v 162 u 0, v 18

7 iterationer
Algoritmen er meget effektiv, selv for store
værdier af u og v. Hvor effektiv kan bestemmes
ved algoritmeanalyse. antal iterationer 4.8
log10N - 0.32, gennemsnitligt antal
iterationer 1.94 log10N
18
En alternativ algoritme
En velkendt metode til forkortelse af brøker
Ethvert positivt heltal kan udtrykkes som et
produkt af primfaktorer u 2u2 . 3u3 .
5u5 . 7u7 . 11u11 ... ? pup
p primtal Lad u og v være to
heltal. Så kan gcd(u,v)
bestemmes som ? pmin(up ,vp) .
p primtal Eksempel u 4400 24
. 52 . 70 . 111, v 7000 23 . 53 . 71 .
110 gcd(u,v) 23 . 52 . 70 . 110 23 .
52 8 . 25 200
19
Ulempe ved den alternative algoritme
Der kendes i dag ingen effektiv metode til at
opløse et tal i dets primfaktorer.
Dette faktum udnyttes i dag i mange
krypteringsalgoritmer (algoritmer til
hemmeligholdelse af meddelelser).
20
Algoritmebegrebet(præcisering)
Ved en algoritme forstås en fremgangsmåde
til løsning af et problem. Udover blot at være en
sekvens af operationer skal en algoritme have
følgende 4 egenskaber (1) Endelighed.
Algoritmen skal terminere efter et endeligt antal
skridt. (2) Entydighed. Hvert skridt skal
være defineret præcist og utvetydigt. (3)
Effektfuldhed. Hvert skridt skal kunne udføres
på endelig tid. (4) Korrekthed. Udførelse
af algoritmen skal resultere i uddata, der
opfylder en specificeret relation med de givne
inddata.
21
Euklids algoritme er en
algoritme
En kogebogsopskrift er i mange tilfælde ikke en
algoritme udsagn som tilsæt en smule salt,
rør forsigtigt er ikke tilstrækkeligt
præcise
22
Matematisk definition af begrebet algoritme
En beregningsmetode er et tupel (Q, I, ?,
f), hvor Q er en mængde, der omfatter mængderne I
og ?, og f er en funktion fra Q på sig selv.
Endvidere skal f(q) være lig med q for alle q i
?. Q repræsenterer mængden af
beregningstilstande, I mængden af
inddatatilstande, ? mængden af uddatatilstande og
f den beregningsmæssige regel. Hvert
element x i I definerer en beregningssekvens x0
x, xk1 f(xk) for k 0. En
beregningssekvens siges at terminere i k skridt,
hvis k er det mindste heltal, for hvilket xk
tilhører ?. En algoritme er en
beregningsmetode, der for enhver
beregningssekvens terminerer i et endeligt antal
skridt.
23
Notation for algoritmer
(1) Natursproglig beskrivelse E1.
Find rest Divider u med v, og lad r betegne
resten. E2. Er den nul? Hvis
r 0, så afslut algoritmen med v som svar.
E3. Ombyt Sæt u lig med v, og v lig med r. Gå
til trin E1. (2) Rutediagram
24
(3) Programmeringssproglig beskrivelse, f.eks. i
Java (eller en tilpasset delmængde heraf)

25
Kursusbeskrivelse
  • Formål
  • Mål
  • Indhold
  • Form

26
Formål
Formålet er

at
opøve evnen til at konstruere algoritmer at
give viden om centrale algoritmer og
datastrukturer at give kendskab til analyse
og verifikation af algoritmer
Hovedvægten lægges på de to første punkter.
27
Mål
Målet er, at den studerende
kender til de vigtigste principper
for algoritmekon- struktion og er i stand til at
anvende dem i praksis
kender til elementære datastrukturer og deres
anvendelse i forbindelse med implementering af
abstrakte datatyper
kender til en række vigtige
algoritmer inden for datalogien, bl.a.
algoritmer til sortering og søgning
i simple tilfælde kan bestemme
kompleksiteten af en forelagt algoritme og
udtrykke den ved O-notation
har et rudimentært kendskab til
algoritmeverifikation
28
Indhold
(1) Algoritmeanalyse (2) Datastrukturer
I (3) Rekursion (4) Sortering
(5) Anvendelser I (6) Anvendelser II
(7) Anvendelser III (8) Datastrukturer II
(9) Datastrukturer III (10) Datastrukturer IV
29
Form
Forelæsningerne gennemgår pensum i lærebogen,
men ofte på en anderledes måde. Forelæsningerne
supplerer lærebogen. Der lægges vægt på
datalogiens kreative sider, således bl.a. på
designprincipper for algoritmer. Øvelserne
udgør et absolut nødvendigt led i kurset
(jvf. man kan ikke blive musiker ved kun at
læse musikteori). Arbejdsbelastning 12
timer/uge
30
Øvelserne
varetages af Kim Haagensen Mads
Hjorth mandage 1300-1530 og tirsdage 930-1200,
teorirummet i 42.2
  • Øvelsesopgaver
  • Multiple choice tests
  • Spørgsmål til stoffet

31
Lærebog
Data Structures Problem Solving Using
Java Mark Allen Weiss, Addison-Wesley, 1998.
  • Fordele
  • gode beskrivelser på letforståeligt engelsk
  • vægt på dataabstraktion
  • algoritmerne er omsat til udførbar kode

32
Relation til det tidligere kursus Algoritmik
  • Java-baseret lærebog
  • Mere fokus på datastrukturer
  • Mere objektorienteret
  • Mere anvendelsesrorienteret

33
Deltagerforudsætninger
  • Kurset Datalogi A (struktureret
    programmering) på den naturvidenskabelige
    basisuddannelse eller tilsvarende.
  • Kendskab til datalogiske metoder og praktiske
    erfaringer med datalogisk projektarbejde, af et
    minimumsomfang svarende til et halvt semesters
    arbejde.
  • Det er en fordel at have et basalt kendskab til
    objektorienteret programmering i Java. For
    deltagere uden et sådant kendskab etableres i
    kursets start et kort undervisningsforløb baseret
    på lærebogens kapitel 2-4.

34
Forløbet i kursets start
Mandag den 4. september (930-1000) Algoritmeb
egrebet ved Keld H. Mandag den 4.
september (1015-1530) og tirsdag den 5. september
(930-1200) OOP (Weiss, Kapitel 1-3) ved Kim
og Mads Mandag den 11. september
(930-1200) Algoritmeanalyse (Weiss, Kapitel
5) ved Keld H. Mandag den 11. september
(1300-1530) og tirsdag den 12. september
(930-1200) OOP (Weiss, Kapitel 4) ved Kim
og Mads
35
Eksamen
2 timers skriftlig prøve
36

Ugeseddel 029. august - 11. september
  • OOP-forløbet
  • Til mandag den 4. september læses kapitel 2 og 3
    i lærebogen
  • Til mandag den 11. september læses kapitel 4
  • Læs kapitel 5 i lærebogen (side107-141)
  • Løs følgende opgave
  • 0. Konstruer en største-fælles-divisor-alg
    oritme, gcd, baseret på følgende observationer
  • gcd(a, b) a, hvis b 0,
  • gcd(a, b) gcd(b, a b), hvis b gt 0.
Write a Comment
User Comments (0)
About PowerShow.com