• No results found

MAT1030 – Diskret matematikk Forelesning 30: Kompleksitetsteori Dag Normann

N/A
N/A
Protected

Academic year: 2022

Share "MAT1030 – Diskret matematikk Forelesning 30: Kompleksitetsteori Dag Normann"

Copied!
214
0
0

Laster.... (Se fulltekst nå)

Fulltekst

(1)

MAT1030 – Diskret matematikk

Forelesning 30: Kompleksitetsteori

Dag Normann

Matematisk Institutt, Universitetet i Oslo

14. mai 2008

(2)

Informasjon

Det er lagt ut program for orakeltjenestene i MAT1030 denne v˚aren p˚a semestersiden.

Det blir ikke ordinære gruppetimer fra og med neste uke.

Oppgaveregningen i morgen blir ren tavleregning, ettersom Roger er bortreist, uten tilgang til e-post, og vikaren har ikke tilgang til styringsfilen for oppgavefoilene.

(3)

Informasjon

Det er lagt ut program for orakeltjenestene i MAT1030 denne v˚aren p˚a semestersiden.

Det blir ikke ordinære gruppetimer fra og med neste uke.

Oppgaveregningen i morgen blir ren tavleregning, ettersom Roger er bortreist, uten tilgang til e-post, og vikaren har ikke tilgang til styringsfilen for oppgavefoilene.

MAT1030 – Diskret matematikk 14. mai 2008 2

(4)

Informasjon

Det er lagt ut program for orakeltjenestene i MAT1030 denne v˚aren p˚a semestersiden.

Det blir ikke ordinære gruppetimer fra og med neste uke.

Oppgaveregningen i morgen blir ren tavleregning, ettersom Roger er bortreist, uten tilgang til e-post, og vikaren har ikke tilgang til styringsfilen for oppgavefoilene.

(5)

Oppsummering

Sist onsdag startet vi p˚a kapitlet omkompleksitetsteori.

Vi er interessert i ˚a kunne si noe om hvor lang tid det tar ˚a følge en algoritme.

M˚alet er at vi skal kunne sammenlikne tidsbruken til forskjellige algoritmer, for ˚a vurdere hvilken som er mest tidseffektiv. I tillegg skal vi kunne vurdere hvorvidt et program basert p˚a en algoritme kan forventes ˚a terminere for de ønskede input innen akseptabel tid.

MAT1030 – Diskret matematikk 14. mai 2008 3

(6)

Oppsummering

Sist onsdag startet vi p˚a kapitlet omkompleksitetsteori.

Vi er interessert i ˚a kunne si noe om hvor lang tid det tar ˚a følge en algoritme.

M˚alet er at vi skal kunne sammenlikne tidsbruken til forskjellige algoritmer, for ˚a vurdere hvilken som er mest tidseffektiv. I tillegg skal vi kunne vurdere hvorvidt et program basert p˚a en algoritme kan forventes ˚a terminere for de ønskede input innen akseptabel tid.

(7)

Oppsummering

Sist onsdag startet vi p˚a kapitlet omkompleksitetsteori.

Vi er interessert i ˚a kunne si noe om hvor lang tid det tar ˚a følge en algoritme.

M˚alet er at vi skal kunne sammenlikne tidsbruken til forskjellige algoritmer, for ˚a vurdere hvilken som er mest tidseffektiv.

I tillegg skal vi kunne vurdere hvorvidt et program basert p˚a en algoritme kan forventes ˚a terminere for de ønskede input innen akseptabel tid.

MAT1030 – Diskret matematikk 14. mai 2008 3

(8)

Oppsummering

Sist onsdag startet vi p˚a kapitlet omkompleksitetsteori.

Vi er interessert i ˚a kunne si noe om hvor lang tid det tar ˚a følge en algoritme.

M˚alet er at vi skal kunne sammenlikne tidsbruken til forskjellige algoritmer, for ˚a vurdere hvilken som er mest tidseffektiv.

I tillegg skal vi kunne vurdere hvorvidt et program basert p˚a en algoritme kan forventes ˚a terminere for de ønskede input innen akseptabel tid.

(9)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

MAT1030 – Diskret matematikk 14. mai 2008 4

(10)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

(11)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

MAT1030 – Diskret matematikk 14. mai 2008 4

(12)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

(13)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

MAT1030 – Diskret matematikk 14. mai 2008 4

(14)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

(15)

Oppsummering

Kompleksitetsteori er en presis matematisk disiplin, men vi skal ikke drive den s˚a langt.

Vi vil følge boka, og finne frem til fire aspekter vi kan se p˚a n˚ar vi skal vurdere effektiviteten av en algoritme.

Det første aspektet var at vi skal konsentrere oss om de delene av algoritmen som tar lengst tid.

Dette kan innebære ˚a se p˚a hvilke enkeltoperasjoner, hvor vi setter en verdi p˚a en variabel, det er som er mest tidkrevende.

Det viktigste er imidlertid ˚a se p˚a de forskjellige løkkene som skal gjennomkjøres under utførelsen av algoritmen, og ˚a se p˚a hvor mange regnetrinn de best˚ar av.

Vi sammenfattet denne tilnærmingenmed

Tell bare de mest tidkrevende operasjonene.

MAT1030 – Diskret matematikk 14. mai 2008 4

(16)

Oppsummering

Det norske ordet “tilnærming” er normalt en grei oversettelse av det engelske “approximation”, men det vil gi en riktigere intuisjon om vi ertattet det medforenkling.

M˚alet med disse tilnærmingene er at det skal bli mulig ˚a sammenlikne algoritmer, og da viser det seg at det er enkelte forenklinger som gir det mest nyttige bildet.

Hvis vi oppfatter ordettilnærming slik at det st˚ar for en tilnærmet beskrivelse av kompleksiteten til en algoritme, er dette noenlunde dekkende.

La oss s˚a fortsette utforskningen av kompleksitetsteoriens verden.

(17)

Oppsummering

Det norske ordet “tilnærming” er normalt en grei oversettelse av det engelske “approximation”, men det vil gi en riktigere intuisjon om vi ertattet det medforenkling.

M˚alet med disse tilnærmingene er at det skal bli mulig ˚a sammenlikne algoritmer, og da viser det seg at det er enkelte forenklinger som gir det mest nyttige bildet.

Hvis vi oppfatter ordettilnærming slik at det st˚ar for en tilnærmet beskrivelse av kompleksiteten til en algoritme, er dette noenlunde dekkende.

La oss s˚a fortsette utforskningen av kompleksitetsteoriens verden.

MAT1030 – Diskret matematikk 14. mai 2008 5

(18)

Oppsummering

Det norske ordet “tilnærming” er normalt en grei oversettelse av det engelske “approximation”, men det vil gi en riktigere intuisjon om vi ertattet det medforenkling.

M˚alet med disse tilnærmingene er at det skal bli mulig ˚a sammenlikne algoritmer, og da viser det seg at det er enkelte forenklinger som gir det mest nyttige bildet.

Hvis vi oppfatter ordettilnærming slik at det st˚ar for en tilnærmet beskrivelse av kompleksiteten til en algoritme, er dette noenlunde dekkende.

La oss s˚a fortsette utforskningen av kompleksitetsteoriens verden.

(19)

Oppsummering

Det norske ordet “tilnærming” er normalt en grei oversettelse av det engelske “approximation”, men det vil gi en riktigere intuisjon om vi ertattet det medforenkling.

M˚alet med disse tilnærmingene er at det skal bli mulig ˚a sammenlikne algoritmer, og da viser det seg at det er enkelte forenklinger som gir det mest nyttige bildet.

Hvis vi oppfatter ordettilnærming slik at det st˚ar for en tilnærmet beskrivelse av kompleksiteten til en algoritme, er dette noenlunde dekkende.

La oss s˚a fortsette utforskningen av kompleksitetsteoriens verden.

MAT1030 – Diskret matematikk 14. mai 2008 5

(20)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1] 3 xn←0

4 i ←1

5 Whilexi = 1do

5.1 xi0 5.2 ii+ 1

6 xi ←1

7 Output xn· · ·x1

(21)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1] 3 xn←0

4 i ←1

5 Whilexi = 1do

5.1 xi0 5.2 ii+ 1

6 xi ←1

7 Output xn· · ·x1

MAT1030 – Diskret matematikk 14. mai 2008 6

(22)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do

5.1 xi0 5.2 ii+ 1

6 xi ←1

7 Output xn· · ·x1

(23)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0

4 i ←1

5 Whilexi = 1do

5.1 xi0 5.2 ii+ 1

6 xi ←1

7 Output xn· · ·x1

MAT1030 – Diskret matematikk 14. mai 2008 6

(24)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do

5.1 xi0 5.2 ii+ 1

6 xi ←1

7 Output xn· · ·x1

(25)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do

5.1 xi0 5.2 ii+ 1 6 xi ←1

7 Output xn· · ·x1

MAT1030 – Diskret matematikk 14. mai 2008 6

(26)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do 5.1 xi0

5.2 ii+ 1 6 xi ←1

7 Output xn· · ·x1

(27)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do 5.1 xi0 5.2 ii+ 1

6 xi ←1

7 Output xn· · ·x1

MAT1030 – Diskret matematikk 14. mai 2008 6

(28)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do 5.1 xi0 5.2 ii+ 1 6 xi ←1

7 Output xn· · ·x1

(29)

Kompleksitetsteori

Eksempel

1 Input n [n naturlig tall]

2 Input xn−1, . . . ,x1 [Hverxi lik 0 eller 1]

3 xn←0 4 i ←1

5 Whilexi = 1do 5.1 xi0 5.2 ii+ 1 6 xi ←1

7 Output xn· · ·x1

MAT1030 – Diskret matematikk 14. mai 2008 6

(30)

Kompleksitetsteori

Eksempel (Fortsatt)

Denne pseudokoden gir en algoritme for ˚a legge 1 til det binære tallet xn· · ·x1.

Hvis vi starter medn = 20 og det binære tallet

1111111111111111111, vilwhile-løkka gjentaes nitten ganger, og vi tester om den skal brukes 20 ganger.

Hvis vi starter med det binære tallet 1111111111111111110 utfører vi testen forwhile-løkka bare en gang.

Siden den eneste kontrollen vi har over hvor mange ganger denne løkka m˚a gjentas er antall siffre i det binære tallet, lar vi det være m˚alet p˚a hvor lang tid vi bruker.

(31)

Kompleksitetsteori

Eksempel (Fortsatt)

Denne pseudokoden gir en algoritme for ˚a legge 1 til det binære tallet xn· · ·x1.

Hvis vi starter medn = 20 og det binære tallet

1111111111111111111, vilwhile-løkka gjentaes nitten ganger, og vi tester om den skal brukes 20 ganger.

Hvis vi starter med det binære tallet 1111111111111111110 utfører vi testen forwhile-løkka bare en gang.

Siden den eneste kontrollen vi har over hvor mange ganger denne løkka m˚a gjentas er antall siffre i det binære tallet, lar vi det være m˚alet p˚a hvor lang tid vi bruker.

MAT1030 – Diskret matematikk 14. mai 2008 7

(32)

Kompleksitetsteori

Eksempel (Fortsatt)

Denne pseudokoden gir en algoritme for ˚a legge 1 til det binære tallet xn· · ·x1.

Hvis vi starter medn = 20 og det binære tallet

1111111111111111111, vilwhile-løkka gjentaes nitten ganger, og vi tester om den skal brukes 20 ganger.

Hvis vi starter med det binære tallet 1111111111111111110 utfører vi testen forwhile-løkka bare en gang.

Siden den eneste kontrollen vi har over hvor mange ganger denne løkka m˚a gjentas er antall siffre i det binære tallet, lar vi det være m˚alet p˚a hvor lang tid vi bruker.

(33)

Kompleksitetsteori

Eksempel (Fortsatt)

Denne pseudokoden gir en algoritme for ˚a legge 1 til det binære tallet xn· · ·x1.

Hvis vi starter medn = 20 og det binære tallet

1111111111111111111, vilwhile-løkka gjentaes nitten ganger, og vi tester om den skal brukes 20 ganger.

Hvis vi starter med det binære tallet 1111111111111111110 utfører vi testen forwhile-løkka bare en gang.

Siden den eneste kontrollen vi har over hvor mange ganger denne løkka m˚a gjentas er antall siffre i det binære tallet, lar vi det være m˚alet p˚a hvor lang tid vi bruker.

MAT1030 – Diskret matematikk 14. mai 2008 7

(34)

Kompleksitetsteori

Eksempel (Fortsatt)

Denne pseudokoden gir en algoritme for ˚a legge 1 til det binære tallet xn· · ·x1.

Hvis vi starter medn = 20 og det binære tallet

1111111111111111111, vilwhile-løkka gjentaes nitten ganger, og vi tester om den skal brukes 20 ganger.

Hvis vi starter med det binære tallet 1111111111111111110 utfører vi testen forwhile-løkka bare en gang.

Siden den eneste kontrollen vi har over hvor mange ganger denne løkka m˚a gjentas er antall siffre i det binære tallet, lar vi det være m˚alet p˚a hvor lang tid vi bruker.

(35)

Kompleksitetsteori

For endel algoritmer vil tiden vi bruker kunne avhenge av om vi er heldige med valg av input eller ikke.

N˚ar vi skal vurdere kompleksiteten til en algoritme, kan det ofte være hensiktsmessig ˚a vurdere tidsbruken i de verste tilfellene.

Det er dette læreboka setter opp som tilnærming nr 2, etter at man har vurdert hvilken del av programmet det er som overskygger de andre delene i tidsbruk:

Hvis tidsbruken varierer for forskjellige input av samme størrelse, ta utgangspunkt i det verste tilfellet.

MAT1030 – Diskret matematikk 14. mai 2008 8

(36)

Kompleksitetsteori

For endel algoritmer vil tiden vi bruker kunne avhenge av om vi er heldige med valg av input eller ikke.

N˚ar vi skal vurdere kompleksiteten til en algoritme, kan det ofte være hensiktsmessig ˚a vurdere tidsbruken i de verste tilfellene.

Det er dette læreboka setter opp som tilnærming nr 2, etter at man har vurdert hvilken del av programmet det er som overskygger de andre delene i tidsbruk:

Hvis tidsbruken varierer for forskjellige input av samme størrelse, ta utgangspunkt i det verste tilfellet.

(37)

Kompleksitetsteori

For endel algoritmer vil tiden vi bruker kunne avhenge av om vi er heldige med valg av input eller ikke.

N˚ar vi skal vurdere kompleksiteten til en algoritme, kan det ofte være hensiktsmessig ˚a vurdere tidsbruken i de verste tilfellene.

Det er dette læreboka setter opp som tilnærming nr 2, etter at man har vurdert hvilken del av programmet det er som overskygger de andre delene i tidsbruk:

Hvis tidsbruken varierer for forskjellige input av samme størrelse, ta utgangspunkt i det verste tilfellet.

MAT1030 – Diskret matematikk 14. mai 2008 8

(38)

Kompleksitetsteori

For endel algoritmer vil tiden vi bruker kunne avhenge av om vi er heldige med valg av input eller ikke.

N˚ar vi skal vurdere kompleksiteten til en algoritme, kan det ofte være hensiktsmessig ˚a vurdere tidsbruken i de verste tilfellene.

Det er dette læreboka setter opp som tilnærming nr 2, etter at man har vurdert hvilken del av programmet det er som overskygger de andre delene i tidsbruk:

Hvis tidsbruken varierer for forskjellige input av samme størrelse,

ta utgangspunkt i det verste tilfellet.

(39)

Kompleksitetsteori

For endel algoritmer vil tiden vi bruker kunne avhenge av om vi er heldige med valg av input eller ikke.

N˚ar vi skal vurdere kompleksiteten til en algoritme, kan det ofte være hensiktsmessig ˚a vurdere tidsbruken i de verste tilfellene.

Det er dette læreboka setter opp som tilnærming nr 2, etter at man har vurdert hvilken del av programmet det er som overskygger de andre delene i tidsbruk:

Hvis tidsbruken varierer for forskjellige input av samme størrelse, ta utgangspunkt i det verste tilfellet.

MAT1030 – Diskret matematikk 14. mai 2008 8

(40)

Kompleksitetsteori

Eksempel

Vi har gitt en sammenhengende graf og skal avgjøre om grafen har en Eulerkrets eller ikke.

N˚ar vi skal vurdere kompleksiteten av en algoritme, er det viktig hvordan vi representerer input.

Her vil vi anta at grafen er gitt som en symmetrisk matrise, hvor tallet i radi og kolonnej angir hvor mange kanter det er mellom nodenei og j.

Tallene p˚a diagonalen skal være det dobbelte av antall løkker ved den tilsvarende noden.

Graden til en node er da summen av alle tallene langs tilsvarende rad (eller søyle).

(41)

Kompleksitetsteori

Eksempel

Vi har gitt en sammenhengende graf og skal avgjøre om grafen har en Eulerkrets eller ikke.

N˚ar vi skal vurdere kompleksiteten av en algoritme, er det viktig hvordan vi representerer input.

Her vil vi anta at grafen er gitt som en symmetrisk matrise, hvor tallet i radi og kolonnej angir hvor mange kanter det er mellom nodenei og j.

Tallene p˚a diagonalen skal være det dobbelte av antall løkker ved den tilsvarende noden.

Graden til en node er da summen av alle tallene langs tilsvarende rad (eller søyle).

MAT1030 – Diskret matematikk 14. mai 2008 9

(42)

Kompleksitetsteori

Eksempel

Vi har gitt en sammenhengende graf og skal avgjøre om grafen har en Eulerkrets eller ikke.

N˚ar vi skal vurdere kompleksiteten av en algoritme, er det viktig hvordan vi representerer input.

Her vil vi anta at grafen er gitt som en symmetrisk matrise, hvor tallet i radi og kolonnej angir hvor mange kanter det er mellom nodenei og j.

Tallene p˚a diagonalen skal være det dobbelte av antall løkker ved den tilsvarende noden.

Graden til en node er da summen av alle tallene langs tilsvarende rad (eller søyle).

(43)

Kompleksitetsteori

Eksempel

Vi har gitt en sammenhengende graf og skal avgjøre om grafen har en Eulerkrets eller ikke.

N˚ar vi skal vurdere kompleksiteten av en algoritme, er det viktig hvordan vi representerer input.

Her vil vi anta at grafen er gitt som en symmetrisk matrise, hvor tallet i radi og kolonnej angir hvor mange kanter det er mellom nodenei og j.

Tallene p˚a diagonalen skal være det dobbelte av antall løkker ved den tilsvarende noden.

Graden til en node er da summen av alle tallene langs tilsvarende rad (eller søyle).

MAT1030 – Diskret matematikk 14. mai 2008 9

(44)

Kompleksitetsteori

Eksempel

Vi har gitt en sammenhengende graf og skal avgjøre om grafen har en Eulerkrets eller ikke.

N˚ar vi skal vurdere kompleksiteten av en algoritme, er det viktig hvordan vi representerer input.

Her vil vi anta at grafen er gitt som en symmetrisk matrise, hvor tallet i radi og kolonnej angir hvor mange kanter det er mellom nodenei og j.

Tallene p˚a diagonalen skal være det dobbelte av antall løkker ved den tilsvarende noden.

Graden til en node er da summen av alle tallene langs tilsvarende rad (eller søyle).

(45)

Kompleksitetsteori

Eksempel

Vi har gitt en sammenhengende graf og skal avgjøre om grafen har en Eulerkrets eller ikke.

N˚ar vi skal vurdere kompleksiteten av en algoritme, er det viktig hvordan vi representerer input.

Her vil vi anta at grafen er gitt som en symmetrisk matrise, hvor tallet i radi og kolonnej angir hvor mange kanter det er mellom nodenei og j.

Tallene p˚a diagonalen skal være det dobbelte av antall løkker ved den tilsvarende noden.

Graden til en node er da summen av alle tallene langs tilsvarende rad (eller søyle).

MAT1030 – Diskret matematikk 14. mai 2008 9

(46)

Kompleksitetsteori

Eksempel (Fortsatt)

Vi bestemmer om grafen har en Eulerkrets ved ˚a summere tallene i hver rad til vi finner et oddetall.

Har grafen en Eulerkrets, m˚a vi summere tallene i alle radene, s˚a hvis n er antall noder, m˚a vi utføre n(n−1) addisjoner og sjekke at n tall er partall.

Hvis grafen ikke har en Eulerkrets kan vi slippe billig fra det og utføre baren−1 addisjoner.

Den dominerende prosessen i det verste tilfellet er det ˚a summere tallene i alle radene, s˚a det er de operasjonene vi legger til grunn n˚ar vi vurderer kompleksiteten.

(47)

Kompleksitetsteori

Eksempel (Fortsatt)

Vi bestemmer om grafen har en Eulerkrets ved ˚a summere tallene i hver rad til vi finner et oddetall.

Har grafen en Eulerkrets, m˚a vi summere tallene i alle radene, s˚a hvis n er antall noder, m˚a vi utføre n(n−1) addisjoner og sjekke at n tall er partall.

Hvis grafen ikke har en Eulerkrets kan vi slippe billig fra det og utføre baren−1 addisjoner.

Den dominerende prosessen i det verste tilfellet er det ˚a summere tallene i alle radene, s˚a det er de operasjonene vi legger til grunn n˚ar vi vurderer kompleksiteten.

MAT1030 – Diskret matematikk 14. mai 2008 10

(48)

Kompleksitetsteori

Eksempel (Fortsatt)

Vi bestemmer om grafen har en Eulerkrets ved ˚a summere tallene i hver rad til vi finner et oddetall.

Har grafen en Eulerkrets, m˚a vi summere tallene i alle radene, s˚a hvis n er antall noder, m˚a vi utføren(n−1) addisjoner og sjekke at n tall er partall.

Hvis grafen ikke har en Eulerkrets kan vi slippe billig fra det og utføre baren−1 addisjoner.

Den dominerende prosessen i det verste tilfellet er det ˚a summere tallene i alle radene, s˚a det er de operasjonene vi legger til grunn n˚ar vi vurderer kompleksiteten.

(49)

Kompleksitetsteori

Eksempel (Fortsatt)

Vi bestemmer om grafen har en Eulerkrets ved ˚a summere tallene i hver rad til vi finner et oddetall.

Har grafen en Eulerkrets, m˚a vi summere tallene i alle radene, s˚a hvis n er antall noder, m˚a vi utføren(n−1) addisjoner og sjekke at n tall er partall.

Hvis grafen ikke har en Eulerkrets kan vi slippe billig fra det og utføre baren−1 addisjoner.

Den dominerende prosessen i det verste tilfellet er det ˚a summere tallene i alle radene, s˚a det er de operasjonene vi legger til grunn n˚ar vi vurderer kompleksiteten.

MAT1030 – Diskret matematikk 14. mai 2008 10

(50)

Kompleksitetsteori

Eksempel (Fortsatt)

Vi bestemmer om grafen har en Eulerkrets ved ˚a summere tallene i hver rad til vi finner et oddetall.

Har grafen en Eulerkrets, m˚a vi summere tallene i alle radene, s˚a hvis n er antall noder, m˚a vi utføren(n−1) addisjoner og sjekke at n tall er partall.

Hvis grafen ikke har en Eulerkrets kan vi slippe billig fra det og utføre baren−1 addisjoner.

Den dominerende prosessen i det verste tilfellet er det ˚a summere tallene i alle radene, s˚a det er de operasjonene vi legger til grunn n˚ar vi vurderer kompleksiteten.

(51)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende? Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAvære n×n-matrisen tilG hvorai,j er tallet i radi og søylej. LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

MAT1030 – Diskret matematikk 14. mai 2008 11

(52)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende? Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAvære n×n-matrisen tilG hvorai,j er tallet i radi og søylej. LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

(53)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAvære n×n-matrisen tilG hvorai,j er tallet i radi og søylej. LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

MAT1030 – Diskret matematikk 14. mai 2008 11

(54)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAværen×n-matrisen tilG hvorai,j er tallet i radi og søylej. LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

(55)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAværen×n-matrisen tilG hvorai,j er tallet i radi og søylej. LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

MAT1030 – Diskret matematikk 14. mai 2008 11

(56)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAværen×n-matrisen tilG hvorai,j er tallet i radi og søylej.

LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

(57)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAværen×n-matrisen tilG hvorai,j er tallet i radi og søylej.

LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j >0)}. G er sammenhengende hvisXn={1, . . . ,n}.

MAT1030 – Diskret matematikk 14. mai 2008 11

(58)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAværen×n-matrisen tilG hvorai,j er tallet i radi og søylej.

LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j>0)}.

G er sammenhengende hvisXn={1, . . . ,n}.

(59)

Kompleksitetsteori

Eksempel (Fortsatt)

Anta n˚a at vi ikke visste at grafen var sammenhengende.

Er det ødeleggende for kompleksiteten av problemet hvorvidt grafen har en Eulerkrets at vi m˚a undersøke om den er sammenhengende?

Vi kan uformelt beskrive en prosedyre som undersøker om en graf er sammenhengende p˚a følgende m˚ate:

Vi vil finne sammenhengskomponenten til node 1:

LaAværen×n-matrisen tilG hvorai,j er tallet i radi og søylej.

LaX1={1}

Ved rekursjon fork <n, laXk+1={j n| ∃iXk(ai,j>0)}.

G er sammenhengende hvisXn={1, . . . ,n}.

MAT1030 – Diskret matematikk 14. mai 2008 11

(60)

Kompleksitetsteori

Eksempel (Fortsatt)

I denne algoritmen har vi en hovedløkke in trinn.

Hvert trinn i løkka best˚ar av en gjennomløpning av alle par av noder, for ˚a se om det finnes en kant som forbinder den ene noden med sammenhengskomponenten bygget opp s˚a langt.

Det ˚a undersøke om en graf er sammenhengende krever alts˚a flere operasjoner enn det ˚a undersøke om den har en Eulerkrets, n˚ar vi gjør det p˚a denne m˚aten.

(61)

Kompleksitetsteori

Eksempel (Fortsatt)

I denne algoritmen har vi en hovedløkke in trinn.

Hvert trinn i løkka best˚ar av en gjennomløpning av alle par av noder, for ˚a se om det finnes en kant som forbinder den ene noden med sammenhengskomponenten bygget opp s˚a langt.

Det ˚a undersøke om en graf er sammenhengende krever alts˚a flere operasjoner enn det ˚a undersøke om den har en Eulerkrets, n˚ar vi gjør det p˚a denne m˚aten.

MAT1030 – Diskret matematikk 14. mai 2008 12

(62)

Kompleksitetsteori

Eksempel (Fortsatt)

I denne algoritmen har vi en hovedløkke in trinn.

Hvert trinn i løkka best˚ar av en gjennomløpning av alle par av noder, for ˚a se om det finnes en kant som forbinder den ene noden med sammenhengskomponenten bygget opp s˚a langt.

Det ˚a undersøke om en graf er sammenhengende krever alts˚a flere operasjoner enn det ˚a undersøke om den har en Eulerkrets, n˚ar vi gjør det p˚a denne m˚aten.

(63)

Kompleksitetsteori

Eksempel (Fortsatt)

I denne algoritmen har vi en hovedløkke in trinn.

Hvert trinn i løkka best˚ar av en gjennomløpning av alle par av noder, for ˚a se om det finnes en kant som forbinder den ene noden med sammenhengskomponenten bygget opp s˚a langt.

Det ˚a undersøke om en graf er sammenhengende krever alts˚a flere operasjoner enn det ˚a undersøke om den har en Eulerkrets, n˚ar vi gjør det p˚a denne m˚aten.

MAT1030 – Diskret matematikk 14. mai 2008 12

(64)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren. Hvis n≥m er to naturlige tall vil Euklid(n,m) være

mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

(65)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren. Hvis n≥m er to naturlige tall vil Euklid(n,m) være

mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

MAT1030 – Diskret matematikk 14. mai 2008 13

(66)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren. Hvis n≥m er to naturlige tall vil Euklid(n,m) være

mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

(67)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren.

Hvis n≥m er to naturlige tall vil Euklid(n,m) være

mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

MAT1030 – Diskret matematikk 14. mai 2008 13

(68)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren.

Hvis n≥m er to naturlige tall vil Euklid(n,m) være

mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

(69)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren.

Hvis n≥m er to naturlige tall vil Euklid(n,m) være mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

MAT1030 – Diskret matematikk 14. mai 2008 13

(70)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren.

Hvis n≥m er to naturlige tall vil Euklid(n,m) være mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

(71)

Kompleksitetsteori

Eksempel

Det neste eksemplet som skal belyse tilnærming 2 erEuklids algoritme.

Euklids algoritme er en selvkallende algoritme som finner det største felles m˚al for to tall.

Det største felles m˚alet er det samme som den største felles faktoren.

Hvis n≥m er to naturlige tall vil Euklid(n,m) være mhvismer en faktor in.

Euklid(m,k) hvork er resten n˚ar vi delernamarmikke er en faktor in.

Euklids algoritme er rask, selv for store tall.

MAT1030 – Diskret matematikk 14. mai 2008 13

(72)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi følger Euklids algoritme for to tallpar som ligger nær hverandre ser vi at det likevel kan være forskjeller i hvor raskt algoritmen gir et svar.

1 (80,32)(32,16) som gir svar 16.

2 (81,32)(32,17)(17,15)(15,2)(2,1) som gir svaret 1

Hvordan skal vi s˚a kunne finne de verste tilfellene? Følg med p˚a den overraskende fortsettelsen!

(73)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi følger Euklids algoritme for to tallpar som ligger nær hverandre ser vi at det likevel kan være forskjeller i hvor raskt algoritmen gir et svar.

1 (80,32)(32,16) som gir svar 16.

2 (81,32)(32,17)(17,15)(15,2)(2,1) som gir svaret 1 Hvordan skal vi s˚a kunne finne de verste tilfellene?

Følg med p˚a den overraskende fortsettelsen!

MAT1030 – Diskret matematikk 14. mai 2008 14

(74)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi følger Euklids algoritme for to tallpar som ligger nær hverandre ser vi at det likevel kan være forskjeller i hvor raskt algoritmen gir et svar.

1 (80,32)(32,16) som gir svar 16.

2 (81,32)(32,17)(17,15)(15,2)(2,1) som gir svaret 1 Hvordan skal vi s˚a kunne finne de verste tilfellene?

Følg med p˚a den overraskende fortsettelsen!

(75)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi følger Euklids algoritme for to tallpar som ligger nær hverandre ser vi at det likevel kan være forskjeller i hvor raskt algoritmen gir et svar.

1 (80,32)(32,16) som gir svar 16.

2 (81,32)(32,17)(17,15)(15,2)(2,1) som gir svaret 1

Hvordan skal vi s˚a kunne finne de verste tilfellene? Følg med p˚a den overraskende fortsettelsen!

MAT1030 – Diskret matematikk 14. mai 2008 14

(76)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi følger Euklids algoritme for to tallpar som ligger nær hverandre ser vi at det likevel kan være forskjeller i hvor raskt algoritmen gir et svar.

1 (80,32)(32,16) som gir svar 16.

2 (81,32)(32,17)(17,15)(15,2)(2,1) som gir svaret 1 Hvordan skal vi s˚a kunne finne de verste tilfellene?

Følg med p˚a den overraskende fortsettelsen!

(77)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi følger Euklids algoritme for to tallpar som ligger nær hverandre ser vi at det likevel kan være forskjeller i hvor raskt algoritmen gir et svar.

1 (80,32)(32,16) som gir svar 16.

2 (81,32)(32,17)(17,15)(15,2)(2,1) som gir svaret 1 Hvordan skal vi s˚a kunne finne de verste tilfellene?

Følg med p˚a den overraskende fortsettelsen!

MAT1030 – Diskret matematikk 14. mai 2008 14

(78)

Kompleksitetsteori

Eksempel (Fortsatt)

Det minste par av forskjellige tall som gir oss svaret med en gang er (2,1)

Det minste tallet>2 som gir 1 som rest n˚ar vi deler det med 2 er 1 + 2 = 3

Det minste tallet>3 som gir 2 som rest n˚ar vi deler det med 3 er 3 + 2 = 5.

Det minste tallet>5 som gir 3 som rest n˚ar vi deler det med 5 er 5 + 3 = 8

(79)

Kompleksitetsteori

Eksempel (Fortsatt)

Det minste par av forskjellige tall som gir oss svaret med en gang er (2,1)

Det minste tallet>2 som gir 1 som rest n˚ar vi deler det med 2 er 1 + 2 = 3

Det minste tallet>3 som gir 2 som rest n˚ar vi deler det med 3 er 3 + 2 = 5.

Det minste tallet>5 som gir 3 som rest n˚ar vi deler det med 5 er 5 + 3 = 8

MAT1030 – Diskret matematikk 14. mai 2008 15

(80)

Kompleksitetsteori

Eksempel (Fortsatt)

Det minste par av forskjellige tall som gir oss svaret med en gang er (2,1)

Det minste tallet>2 som gir 1 som rest n˚ar vi deler det med 2 er 1 + 2 = 3

Det minste tallet>3 som gir 2 som rest n˚ar vi deler det med 3 er 3 + 2 = 5.

Det minste tallet>5 som gir 3 som rest n˚ar vi deler det med 5 er 5 + 3 = 8

(81)

Kompleksitetsteori

Eksempel (Fortsatt)

Det minste par av forskjellige tall som gir oss svaret med en gang er (2,1)

Det minste tallet>2 som gir 1 som rest n˚ar vi deler det med 2 er 1 + 2 = 3

Det minste tallet>3 som gir 2 som rest n˚ar vi deler det med 3 er 3 + 2 = 5.

Det minste tallet>5 som gir 3 som rest n˚ar vi deler det med 5 er 5 + 3 = 8

MAT1030 – Diskret matematikk 14. mai 2008 15

(82)

Kompleksitetsteori

Eksempel (Fortsatt)

Det minste par av forskjellige tall som gir oss svaret med en gang er (2,1)

Det minste tallet>2 som gir 1 som rest n˚ar vi deler det med 2 er 1 + 2 = 3

Det minste tallet>3 som gir 2 som rest n˚ar vi deler det med 3 er 3 + 2 = 5.

Det minste tallet>5 som gir 3 som rest n˚ar vi deler det med 5 er 5 + 3 = 8

(83)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi begynner med et par av Fibonaccitall (Fn+1,Fn) vil Euklids algoritme gi oss paret (Fn,Fn−1) i neste omgang.

Dette er de verste tilfellene, det vil si de tilfellene hvor vi bruker lengst tid i forhold til hvor store tallene er.

Dette var neppe en anvendelse Fibonacci hadde i tankene, men hvem vet?

MAT1030 – Diskret matematikk 14. mai 2008 16

(84)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi begynner med et par av Fibonaccitall (Fn+1,Fn) vil Euklids algoritme gi oss paret (Fn,Fn−1) i neste omgang.

Dette er de verste tilfellene, det vil si de tilfellene hvor vi bruker lengst tid i forhold til hvor store tallene er.

Dette var neppe en anvendelse Fibonacci hadde i tankene, men hvem vet?

(85)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi begynner med et par av Fibonaccitall (Fn+1,Fn) vil Euklids algoritme gi oss paret (Fn,Fn−1) i neste omgang.

Dette er de verste tilfellene, det vil si de tilfellene hvor vi bruker lengst tid i forhold til hvor store tallene er.

Dette var neppe en anvendelse Fibonacci hadde i tankene, men hvem vet?

MAT1030 – Diskret matematikk 14. mai 2008 16

(86)

Kompleksitetsteori

Eksempel (Fortsatt)

Hvis vi begynner med et par av Fibonaccitall (Fn+1,Fn) vil Euklids algoritme gi oss paret (Fn,Fn−1) i neste omgang.

Dette er de verste tilfellene, det vil si de tilfellene hvor vi bruker lengst tid i forhold til hvor store tallene er.

Dette var neppe en anvendelse Fibonacci hadde i tankene, men hvem vet?

(87)

Kompleksitetsteori

N˚ar vi skal vurdere om en algoritme er raskere enn en annen, er det ikke sikkert at det er relevant for alle input.

Det kan lønne seg ˚a benytte en algoritme som arbeider raskere for store input, der tiden vi bruker faktisk kan ha økonomisk betydning, selv om en annen algoritme er bedre for sm˚a input.

Vi skal først illustrere dette ved ˚a g˚a gjennom et eksempel i boka, ettersom dette eksemplet i seg selv er viktig.

Det dreier seg om effektiv eksponensiering, det vil si, om en metode for raskt ˚a kunne beregne store potenser av et tall.

Eksemplet har samme verdi om vi regner potenser av reelle tall, naturlige tall eller hele tall, s˚a det presiserer vi ikke.

MAT1030 – Diskret matematikk 14. mai 2008 17

(88)

Kompleksitetsteori

N˚ar vi skal vurdere om en algoritme er raskere enn en annen, er det ikke sikkert at det er relevant for alle input.

Det kan lønne seg ˚a benytte en algoritme som arbeider raskere for store input, der tiden vi bruker faktisk kan ha økonomisk betydning, selv om en annen algoritme er bedre for sm˚a input.

Vi skal først illustrere dette ved ˚a g˚a gjennom et eksempel i boka, ettersom dette eksemplet i seg selv er viktig.

Det dreier seg om effektiv eksponensiering, det vil si, om en metode for raskt ˚a kunne beregne store potenser av et tall.

Eksemplet har samme verdi om vi regner potenser av reelle tall, naturlige tall eller hele tall, s˚a det presiserer vi ikke.

(89)

Kompleksitetsteori

N˚ar vi skal vurdere om en algoritme er raskere enn en annen, er det ikke sikkert at det er relevant for alle input.

Det kan lønne seg ˚a benytte en algoritme som arbeider raskere for store input, der tiden vi bruker faktisk kan ha økonomisk betydning, selv om en annen algoritme er bedre for sm˚a input.

Vi skal først illustrere dette ved ˚a g˚a gjennom et eksempel i boka, ettersom dette eksemplet i seg selv er viktig.

Det dreier seg om effektiv eksponensiering, det vil si, om en metode for raskt ˚a kunne beregne store potenser av et tall.

Eksemplet har samme verdi om vi regner potenser av reelle tall, naturlige tall eller hele tall, s˚a det presiserer vi ikke.

MAT1030 – Diskret matematikk 14. mai 2008 17

(90)

Kompleksitetsteori

N˚ar vi skal vurdere om en algoritme er raskere enn en annen, er det ikke sikkert at det er relevant for alle input.

Det kan lønne seg ˚a benytte en algoritme som arbeider raskere for store input, der tiden vi bruker faktisk kan ha økonomisk betydning, selv om en annen algoritme er bedre for sm˚a input.

Vi skal først illustrere dette ved ˚a g˚a gjennom et eksempel i boka, ettersom dette eksemplet i seg selv er viktig.

Det dreier seg om effektiv eksponensiering, det vil si, om en metode for raskt ˚a kunne beregne store potenser av et tall.

Eksemplet har samme verdi om vi regner potenser av reelle tall, naturlige tall eller hele tall, s˚a det presiserer vi ikke.

(91)

Kompleksitetsteori

N˚ar vi skal vurdere om en algoritme er raskere enn en annen, er det ikke sikkert at det er relevant for alle input.

Det kan lønne seg ˚a benytte en algoritme som arbeider raskere for store input, der tiden vi bruker faktisk kan ha økonomisk betydning, selv om en annen algoritme er bedre for sm˚a input.

Vi skal først illustrere dette ved ˚a g˚a gjennom et eksempel i boka, ettersom dette eksemplet i seg selv er viktig.

Det dreier seg om effektiv eksponensiering, det vil si, om en metode for raskt ˚a kunne beregne store potenser av et tall.

Eksemplet har samme verdi om vi regner potenser av reelle tall, naturlige tall eller hele tall, s˚a det presiserer vi ikke.

MAT1030 – Diskret matematikk 14. mai 2008 17

(92)

Kompleksitetsteori

Eksempel

Vi kan definere funksjonen f(x,n) =xn ved rekursjon som følger:

x0= 1 xn+1=xn·x

Skal vi bruke denne til ˚a beregne 38 f˚ar vi følgende beregning:

(93)

Kompleksitetsteori

Eksempel

Vi kan definere funksjonen f(x,n) =xn ved rekursjon som følger:

x0= 1 xn+1=xn·x

Skal vi bruke denne til ˚a beregne 38 f˚ar vi følgende beregning:

MAT1030 – Diskret matematikk 14. mai 2008 18

(94)

Kompleksitetsteori

Eksempel

Vi kan definere funksjonen f(x,n) =xn ved rekursjon som følger:

x0= 1

xn+1=xn·x

Skal vi bruke denne til ˚a beregne 38 f˚ar vi følgende beregning:

(95)

Kompleksitetsteori

Eksempel

Vi kan definere funksjonen f(x,n) =xn ved rekursjon som følger:

x0= 1 xn+1=xn·x

Skal vi bruke denne til ˚a beregne 38 f˚ar vi følgende beregning:

MAT1030 – Diskret matematikk 14. mai 2008 18

(96)

Kompleksitetsteori

Eksempel

Vi kan definere funksjonen f(x,n) =xn ved rekursjon som følger:

x0= 1 xn+1=xn·x

Skal vi bruke denne til ˚a beregne 38 f˚ar vi følgende beregning:

Referanser

RELATERTE DOKUMENTER

Hvis man imidlertid har behov for ˚ a representere visse mengder digitalt, m˚ a man velge seg en rekkefølge p˚ a elementene i den universelle mengden E.. Vi skal n˚ a se p˚ a en

Hvis det for eksempel ofte inng˚ ar at data m˚ a ordnes p˚ a en bestemt m˚ ate, spiller det ikke s˚ a stor rolle for utfallet hvordan vi organiserer en slik ordning, men det kan

Vi har ikke brukt noen spesielle egenskaper ved A eller f , s˚ a relasjoner konstruert p˚ a denne m˚ aten vil alltid være ekvivalensrelasjoner.. MAT1030 – Diskret

En algoritme er en oppskrift som forteller oss hvordan vi skritt for skritt skal kunne oppn˚ a et resultat eller løse et problem.. Eksempler p˚ a algoritmer

Etter at vi n˚ a har innført fire prinsipper for tilnærminger, hvorav tre av dem er mer ˚ a betrakte som tommelfingerregler enn matematisk presise regler, skal vi innføre den s˚

Man skal vite prinsippene for ˚ a representere hele tall og reelle tall som bit-sekvenser en datamaskin, og skal kunne begrunne en del av de valg som er gjort i m˚ aten dette blir

Før vi kan bestemme om et utsagn med kvantorer er sant eller usant, m˚ a vi vite hvilke mulige verdier variablene kan ta.. I en programmeringssammenheng vil vi alltid

Da finnes det ikke noe program Q for ˚ a avgjøre om et annet program P med input t vil stoppe eller fortsette i det