Algoritm analys och rekursiva metoder kap 5,7

Slides:



Advertisements
Liknande presentationer
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Programstruktur: C för enchipsdatorer
2D1311 Programmeringsteknik med PBL
Algoritmer och data strukturer -Länkade listor
Sökning och sortering Linda Mannila
DAB752: Algoritmteori Leif Grönqvist
För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)
Föreläsning 7 Analys av algoritmer T(n) och ordo
2D1311 Programmeringsteknik med PBL
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Grundläggande programmering
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
Rör vi oss? Det beror på vad vi jämför oss med.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Namnrum, räckvidd och rekursion Linda Mannila
Föreläsning 10 Stränghantering.
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Fält - Vektor - Array Deklarera, skapa och använda Fält som parameter Föreläsning 9.
MATMAT02b – UPPGIFT 10 Pass VCP Certification
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Uppgifter/Läxa Lös uppgifterna: 120, 121, 123, 125, 126, 128, 130, 133, 142, 144, 145.
Hud & hudsjukdomar Fredrik Hieronymus.
Kap. 3 Derivator och Integraler
KPP053, HT2016 MATLAB, Föreläsning 2
Praktiska grejer Lärare: Erik Ramm-Schmidt Läxorna finns på Wilma
Kapitel 1 Algebra och linjära modeller manada.se.
Kapitel 2 Förändringshastigheter och derivator manada.se.
Behandlas under 4 kursträffar i mineralmuseet mars-april 2017
Sällsynta jordartsmetaller
GEOGRAFI.
Men kolla bildspelet vecka 18 först
Arbetsgrupp ”Hat och hot mot förtroendevalda”
Är en radikal omställning till hållbar konsumtion möjlig och hur påverkar det våra möjligheter till välbefinnande? Jörgen Larsson Assistant professor in.
Välkommen till.
ULA Kompetenscenter - en del av TPY
VISBY IBKs FÖRENINGSTRÄD
Framgångsfaktorer för en global projektverksamhet
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 11: Rekursion
Iteration – Repetitionssats - while
Presentationens avskrift:

Algoritm analys och rekursiva metoder kap 5,7 Algoritmernas exekveringstid kan representeras som funktioner Big-Oh notationen för uppskattning av exekveringstiden -Exekveringstiden för linjär sökning och binärt sökning Kap 5 ( inget om Big-Omega, Big-Theta)

En algoritm? En algoritm är ett sätt av instruktioner som datorn skall följa för att lösa ett problem. public static int seach( int [ ] a, int key) { // söka genom arrayen a tills man hittar ett // ellement==key eller till slutet av arrayen // returnera index för element eller -1 }

Exempel T(N)=N/1.6 +2 Efter 2 sek delay kan vi ladda ner 1.6 K/sec. För en fil med N Kbyte . Hur lång tid tar nedladningen? T(N)=N/1.6 +2 Tiden som tar för en algoritm att exekveras beror på storleken av data som algoritmen behandlar.

Algoritm analys Att beräkna en algoritms komplexitet kallas algoritm analys. Algoritm komplexitet kan handlar om: ”Algorithm time complexity”. Tiden som tar för exekvering ”Algorithm space complexity”. Minnet som krävs för att exekvering.

Experimental analys - genom att exekvera programmmet med olika input och räkna tiden long tid1=System.curentTimeMillis() algoritm long tid2=System.curentTimeMillis() long tid=tid2-tid1

Exekveringstiden som en funktion av input storlek t(ms) 50 * 10 n 5000 10000

Nackdelar med experimental anlys Algoritmen måste implementeras Experiment kan göras på en begränsad antal input, och kan inte vara relevant för andra input storlekar Om du ska jämföra två algoritmer måste dessa testas med samma hårdvaru och mjukvaru förutsättningar Den exakta ex.tiden kräver mycket arbete och är inte relevant i valet av algoritmen I stället: Använd en high-level beskrivning av algoritmen och uppskatta ex.tid

Att uppskatta exekveringstiden Hitta en funktion av f(n) som har samma beteende som algoritmens exekveringstid. Detta kallas tillväxtfunktion. Du jämför två algoritmer genom att titta på tillväxt funktionerna för dessa algoritmer.

Hur? Gör en algoritm som beräknar summan av 1+2+3+ .... + n, alla positiva tal. Algoritm A Algoritm B Algoritm C sum=0 for i=1 to n for j=1 to i sum=sum+1 sum=n*(n+1)/2 sum=0 for i=1 to n sum=sum+ i; Vilken algoritm har den bästa ex.tiden?

Hur många operationer utförs för varje algoritm sum=0 for i=1 to n for j=1 to i sum=sum+1 sum=0 for i=1 to n sum=sum+ i; sum=n*(n+1)/2 tilldelning n+1 1+n(n+1)/2 1 addition n n(n+1)/2 multiplikation div Total operationer 2n+1 n^2+n+1 4 Bra att veta: 1+2+3+..+n =n(n+1)/2 och 1+2+3+...+n-1= n(n-1)/2

Exekveringstiden, en funktion av inputdata B n^2+n+1 T(n) A 2n+1 C 4 n

Big-Oh, notationen Om tillväxthastigheten för en algoritm är proportionell med n -> algoritmen är O(n) Om tillväxthastigheten för en algoritm är konstant -> algoritmen är O(1) Om tillväxthastigheten är proportionell med n^2 -> algoritmen är O(n^2)

Varför kan vi ignorera operationer? Det som är intressant är tillväxthastigheten och inte det exakta exekveringstiden. Big-Oh regel : En algoritm kan representeras med en funktion t(n) ( till ex. n^2+100n ) är O(n^2) om det finns funktionen f(n) (till ex n^2) som för en konstant c och en n0 <n då alltid t(n)<=c*f(n) för alla n>n0 För tillräckligt stora input den dominanta termern avgör funktionens värde

Varför kan operationer ignorerars? for N = 1000 10N3 + N2 + 40N + 80 10001040080 N3 10000000000 For N = 1000 skillnaden is 0.01% !!

Funktioner sorterade efter tillväxthastigheten c Constant log(N) Logarithmic log2(N) Log-squared N Linear Nlog(N) N log N N2 Quadratic N3 Cubic 2N Exponential

Tidskomplexitet N2 N log N N

I praktiken Linear Quadratic public void myAlgorithm() { int s = 0; for (int i = 0; i < N; i++) { s += i; } for (int j = 0; j < N; j++) { s *= (j - i); System.out.println(”s=” + s); Linear Quadratic

I praktiken… Linear Quadratic Bara den dominanta termern public void myAlgorithm() { int s = 0; for (int i = 0; i < N; i++) { s += i; } for (int j = 0; j < N; j++) { s *= (j - i); System.out.println(”s=” + s); Linear Quadratic Bara den dominanta termern

Generellt 1. Ex.tiden för en loop är högst exekverings tiderna för satserna i loopen * antal iterationer 2. Ex.tiden för en grundoperation är konstant O(1) 3. Ex.tiden för en följd av satser är exekveringstiden för den dominanta satsen 4. För n>10 tillväxthastigheten för algoritmer växer enligt O(1) < O(logn) < O(N) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)

Hitta ett element i en osorterad array public static boolean badSearch(int [] arr, int key){ boolean found=false for(i=0;i<arr.length;i++){ if(arr[i]==key) faund=true; } return faund; Best case: Worst case: Average case:

BinarySearch - exkveringstiden public static int binarySearch(int [ ] arr,int key) { int first=0; int last=a.length-1 // index av sista elementet int mid; while(first<=last) mid=first+last/2 if(arr[mid]<key) first=mid+1 else if last=mid-1 else return mid; } return -1; Exekverinstiden är?

2 4 6 8 10 12 14 16 18 20 22 24 26 28