1 / 25

Øvingsforelesning 2003.09.18

Øvingsforelesning 2003.09.18. Andreas Knudsen andreakn@idi.ntnu.no Nils Grimsmo nilsgri@idi.ntnu.no. Innhold. Presentasjon av praksisøving 5. Repetisjon: Kjøretidsanalyse Teoriøving 4 Praksisøving 4. Praksisøving 5 Aksjespekulanten.

masako
Download Presentation

Øvingsforelesning 2003.09.18

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Øvingsforelesning2003.09.18 Andreas Knudsen andreakn@idi.ntnu.no Nils Grimsmo nilsgri@idi.ntnu.no

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

  3. Praksisøving 5Aksjespekulanten • 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 5Aksjespekulanten

  5. Praksisøving 5Aksjespekulanten

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

  7. RepetisjonKjø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. 34 17 68 13 31 50 75 99 2 14 19 32 35 53 71 RepetisjonSøk i balansert binærtre • Ved å se på ett element, kan vi halvere søkerommet. • Høyden på treet: floor(log2 n). Går ett hakk ned per sammenligning  Kjøretid: O(log2 n) log2 n

  9. RepetisjonSø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. Jonas Håvard Marte Per Espen Guri Svein RepetisjonKøretidsanalyse - Søk i graf

  11. RepetisjonKjø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 ej kanter ut fra node j, må vi se på ej kanter nå vi undersøker j • e = e1 + e2 + … + ev • Vi må undersøke O(e) kanter til sammen • Kjøretid: O(v) + O(e) = O(v+e)

  12. Praksisøving 4Spionproblemet • 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. Jonas Håvard Marte Per Espen Guri Svein SpionproblemetGrafrepresentasjon

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

  15. SpionproblemetMatrise

  16. SpionproblemetNaiv løsning - Pseudokode for hver person A: for alle andre personer B: hvis A ikke kjenner B: <ikke spion> for alle andre personer C: hvis C kjenner A: <ikke spion> <spion>

  17. SpionproblemetNaiv 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. SpionproblemetNaiv 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. SpionproblemetNaiv 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(n2) i stedet for Θ(n²)

  20. SpionproblemetLineæ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. SpionproblemetLineæ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. SpionproblemetLineæ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. SpionproblemetLineær løsning – Java-kode nm er nabomatrise, k er kandidat, i er den vi sammenligner med 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; }

  24. SpionproblemetLineæ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. SpionproblemetLineæ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

More Related