Grundlæggende køretidsanalyse af algoritmer

Relaterede dokumenter
Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

UNION-FIND. UNION-FIND-problemet. Forbundethed kan være svær at afgøre (især for en computer) Eksempel på udførelse

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Analyse af algoritmer

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Asymptotisk analyse af algoritmers køretider

Søgning og Sortering. Philip Bille

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Danmarks Tekniske Universitet

Prioritetskøer og hobe. Philip Bille

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

Repræsentation af tal

Asymptotisk analyse af algoritmers køretider

Repræsentation af tal

Note om endelige legemer

28 Algoritmedesign. Noter. PS1 -- Algoritmedesign

Danmarks Tekniske Universitet

Teoretiske Øvelsesopgaver:

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

Danmarks Tekniske Universitet

Repræsentation af tal

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1

Datalogi C + Datastrukturer og Algoritmer

Danmarks Tekniske Universitet

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DesignMat Uge 1 Gensyn med forårets stof

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Dynamisk programmering. Flere eksempler

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

Introduktion til DM507

Videregående Algoritmik. Version med vejledende løsninger indsat!

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Reeksamen i Diskret Matematik

matx.dk Enkle modeller

Transkript:

Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1

Algoritmers effektivitet To forskellige mål for en algoritmes effektivitet: 1. Tidsforbrug: Hvad er algoritmens køretid? 2. Pladsforbrug: Hvad er algoritmens (ekstra) lagerforbrug? Samlet benævnes tids- og pladsanalyse også kompleksitetsanalyse. I det efterfølgende fokuseres udelukkende på teknikker til forudsigelse af algoritmers tidsforbrug (lignende teknikker benyttes til analyse af pladsforbrug). 2

Tidskompleksitet Første observation: Næsten alle algoritmer kræver længere køretid for at løse større problemer. Vi ønsker derfor at besvare følgende spørgsmål: Hvordan forøges en algoritmes køretid som funktion af størrelsen af inddata? 3

Tidskompleksitet Første observation: Næsten alle algoritmer kræver længere køretid for at løse større problemer. Vi ønsker derfor at besvare følgende spørgsmål: Hvordan forøges en algoritmes køretid Giver anledning til flere spørgsmål: som funktion af størrelsen af inddata? Størrelsen af inddata : Hvad er et godt mål for størrelsen af inddata til en algoritme? Køretiden : For hvilke inddata af størrelse skal vi måle køretiden? På hvilken computer skal vi måle køretiden? Hvilket programmeringssprog og hvilken oversætter skal vi benytte? [...] 3-a

Et eksempel: Sekventiel søgning i et array Der er givet et array af heltal med indgange. 89 45 68 17 29 34 90 27 Findes elementet e=34 i arrayet? Benyt sekventiel søgning: Sammenlign med for indtil der er et sammenfald (om noget overhovedet). 4

Definition af inddatastørrelse I mange tilfælde kan vi lade betegne antallet af elementer i inddata, f.eks. antallet af elementer der skal sorteres eller antallet af elementer i det array hvor sekventiel søgning skal foretages. 5

matrice med knuder og heltal, hvert på Definition af inddatastørrelse I mange tilfælde kan vi lade betegne antallet af elementer i inddata, f.eks. antallet af elementer der skal sorteres eller antallet af elementer i det array hvor sekventiel søgning skal foretages. Dog ikke problemfrit. Hvad er problemstørrelsen for følgende inddata? en elementer der er forskellige fra nul en graf med kanter en liste med en liste med strenge cifre 5-a

matrice med knuder og heltal, hvert på Definition af inddatastørrelse I mange tilfælde kan vi lade betegne antallet af elementer i inddata, f.eks. antallet af elementer der skal sorteres eller antallet af elementer i det array hvor sekventiel søgning skal foretages. Dog ikke problemfrit. Hvad er problemstørrelsen for følgende inddata? en elementer der er forskellige fra nul en graf med kanter en liste med en liste med strenge cifre Generel definition af inddatastørrelse: Antallet af bit der benyttes ved en fornuftig repræsentation af inddata. I alle de efterfølgende eksempler er inddata elementer (f.eks. heltal) af begrænset størrelse. 5-b

Definition af køretid Vi ønsker at estimere køretiden ved at tælle antallet af basale operationer som algoritmen foretager. 6

Definition af køretid Vi ønsker at estimere køretiden ved at tælle antallet af basale operationer som algoritmen foretager. Eksempel: I sekventiel søgning er sammenligning af to heltal den basale operation. 6-a

Definition af køretid Vi ønsker at estimere køretiden ved at tælle antallet af basale operationer som algoritmen foretager. Eksempel: I sekventiel søgning er sammenligning af to heltal den basale operation. Antag at den basale operation kan udføres i op tid på en bestemt computer. Lad være antallet af udførte basale operationer for inddatastørrelse. Så er op 6-b

Køretidens afhængighed af inddata For en given algoritme findes der mange forskellige inddata af størrelse. Hvilke inddata skal benyttes til estimering af køretiden? 7

Køretidens afhængighed af inddata For en given algoritme findes der mange forskellige inddata af størrelse. Hvilke inddata skal benyttes til estimering af køretiden? Eksempel: I sekventiel søgning kan antallet af basale operationer (sammenligninger) variere fra til sammenligninger, afhængig af inddata. 7-a

Køretidens afhængighed af inddata For en given algoritme findes der mange forskellige inddata af størrelse. Hvilke inddata skal benyttes til estimering af køretiden? Eksempel: I sekventiel søgning kan antallet af basale operationer (sammenligninger) variere fra til sammenligninger, afhængig af inddata. Tre muligheder for valg af inddata: Værste-tilfælde Estimer køretiden for inddata som giver den længste køretid. Bedste-tilfælde Estimer køretiden for inddata som giver den korteste køretid. Gennemsnits-tilfælde Estimer gennemsnitskøretiden for alle inddata. 7-b

Hvorfor benytte værste-tilfælde som mål for køretid? Fordele: Simpelt og veldefineret mål. Giver en garanti for den maksimale køretid hvilket er væsentligt for mange realtids systemer. Er langt nemmere at analysere end f.eks. gennemsnits-tilfælde. Er en etableret standard indenfor køretidsanalyse af algoritmer. Ulemper: Pessimistisk mål for en algoritmes effektivitet. Kan afvige væsentligt fra den typiske eller gennemsnitlige opførsel af en algoritme. 8

Køretid som funktion af inddatastørrelse Det essentielle spørgsmål: Hvordan vokser køretiden som funktion af inddatastørrelsen? 9

Køretid som funktion af inddatastørrelse Det essentielle spørgsmål: Hvordan vokser køretiden som funktion af inddatastørrelsen? Eksempel: Lad antallet af basale operationer være. Hvis inddata bliver dobbelt så stort, forøges køretiden med en faktor op op op op Bemærk: Både denne udregning! op og den multiplikative faktor går ud dvs. er uden betydning i 9-a

Store- notationen Definition En funktion siges at være læses storeaf af hvis der findes en positiv konstant og et positivt heltal således at for alle 10

og et positivt heltal således at af Store- notationen Definition En funktion en positiv konstant siges at være læses storeaf for alle Eksempler: er : vælg og. er : vælg og, eller er : vælg og. er : vælg og. 10-a hvis der findes og.

Klassiske effektivitetsklasser Klasse Betegnelse Eksempler Konstant Læsning/skriving/sammenligning af enkelte elementer Logaritmisk Binær søgning Lineær Sekventiel søgning; enkelt løkke n-log-n Hurtig sortering Faktoriel Generering af alle permutationer Eksponentiel Generering af alle delmængder Kubisk Tre indlejrede løkker Kvadratisk Langsom sortering; to indlejrede løkker 11

Vækst af køretid for klassiske effektivitetsklasser Klasse 12

Konstant køretid Køretid opadtil begrænset af en konstant uafhængig af inddata. basale operationer sjældent af en komplet algoritme. Typisk køretid for 13

Konstant køretid Køretid opadtil begrænset af en konstant uafhængig af inddata. basale operationer sjældent af en komplet algoritme. Typisk køretid for Eksempler: Addition, multiplikation eller sammenligning af to tal af typen int eller double. Bemærk at addition, multiplikation eller sammenligning af to tal med konstant-tids algoritme, hvis er vilkårlig. cifre ikke er en 13-a

Logaritmisk køretid logaritmer med forskellige grundtal er proportionale: Det er ikke nødvendigt at specificere grundtallet for logaritmen i et storeudtryk, idet logaritmen med grundtal 2, dvs. hvis I det følgende betegner. så er 14

Logaritmisk køretid logaritmer med forskellige grundtal er proportionale: Det er ikke nødvendigt at specificere grundtallet for logaritmen i et storeudtryk, idet logaritmen med grundtal 2, dvs. hvis 34 I det følgende betegner. så er Eksempel: Binær søgning. Søg efter element i sorteret array. #ops #elem 17 27 29 34 45 68 89 90 17 27 29 34 29 14-a

Lineær køretid Svarer til den tid det tager at læse inddata. søgning og initialisering af et array tager lineær køretid. Elementære algoritmer som sekventiel 15

Lineær køretid Svarer til den tid det tager at læse inddata. søgning og initialisering af et array tager lineær køretid. Elementære algoritmer som sekventiel Eksempel: Fletning af to sorterede arrays eller lister af samlet længde. 17 45 68 89 27 29 34 90 17 27 29 34 45 68 89 90 Antallet af sammenligninger er præcis, dvs. køretiden er. 15-a

køretid Hurtige sorteringsalgoritmer har denne køretid. Der er ikke særlig stor forskel på lineær og tid i praksis. 16

køretid Hurtige sorteringsalgoritmer har denne køretid. Der er ikke særlig stor forskel på lineær og tid i praksis. Eksempel: Flettesortering af elementer. #ops #elem 89 45 68 17 29 34 90 27 4 45 89 17 68 29 34 27 90 6 17 45 68 89 27 29 34 90 7 17 27 29 34 45 68 89 90 Antallet af sammenligninger er mindre end, hvor og. Altså er køretiden. 16-a

Kvadratisk køretid 17

68 89 29 34 90 45 5 Kvadratisk køretid Eksempel: Udvælgelsessortering af elementer. #ops 89 45 68 17 29 34 90 27 7 #elem 17 45 68 89 29 34 90 27 6 17 27 17 27 29 89 68 34 90 45 4 17 27 29 34 68 89 90 45 3 17 27 29 34 45 89 90 68 2 17 27 29 34 45 68 90 89 1 17 27 29 34 45 68 89 90 Antallet af sammenligninger er mindre end, dvs. køretiden er. 17-a

Eksponentiel køretid Typisk køretid for algoritmer, som genererer alle delmængder af en mængde. Bemærk at der er forskellige delmængder af en -element mængde. 18

Eksponentiel køretid Typisk køretid for algoritmer, som genererer alle delmængder af en mængde. Bemærk at der er forskellige delmængder af en -element mængde. Eksempel: Lad der være givet en mængde med heltal. Undersøg om mængden kan opsplittes i to dele, så summen af tallene i de to delmængder er ens. Der findes ingen algoritme, der (i værste-tilfælde) er hurtigere end den trivielle: Generer alle delmængder og undersøg om summen af elementerne i delmængden og dens komplement er ens. 18-a

Faktoriel/supereksponentiel køretid Denne køretid fås for algoritmer, der undersøger alle permutationer (rækkefølger) af en -element mængde. Der er forskellige permutationer af en -element mængde. 19

Faktoriel/supereksponentiel køretid Denne køretid fås for algoritmer, der undersøger alle permutationer (rækkefølger) af en -element mængde. Der er forskellige permutationer af en -element mængde. Eksempel: Lad der være givet byer. Den omrejsende sælgers problem er at besøge disse byer, således at den samlede rejste distance bliver minimeret. Der findes ingen algoritme der (i værste-tilfælde) er hurtigere end den trivielle: Generer alle mulige rækkefølger af byerne, udregn distancen for hver af disse og vælg den korteste. 19-a