MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.



Like dokumenter
Forelesning 28: Kompleksitetsteori

MAT1030 Forelesning 28

MAT1030 Forelesning 28

MAT1030 Forelesning 30

MAT1030 Diskret matematikk

Forelesning 30. Kompleksitetsteori. Dag Normann mai Informasjon. Oppsummering

Forelesning 30: Kompleksitetsteori

Forelesning 29: Kompleksitetsteori

MAT1030 Diskret Matematikk

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

KONTROLLSTRUKTURER. MAT1030 Diskret matematikk. Kontrollstrukturer. Kontrollstrukturer. Eksempel (Ubegrenset while-løkke)

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Tyngdekraft og luftmotstand

Forelesning 9 mandag den 15. september

MAT1030 Diskret Matematikk

Hypotesetesting. Notat til STK1110. Ørnulf Borgan Matematisk institutt Universitetet i Oslo. September 2007

Oppsummering av Uke 3. MAT1030 Diskret matematikk. Binære tall. Oppsummering av Uke 3

Prosent. Det går likare no! Svein H. Torkildsen, NSMO

Kapittel 6: Funksjoner

Forelesning 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann januar Vi som skal undervise. Hva er diskret matematikk?

Arbeidstid. Medlemsundersøkelse mai Oppdragsgiver: Utdanningsforbundet

Kapittel 4: Logikk (predikatlogikk)

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Roger Antonsen

MAT1030 Diskret matematikk

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

Matematisk julekalender for trinn, 2008

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

MAT1030 Diskret matematikk

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

MAT1030 Diskret Matematikk

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Forelesning 2. Flere pseudokoder. Representasjoner av tall. Dag Normann januar 2008 KONTROLLSTRUKTURER. Kontrollstrukturer. Kontrollstrukturer

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

Forelesere VELKOMMEN TIL MAT-INF Forelesere MAT-INF /8-2005

MAT1030 Forelesning 2

MAT1030 Diskret Matematikk

Hefte med problemløsingsoppgaver. Ukas nøtt 2008/2009. Tallev Omtveit Nordre Modum ungdomsskole

Vi som skal undervise. MAT1030 Diskret matematikk. Hva er diskret matematikk? Hva er innholdet i MAT1030?

Forelesning 31. Dag Normann mai Informasjon. Kompleksitetsteori

Evaluering av kollokviegrupper i matematikk og programmering høsten jenter har svart på evalueringen

Tall. Regneoperasjoner med naturlige tall har til alle tider fascinert både ung og gammel.

Repetisjon: høydepunkter fra første del av MA1301-tallteori.

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess

MAT1030 Diskret Matematikk

Velkommen til MAT1030!

NyGIV Regning som grunnleggende ferdighet

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

MAT1030 Forelesning 14

Mer om likninger og ulikheter

Fasit og løsningsforslag til Julekalenderen for mellomtrinnet

Fagmøte i kjemi 7/

ARBEIDSHEFTE I MATEMATIKK

Forelesning 22 MA0003, Mandag 5/ Invertible matriser Lay: 2.2

Kapittel 6: Funksjoner

Vurdering. Hva, hvordan, hvorfor

Bra resultat for de med høyest kompetanse. For dårlig for lærere og adjunkter. Noe må gjøres med førskolelærernes lønn!

Matematikk og naturfag. To eksempler fra mellomtrinn/ungdomstrinn

MAT1030 Diskret Matematikk

NASJONALE PRØVER En presentasjon av resultatene til 5.trinn ved Jåtten skole, skoleåret

S1 Eksamen våren 2009 Løsning

Årsplan i matematikk 5.klasse 2015/16

SKOLEEKSAMEN I. SOS4010 Kvalitativ metode. 19. oktober timer

Mengder, relasjoner og funksjoner

Mer om representasjon av tall

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Eksamen i Algoritmer og Datastrukturer Torsdag 12. januar 1995, Kl

TMA4140 Diskret matematikk Høst 2011 Løsningsforslag Øving 7

Kompleksitetsanalyse

Ukeoppgaver fra kapittel 3 & 4

Vekst av planteplankton - Skeletonema Costatum

Tiden går og alt forandres, selv om vi stopper klokka. Stoffet i dette kapittelet vil være en utømmelig kilde med tanke på eksamensoppgaver.

Reviderte læreplaner konsekvenser for undervisningen?

MAT1030 Diskret matematikk

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken Rom 1033, Niels Henrik Abels hus

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

Praksiseksempel - Bruk av konstruert modelltekst i skriveopplæringen

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

MAT1030 Diskret matematikk

Kvikkbilde 8 6. Mål. Gjennomføring. Planleggingsdokument Kvikkbilde 8 6

Matematikk 2, 4MX25-10

Olweusprogrammet. Tema i klassemøtet. Klasseregel 4 Hvis vi vet at noen blir mobbet

ABC spillet Instruktør guide

Fysikkolympiaden 1. runde 26. oktober 6. november 2015

MAT1030 Diskret Matematikk

MAT1030 Diskret matematikk

MAT1030 Forelesning 25

MAT1030 Forelesning 14

Hvorfor er etisk kompetanse viktig for Ski kommune?

ADDISJON FRA A TIL Å

DEL 1 Uten hjelpemidler

God morgen! Alle Teller

Kapittel 1. Potensregning

Transkript:

MAT1030 Diskret matematikk Forelesning 29: Dag Normann KAPITTEL 13: Matematisk Institutt, Universitetet i Oslo 7. mai 2008 MAT1030 Diskret matematikk 7. mai 2008 2 Meldinger: Det blir hovedsaklig tavleregning på plenumsregningen i morgen. 15/5-08 vil D.N. vikariere for Roger på plenumsregningen. Oppgavene til neste uke vil i hovedsak bestå av gamle eksamensoppgaver. Vi skal nå starte på siste kapittel i boka, og dermed siste del av pensum. I denne siste delen skal vi spørre oss om det er mulig å måle hvor lang tid det tar å utføre en algoritme, og hva en slik måling innebærer. Det vil være interessant å vite om en gitt algoritme kan utføres av en datamaskin innen rimelig tid, og hvis vi har to algoritmer som skal løse den samme oppgaven, om den ene er raskere enn den andre. Før vi diskuterer hva disse spørsmålene kan bety, la oss se på et eksempel på dårlig og god programmering for å løse en oppgave. MAT1030 Diskret matematikk 7. mai 2008 3 MAT1030 Diskret matematikk 7. mai 2008 4

Eksempel Sommeren 1986? fikk D.N. en telefon fra en person som ville starte et lotteri. Det skulle trykkes tre og en halv millioner lodd, med nummer fra 1 til 3.500.000. Tanken var at man skulle utbetale ekstragevinster for enkelte tverrsummer av loddnummeret. Tverrsummen vil være et tall mellom 1 og 56. Ønsket var at en matematiker skulle hjelpe til med å finne ut hvor mange lodd som vil ha tverrsum i når i varierer fra 1 til 56. Logikk-gruppen hadde to nyinnkjøpte Xerox arbeidsplassmaskiner, og første forsøk på å imøtekomme ønsket var å skrive et LISP-program (med hjelp fra stipendiat Erik Colban) som realiserte følgende algoritme: 1 For i = 1 to 56 do 1.1 x i 0 2 For n = 1 to 3.500.000 do 2.1 i tverrsum(n) 2.2 x i x i + 1 3 Output x 1,..., x 56. MAT1030 Diskret matematikk 7. mai 2008 5 MAT1030 Diskret matematikk 7. mai 2008 6 Etter en god lunsj ble det klart at dette ville ta hele dagen, og trolig natten med. Vi måtte finne en raskere algoritme. Vi laget en algoritme basert på en matematisk analyse av problemet (analysen tok ca. 10 minutter) Den nye algoritmen ga svaret i løpet av ca 2 sekunder. Vi ser kort på tankegangen bak den nye algoritmen: Vi kjenner til hvordan tverrsummene fordeler seg for tall fra 0 til 9. Tverrsummene for tall fra 10 til 19 fordeler seg nesten likt, bare forskjøvet et tall oppover. Tilsvarende kan vi lett finne fordelingen av tverrsummene for tall mellom 20 og 39, mellom 30 og 39 osv. Legger vi sammen får vi fordelingen av tverrsummer for alle tall mellom 0 og 99. MAT1030 Diskret matematikk 7. mai 2008 7 MAT1030 Diskret matematikk 7. mai 2008 8

Forskyver vi denne fordelingen ett tall opp, får vi fordelingen av tverrsummer mellom 100 og 199. ti nye runder gir oss altså fordelingen av tverrsummene for alle tall mellom 0 og 999. Ti nye runder gir oss fordelingen opp til 9.999, osv. Tilslutt må vi justere tallene litt slik at vi får fordelingen av tverrsummer for tall mellom 1 og 3.500.000. Som en generell algoritme ser vi at antall regneoperasjoner er proporsjonalt med antall siffre i antall lodd, og ikke i antall lodd. Vi skal komme tilbake til slike fenomener senere, og sette navn på dem. Forklaringen er justert i forhold til det som ble sagt på forelesningen. I kompleksitetsteori er det ofte to størrelser man prøver å finne Hvor lang tid tar det å følge en algoritme. Hvor mye lagerplass må man sette av for at algoritmen skal ha den informasjonen den trenger til enhver tid. Vi skal konsentrere oss om tidskompleksitet, time complexity og la plasskompleksitet, space complexity være udiskutert. MAT1030 Diskret matematikk 7. mai 2008 9 MAT1030 Diskret matematikk 7. mai 2008 10 Vi skal ikke ta sikte på å gi en innføring i kompleksitetsteori som en del av den teoretiske informatikken, men at dere etter endt MAT1030 kan a) Vurdere to algoritmer mot hverandre for å kunne vurdere hvilken som vil være mest tidseffektiv. b) Vurdere om en algoritme er gjennomførbar innen akseptabel tid for input av den størrelsen man ønsker at den skal virke for. MAT1030 Diskret matematikk 7. mai 2008 11 Hvis vi har skrevet en algoritme på pseudokodeform, er spørsmålet om hvor lang tid det tar å følge algoritmen et upresist spørsmål av flere grunner: Svaret avhenger av hvilket programmeringsspråk vi benytter. Svaret avhenger av hvilken maskin vi benytter. Svaret kan avhenge av hvor stort minne vi har satt av til hjelp for programmet. Svaret kan avhenge av om vi må dele ressursene med andre. Svaret vil avhenge av input, og av hvordan input representeres digitalt. med mer, med mer. Vi trenger imidlertid ofte ikke å kjenne alle disse forholdene for å kunne sammenlikne algoritmer eller for å vurdere om en algoritme er praktisk gjennomførbar eller ikke. Vi skal lære å se bort fra det uvesentlige, og derigjennom få et grunnlag for å vurdere den omtrentlige kompleksiteten av en algoritme. Det vil være den omtrentlige tidsbruken som funksjon av størrelsen på input vi vil være på jakt etter. MAT1030 Diskret matematikk 7. mai 2008 12

Eksempel 1 Input n [n naturlig tall] 2 x 1 3 For i = 2 to n do 3.1 x x i 4 y 0 5 For j = 1 to x do 5.1 y y + j 6 Output y Vi har gitt en pseudokode for å beregne n! f (n) = j. Vi må anta at det normalt krever mere tid å multiplisere to tall enn å summere dem. På den annen side skal vi utføre n 1 multiplikasjoner i den første delen, mens vi skal utføre ca. n! addisjoner i andre del. n skal ikke være så veldig stor før andre del av algoritmen tar vesentlig lengere tid å utføre enn første del. j=1 Det er i andre del at kompleksiteten ligger. MAT1030 Diskret matematikk 7. mai 2008 13 MAT1030 Diskret matematikk 7. mai 2008 14 1 Input n [n naturlig tall] 2 x 1 3 For i = 2 to n do 3.1 x x i 4 y x(x 1) 2 5 Output y Den nye pseudokoden gir oss nøyaktig den samme funksjonen. Her vil fortsatt den første delen innebære at vi må foreta n 1 multiplikasjoner, mens den andre delen innebærer essensielt en multiplikasjon og en divisjon med 2. Nå er det den første delen som vil være mest tidkrevende. Vi har funnet en raskere algoritme for å beregne den samme funksjonen. MAT1030 Diskret matematikk 7. mai 2008 15 MAT1030 Diskret matematikk 7. mai 2008 16

Lærebokas første tilnærming til kompleksiteten av en algoritme lyder, oversatt til norsk: Tell bare de mest tidkrevende operasjonene. En operasjon kan være en enkel regneoperasjon, en for - løkke, en sammenlikning av størrelser, en annen form for løkke eller noe annet. Hvis løkker inngår i algoritmen, vil ofte lengden på løkkene bestemme hvor tidkrevende algoritmen er. Det kan derfor være lurt, slik vi gjorde i eksemplet, å studere lengden på de enkelte løkkene. Mange addisjoner kan overskygge langt færre multiplikasjoner, selv om det er mer tidkrevende å utføre en multiplikasjon enn en addisjon. Hvis koden inneholder while - løkker eller until - løkker, kan det være vanskelig å sammenlikne tidsbruken med tidsbruken til andre løkker. La oss se på Prims algoritme i lys av første tilnærming. I Prims algoritme har vi listet opp nodene i en vektet graf, og så har vi listet opp kantene i grafen sammen med sine vekter. I Prims algoritme har vi en hovedløkke hvor vi i løpet av løkka legger en ny kant til det utspendte treet. I skritt nr. i skal vi ta for oss hver av de n i nodene som ikke har kommet med i treet, se på alle kantene fra disse nodene til treet bygget så langt og plukke ut den av disse kantene som har minst vekt. Den mest tidkrevende enkeltoperasjonen vil være å vurdere om en kant er kandidat til å bli lagt til treet, samt å sammenlikne vekten av hver enkelt kant med vekten til en tidligere utplukket kandidat. Vi skal senere komme med en måte å formulere omtrent hvor mange slike grunnoperasjoner vi må utføre. MAT1030 Diskret matematikk 7. mai 2008 17 MAT1030 Diskret matematikk 7. mai 2008 18