1 Algoritmik ved Keld Helsgaun. 2 Plan Hvad er algoritmik? Et eksempel Kursusbeskrivelse formål, indhold og form.

Slides:



Advertisements
Lignende præsentationer
Lysbilledserien (nr. 3 af 3) indeholder blandede korte stræktyper: -bingostræk -grovorienteringsstræk -finorienteringsstræk -transportstræk Find evt. algoritmen.
Advertisements

Århus Kommune Undersøgelse på tilsynsområdet Telefonundersøgelse foretaget november respondenter.
FMK FMK er et ambulant system, som alle kan tilgå.
1 Problemkompleksitet 2 Problemers kompleksitet En ineffektiv algoritme: køretiden vokser eksponentielt med input- størrelsen Et problem, der ikke kan.
Vælgerne og danske EP-valg
Projektforslag Keld Helsgaun.
1 Video-regelquiz - Inkl. svar. 2 I denne lille video-regelquiz bliver I stillet over for ni regelsituationer i slagspil. Hver situation beskrives i en.
Sidetyper Web-udvikling med FrontPage 2003 RHS - Informationsteknologi.
Skolebestyrelsesvalg 2012 Højvangskolen efterår 2012.
Partiernes funktioner
UU Center Kolding Mentorprojekt i UU Kolding •Ide og finansiering •Ungepakke II •Samarbejdspartnere Taxameter - institutionsuafhængig.
Denne serie (nr. 1 af 3) indeholder lange stræk af forskellige typer: -Langstræk -Vejvalgsstræk -Grovorienteringsstræk -Transportstræk Jeg har ikke taget.
1 Problem: Til præsidentvalget i Frankrig har cirka 20 millioner vælgere afgivet deres stemme på et antal præsidentkandidater. Afgør om en af kandidaterne.
Anvendt Statistik Lektion 6
Datastruktur & Algoritmik1 Datastruktur & Algoritmik 99 Kim Guldstrand Larsen.
Vil du tilbagekalde en fuldmagt på vegne af en borger?
Notat I et notat vil der normalt optræde følgende elementer: – en problemstilling og baggrunden herfor – forskellige løsningsforslag – en gennemført faglig.
Anvendt Statistik Lektion 2
Datastrukturer og algoritmer
Søgning & sortering Intro søgning Lineær søgning Binær søgning
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
1 Projektforslag på modul 2 ved Keld Helsgaun. 2 Fagligt indhold Projekt- og kursusarbejdet skal give de studerende indsigt i følgende emnekredse: Gå.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
Usystematisk patientinformation ved overflytning
Indhold af EASY-A version 05.1 Personale Steen Eske Christensen.
Nationalråd 2009 Valg af Tjenesteteamleder og kandidater til Tjenesteteam.
13.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Funktionskomponent Oversigt, principper og teknikker Kapitel 13.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
Fatter du Watt? 1 Watt er defineret som den effekt, der ydes, når der hvert sekund udføres et arbejde (eller omsættes en energi) på 1 joule, altså 1.
Begreber og Redskaber 6. Plan for idag Tabeller Udvalgssortering, køretid Lidt mere om objekter Budskab: Køretid kan være et problem og bør løses med.
SCANNER SCORE OG VARIATION. HUDENS KAROTENOID SCORE.
Urafstemning OK15 En guide til at stemme.
Landsbyudvalg Bidrager til at igangsætte og understøtte udviklingstiltag i Skive Kommunes landsbyer og landområder - med fokus på, at der sker en udvikling.
1 Algoritmik ved Keld Helsgaun. 2 Plan Algoritmebegrebet et simpelt eksempel Et eksempel på algoritmedesign.
OOMI Præsentation 28: Eksamen. Ingeniørhøjskolen i Århus Slide 2 af 6 Pensum Pensum har været noget fragmenteret (ny struktur for faget, nyt indhold og.
1 Design, analyse og verifikation. 2 Algoritmebegrebet Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
Læreres vilkår for at udvikle en lokal naturfaglig kultur omkring natur/teknik - Resultater fra en spørgeskemaundersøgelse.
Design, verifikation og analyse
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
KONTERINGS SPILLET Tietgenskolen, Jan Christiansen.
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
1 Algoritmedesign med internetanvendelser ved Keld Helsgaun.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Interaktive knapper Web-udvikling med FrontPage 2003 RHS - Informationsteknologi.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Projekter Fredag den 2. november 2007 Maria Baun Lauridsen.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Indledende Programmering Uge 6 - Efterår 2006
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Politiske partier Jan Christiansen Sosufyn
FROM GOOD TO GREAT!. ”Before something happens in the world – it must first happen in your mind” Anthony Robbins.
Hvordan skal man se ud? Hvem kan træne? Alle kan træne Alle kan træne MEN –Cleares af lægen –Forskel på behandling og forebyggelse –Målsætning –Vælge.
Program: Oplæg Censorer på Pædagoguddannelsen 2015 Principperne i karakterbekendtgørelsen Læringsmål som udgangspunkt for bedømmelsen Hvad er kompetencer?
VI elsker programmering
Sundhed, ulighed og politisk prioritering
Trin-for-trin guide til s1 autorisation
Kom og stem og gør en forskel din stemme kan være afgørende
Bemærk! Du bør teste, hvordan disse kort udskrives på almindeligt papir for at sikre, at teksten er placeret korrekt, inden du udskriver på karton.
Innovation = nytænkende forbedring af noget i verden
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ]
Hvorfor interesse for mig?
SO og Matematik Tanker på HC Ørsteds Gymnasiet
Anvendt Statistik Lektion 6
VELKOMMEN TIL ENGINEERING DAY 2018
VELKOMMEN TIL ENGINEERING DAY 2018
Myggenet redder liv! Myggenet som løsningen
Præsentationens transcript:

1 Algoritmik ved Keld Helsgaun

2 Plan Hvad er algoritmik? Et eksempel Kursusbeskrivelse formål, indhold og form

3 Algoritmik er studiet af algoritmer Hvad er algoritmik? En algoritme er en metode til at løse en opgave 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. Inddata Uddata Algoritme

4 Tre vigtige områder inden for algoritmik er Design Analyse Verifikation Design: Hvorledes konstrueres en algoritme? Analyse: Hvor “effektiv” er en algoritme? Verifikation: Er en algoritme korrekt?

5 Algoritmik som studium er gammelt nok til at være veletableret ungt nok til at mange nyopdagelser venter Hvorfor studere algoritmer? (1) For at kunne vælge kvalificeret imellem eksisterende algoritmer (vidensaspekt) (2) For at kunne udvikle nye algoritmer (kreativitetsaspekt)

6 Problem: Til præsidentvalget i Frankrig har cirka 20 millioner vælgere afgivet deres stemme på et antal præsidentkandidater. Afgør om en af kandidaterne har opnået mere end halvdelen af stemmerne, og angiv i givet fald, hvem der er tale om (”vinderen”). Et eksempelproblem (majoriseringsproblemet) Præcisering af inddata: Vælgernes stemmer er lagret i en tabel, stemme, således at stemme[v] angiver nummeret (≥ 1) på den kandidat, som vælgeren v har stemt på. Præcisering af uddata: Hvis en kandidat har fået mere end halvdelen af stemmerne, så udskriv nummeret på kandidaten. Ellers udskriv ”Ingen vinder”.

7 Programmering i Java: Hver bunke repræsenteres ved en tæller. for (k = 1; k <= kandidater; k++) tæller[k] = 0; for (v = 1; v <= vælgere; v++) tæller[stemme[v]]++; vinder = 0; for (k = 1; k <= kandidater; k++) if (tæller[k] > vælgere/2) vinder = k; if (vinder != 0) System.out.println("Vinder: " + vinder); else System.out.println("Ingen vinder"); Algoritme: Opret en tom bunke for hver kandidat. Læg hver stemme i den bunke, der svarer til den kandidat, der er stemt på. Hvis antallet af stemmer i en af bunkerne overstiger halvdelen af de afgivne stemmer, er der fundet en vinder. Løsningsmulighed 1 (optælling i bunker)

8 Fordele: Simpel at programmere. Hurtig (køretiden er proportional med antal afgivne stemmer). Løsningsmulighed 1 Ulemper: Hvis der er mange kandidater, bruges megen ekstra plads til tællere Hvis tabellen stemme indeholder kandidaternes navne (i stedet for numre) vanskeliggøres optællingen. Algoritmen er ikke generel.

9 Algoritme: Sorter stemmesedlerne efter deres kandidatnummer. Gennemløb derefter de sorterede stemmesedler for at afgøre, om en af kandidaterne successivt står på mere end halvdelen af stemmesedlerne. Løsningsmulighed 2 (sortering) Programmering i Java: sorter(stemme); kandidat = tæller = 0; for (v = 1; v <= vælgere; v++) if (stemme[v] != kandidat) { kandidat = stemme[v]; tæller = 1; } else if (++tæller > vælgere/2) break; if (tæller > vælgere/2) System.out.println("Vinder: " + kandidat); else System.out.println("Ingen vinder");

10 Løsningsmulighed 2 Ulemper: Sorteringen kan tidsmæssigt være dyr. Det er et krav, at indholdet af stemme kan sorteres, f.eks. indeholder tal eller tekst. Algoritmen er ikke generel.

11 Algoritme: Find den kandidat, der ville blive den midterste, såfremt stemmesedlerne blev sorteret efter deres kandidatnummer (uden dog at foretage sorteringen). Afgør herefter ved simpel tælling, om kandidaten er vinder. Løsningsmulighed 3 (bestemmelse af median) Programmering i Java: kandidat = median(stemme); tæller = 0; for (v = 1; v <= vælgere; v++) if (stemme[v] == kandidat) tæller++; if (tæller > vælgere/2) System.out.println("Vinder: " + kandidat); else System.out.println("Ingen vinder");

12 Løsningsmulighed 3 Ulempe: Det er et krav, at indholdet af stemme kan sorteres, f.eks. indeholder tal eller tekst. Algoritmen er ikke generel. Fordel: Hurtig. Medianen kan bestemmes i tid, der i gennemsnit er proportional med antal afgivne stemmer. (Med en indviklet algoritme, kan medianen bestemmes i tid, der i alle tilfælde er proportional med antal afgivne stemmer.)

13 Løsningsmulighed 4 (udtynding, problemreduktion) Ide: Hvis to stemmer er afgivet på to forskellige kandidater, og de pågældende to stemmesedler fjernes, så vil en eventuel vinder for de oprindelige stemmesedler også være en vinder for de resterende. NB: Det modsatte er ikke tilfældet. F.eks. har listen (1, 2, 5, 5, 3) ingen vinder, men hvis 1 og 2 fjernes, så bliver 5 ny vinder.

14 Løsningsmulighed 4 Algoritme: Stemmesedlerne gennemløbes i rækkefølge. Hver gang to er forskellige, eliminerer vi begge. Vinderen i den resterende liste bestemmes, hvorefter det kontrolleres, at denne kandidat også er vinder i den originale liste. Men hvad gør vi, hvis to successive stemmer er ens? Svar: Vedligehold to variabler: kandidat, der udpeger en potentiel vinder, og tæller, der angiver hvor mange gange kandidat ikke har kunnet parres med en anden kandidat. Hvis tæller efter gennemløbet er positiv, undersøges ved simpel tælling, om kandida t er vinder.

15 Løsningsmulighed 4 Programmering i Java: tæller = 0; for (v = 1; v <= vælgere; v++) if (tæller == 0) { kandidat = stemme[v]; tæller = 1; } else if (stemme[v] == kandidat) tæller++; else tæller--; if (tæller > 0) { tæller = 0; for (v = 1; v <= vælgere; v++) if (stemme[v] == kandidat) tæller++; } if (tæller > vælgere/2) System.out.println("Vinder: " + kandidat); else System.out.println("Ingen vinder");

16 Løsningsmulighed 4 Fordele: Hurtig. Køretiden er proportional med antal afgivne stemmer. Kræver næsten ingen ekstra plads. Let at programmere - og let at bevise. Algoritmen er generel (forudsætter ikke, at tabellen kan sorteres). Ulemper: Ingen.

17 Empirisk undersøgelse af de fire løsningsmuligheder 20,000,000 stemmer afgivet på 255 kandidater. Køretid i sekunder på en 233 MHz Macintosh G3: 1. Optælling i bunker: 3 2. Sortering (med quicksort)96 3. Bestemmelse af median Udtynding 5

18 Kursusbeskrivelse Formål Mål Indhold Form

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

20 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

21 Indhold (1) Algoritmebegrebet (2) Elementære datastrukturer (3) Design, analyse og verifikation (4) Sortering I (5) Sortering II (6) Søgning I (7) Søgning II (8) Strengbehandling (9) Grafalgoritmer I (10) Grafalgoritmer II

22 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å algoritmikkens kreative sider, d.v.s. på designprincipper for algoritmer. Kurset skal opøve evnen til at tænke “algoritmisk”. Øvelser udgør et absolut nødvendigt led i kurset (jvf. man kan ikke blive musiker ved kun at læse musikteori). Arbejdsbelastning: 10 timer/uge

23 Algorithms in C++ Robert Sedgewick, Addison-Wesley, Lærebog Ulemper: det anvendte programmeringssprog er ikke Java (dog afhjulpet af mit tillæg: “Algoritmer i Java”) de algoritmiske principper drukner undertiden i programmeringsmæssige detaljer der lægges for lidt vægt på algoritmisering Fordele: gode algoritmebeskrivelser på letforståeligt engelsk algoritmerne er omsat til udførbar kode (her C++) matematikken er holdt på et minimum

24 Udeladelser i forhold til lærebogen Sortering og søgning på eksterne lagermedier Komprimering af filer Kryptering Geometriske algoritmer Visse grafalgoritmer: Strømning i netværk og Parring Matematiske algoritmer (herunder generering af tilfældige tal, løsning af ligningssystemer) Udtømmende søgning Parallelle algoritmer Dynamisk programmering Problemkompleksitet Emnerne er spændende (og relevante), men tiden tillader ikke en gennemgang.

25 Algoritmetyper Sædvanlige behandles indgående Approksimative behandles ikke Giver tilnærmede løsninger Heuristiske behandles ikke Baseret på tommelfingerregler (eks. bjergbestigning) Parallelle behandles ikke Tillader samtidige operationer Probabilistiske behandles ikke Baseret på lodtrækning

26 Ugeseddel august september Læs kapitel 1 og 2 i lærebogen (side 3-14) Løs følgende opgave (løsning gennemgås ved forelæsningen den 30. september) Blandt en forsamling af personer defineres en berømthed som en person, som alle kender, men som ikke kender nogen andre i forsamlingen. Design en algoritme, der kan identificere berømtheden, hvis denne eksisterer, ved kun af stille spørgsmål af formen ”Undskyld, kender du den person derhenne?”. Alle personer, også berømtheden, antages at svare korrekt. Inddata er givet ved antallet af personer, N, og et boolesk array kender[][], hvor kender[a][b] er true, hvis og kun hvis person a kender person b. Antallet af spørgsmål ( kender[a][b] ?) ønskes minimeret. Angiv det maksimale antal spørgsmål, algoritmen må stille, når forsamlingen består af N personer.