1 Øvingsforelesning 2003.09.18 Andreas Knudsen Nils Grimsmo

Slides:



Advertisements
Liknende presentasjoner
Skriv om slik at setningene betyr omtrent det samme
Advertisements

Litt mer om PRIMTALL.
Velkommen som spiller i aksjespillet.
Kapittel 28 Norgeskartet
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Kontrollstrukturer (Kapittel 3)
Kapittel 30 Fag og rutiner på skolen.
Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
Johannes 16, Om sorg og glede
Resultater Kundesenter
Gjenfinningssystemer og verktøy II
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
Eksempel AOA (Activity On Arc)
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Alg. Dat Øvingsforelesning 5 Kompleksitetsanalyse Torbjørn Moralnd
Korrekt dybde først-søk
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
P-MP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter (lager) for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
P-CP modeller. LOG530 Distribusjonsplanlegging 2 2 Det skal opprettes p fasiliteter for å betjene en gitt mengde kunder. Kundenodene er også potensielle.
Klargjøring fra forrige gang
Øvingsforelesning 9 - Børge Rødsjø
Algoritmer og Datastrukturer
Skriv om slik at setningene betyr omtrent det samme
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 8 Trær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 17 - kap 9 Korteste vei i grafer Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Figur 1 Behov. Figur 2 Behov Figur 3 Prioritering/ressursinnsats.
Hovedfagspresentasjon
Åpne en luke hver dag og få en gave
NÅ SKAL VI LÆRE OM LIKNINGER.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Magnus Haug Algoritmer og Datastrukturer
Inflation og produktion 11. Makroøkonomi Teori og beskrivelse 4.udg. © Limedesign
Hallgrim2LF : Hva Hva skal metoden traverser gjøre?  Ta inn et rom som parameter  Returnere antall møter i dette rommet og i alle rom innenfor. Public.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
Øving 1 - Forretningsideen
Praksisøving 5 Aksjespekulanten. Oppgaven Tjen mest mulig penger på en aksjehandel Vet hele børshistorien.
Dagligbankundersøkelsen Fakta Dagligbankundersøkelsen intervju Befolkning 15 år + TNS Gallup Forfatter Bente Pettersen Roar Thorvaldsen.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
Sett inn preposisjoner eller adverb som passer.
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.
1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen
Øvingsforelesning i Python (TDT4110)
Utskrift av presentasjonen:

1 Øvingsforelesning Andreas Knudsen Nils Grimsmo

2 Innhold Presentasjon av praksisøving 5. Repetisjon: Kjøretidsanalyse Teoriøving 4 Praksisøving 4

3 Praksisøving 5 Aksjespekulanten Problem: ”Gitt et sett med endringer i en aksjekurs, når lønner det seg å kjøpe og selge. Du har en sum penger, og kan kun kjøpe og selge en gang.” Gitt flere løsninger som er like innbringende, velg den som har kortest tid mellom kjøp og salg

4 Praksisøving 5 Aksjespekulanten

5 KompleksitetKommentarFor 365 dager O(n 5 )Dum løsning6’478’348’728’125 O(n 4 )Finnes en slik?17’748’900’625 O(n 3 )Naiv løsning48’627’125 O(n 2 )Litt naiv løsning133’225 O(n log n)Lur løsning, men ikke best 3’107 O(n)Smart løsning365

6 Repetisjon Kjøretidsanalyse Vi ser uformelt på kjøretidsanalyse av søk i forskjellige typer datastrukturer Array – O(n) Balansert binærtre – O(log 2 n) Ubalansert binærtre – O(n) Graf – O(v + e)

7 Repetisjon Kjøretidsanalyse – Søk i array Har ingen informasjon om hvor i arrayet elementet vi leter etter ligger Når vi ser på ett element får vi ikke vite mer enn om det er det vi søker etter eller ikke Kjøretid: O(n)

8 Repetisjon Søk i balansert binærtre Ved å se på ett element, kan vi halvere søkerommet. Høyden på treet: floor(log 2 n). Går ett hakk ned per sammenligning  Kjøretid: O(log 2 n) log 2 n

9 Repetisjon Søk i ubalansert binærtre Høyden på treet er i verste fall n Må da gjøre Θ(n) operasjoner hvis elementet vi leter etter ligger nederst. Kjøretiden blir da generelt sett O(n) O(n)

10 Repetisjon Køretidsanalyse - Søk i graf Marte Svein Håvard Espen Jonas Per Guri

11 Repetisjon Kjøretidsanalyse - Søk i graf Kan søke i grafen dybde- eller bredde-først Gitt v noder og e kanter: Må besøke O(v) noder, da den vi leter etter kan være den vi finner sist Gitt e j kanter ut fra node j, må vi se på e j kanter nå vi undersøker j e = e 1 + e 2 + … + e v Vi må undersøke O(e) kanter til sammen Kjøretid: O(v) + O(e) = O(v+e)

12 Praksisøving 4 Spionproblemet Variasjon over det mer kjente kjendisproblemet. Def: ”Gitt en gruppe mennesker, finn en person som kjenner alle, men som ingen av de andre kjenner.” Motivasjon: Øving på problemløsing. Mange andre problemer har løsninger som minner om denne.

13 Spionproblemet Grafrepresentasjon Marte Svein Håvard Espen Jonas Per Guri

14 Spionproblemet Naiv løsning for hver person: sjekk om denne kjenner alle de andre sjekk om ingen av de andre kjenner denne

15 Spionproblemet Matrise Kjennes PerHåvardJonasMarteGuriEspenSvein Kjenner Per-000X00 Håvard0-000X0 Jonas MarteXXX-XXX GuriX EspenXXX0X-X Svein0X000X-

16 Spionproblemet Naiv løsning - Pseudokode for hver person A: for alle andre personer B: hvis A ikke kjenner B: for alle andre personer C: hvis C kjenner A:

17 Spionproblemet Naiv løsning - Kjøretid Sjekker n personer: Θ(n) For hver person, se om hun kjenner alle de n-1 andre, samt om ingen andre kjenner henne. Θ(n) + Θ(n) = Θ(n). Samlet kompleksitet: Θ(n) * Θ(n) = Θ(n²) Ser fra pseudokode: To nivåer med løkker uten hopp → kjøretiden må være Θ(n²)

18 Spionproblemet Naiv løsning - Optimering Slutt å undersøke personer etter at du har funnet ut at de ikke kan være spion Det kan bare være en mulig spion, slutt å søke når du har funnet denne Trenger bare en indre løkke

19 Spionproblemet Naiv løsning - Pseudokode for hver person A: for alle andre personer B: hvis A ikke kjenner B: continue(2) hvis B kjenner A: continue(2) spion = A break Kjøretiden er nå O(n 2 ) i stedet for Θ(n²)

20 Spionproblemet Lineær løsning Motivasjon: –Hvis A kjenner B, betyr dette at B ikke kan være spion (Det sier ingenting om A) –Hvis A ikke kjenner B, betyr dette at A ikke kan være spion (Det sier ingenting om B) Vi kan eliminere en mistenkt per sammenligning! Bare en person kan være spion  Reductio ad absurdum (Motsigelesesbevis)

21 Spionproblemet Lineær løsning – Pseudokode 1 så lenge det er minst 2 kandidater igjen: velg to mistenkte A og B hvis A kjenner B: kan B ikke være spion hvis ikke: kan A ikke være spion det er nå 1 mulig spion igjen sjekk denne på gamlemåten

22 Spionproblemet Lineær løsning – Pseudokode 2 liste = alle personer så lenge lengde(liste) > 1: A = liste[0] B = liste[1] hvis A kjenner B: slett(liste[1]) hvis ikke: slett(liste[0]) sjekk om liste[0] er spion

23 Spionproblemet Lineær løsning – Java-kode public static int traverser(int[][] nm, int antNoder) { int k = 0; for (int i = 1; i < antNoder; i++) { if (nm[k][i] != 1) { k = i; } for (int i = 0; i < antNoder; i++) { if ((k != i) && ((nm[k][i] != 1) || (nm[i][k] == 1))) { return -1; } return k; } nm er nabomatrise, k er kandidat, i er den vi sammenligner med

24 Spionproblemet Lineær løsning - Kjøretid Kan med 1 sjekk eliminere 1 person. Θ(1) Gitt n mistenkte, vil vi kunne eliminere n-1 personer på n-1 runder. Θ(n-1) = Θ(n) Kan sjekke siste kandidat på n+n operasjoner (”Kjenner noen denne personen? Kjenner denne alle andre?”). Θ(n+n) = Θ(n) Samlet kjøretid: Θ(1) * Θ(n) + Θ(n) = Θ(n) Ser fra kode: To separate løkker uten hopp

25 Spionproblemet Lineær løsning - Oppsummering Vi utnytter det faktum at bare en person kan være spion. Gitt to personer, kan vi eliminere en av dem. Lærdom: –Analyser problemet godt –Skriv ned alt du vet –Utnytt egenskapene til problemet til din fordel