För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Föreläsning 6.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Algoritmer och data strukturer -Länkade listor
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)
Klassarv och inkapsling
Föreläsning 7 Analys av algoritmer T(n) och ordo
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
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
Algoritm analys och rekursiva metoder kap 5,7
IT för personligt arbete F6
Programmering B PHP Lektion 2
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Programmering B PHP Lektion 3
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
Programmeringsbegrepp
Programmering B PHP Lektion 2
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.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Språkteknologiska metoder Språkteknologisk forskning och utveckling (HT 2006)
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
INTRODUKTION TILL PROGRAMMERING
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Sökträd, naiva och balancerade lösningar -HashTable -- Kapitel.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
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.
Kunskapscheck matte Tal.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Föreläsning 1 Introduktion till kursen. Algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Algoritmer och loopar Algoritmer, beräkningsbarhet
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Hash Tabeller och Graf.
Anders Sjögren Funktioner något in och något annat ut.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Manada.se Algebra och funktioner. 1.1 Algebra och polynom Förkunskaper: Grundläggande algebra Konjugatregeln och kvadreringsreglerna Andragradsekvationer.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 11: Rekursion
Iteration – Repetitionssats - while
Z 1.3 Räkna med negativa tal
Presentationens avskrift:

För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5

För utveckling av verksamhet, produkter och livskvalitet. Algoritm analys Effektivitet. (Tidskomplexiteten) I termer av problemets storlek Minneskrav. (Rumskomplexiteten) I termer av problemets storlek Svårighetsgrad. Ju mer komplicerad desto svårare att översätta till program och underhålla. (Analys av tidskomplexitet tilldrar sig mest intresse. Därför används ibland den förkortade termen ”Komplexitet ” när man egentligen avser tidskomplexitet )

För utveckling av verksamhet, produkter och livskvalitet. Algoritm analys Tiden det tar att lösa ett problem är oftast en strängt växande funktion av problemets storlek. Det tar längre tid att sortera tal än att sortera 100 tal. Vissa enkla problem kan dock lösas på konstant tid oavsett storleken Om vi t ex har en array med n tal kan vi alltid ta reda på det i:e talet i arrayen på konstant tid oavsett hur stort n är. Däremot kostar det mer och mer att summera talen i arrayen ju större n är.

För utveckling av verksamhet, produkter och livskvalitet. Exekveringstid, yttre faktorer? Problemets storlek (n) Jo mer data algoritmen behandlar, jo mer mer tid krävs Dator där programmet exekveras De grundläggande operationerna som =, +,... tar olika mycket tid på olika datortyper Programmeringsspråk Om vi implementerar samma algoritm i annat språk så kommer vi efter kompilering inte att ha exakt samma maskinkod. Kompilator Även om vi använder samma språk så kan två olika kompilatorer översätta programmet på något olika sätt.

För utveckling av verksamhet, produkter och livskvalitet. Experimental algoritm analys algoritm () long tid2=System.curentTimeMillis() long tid1=System.curentTimeMillis() long tid=tid2-tid1 - genom att exekvera programmmet med olika input och räkna tidenskillnaden ntid

För utveckling av verksamhet, produkter och livskvalitet. Nackdelar med experimental anlys Algoritmen måste implementeras, kompileras och exekveras på samma dator Experiment kan göras på en begränsad antal input, och kan inte vara relevant för andra inputstorlekar 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 med hjälp av ” analys av tidskoplexitet”

För utveckling av verksamhet, produkter och livskvalitet. Algoritm analys Gör en algoritm som beräknar summan av n, alla positiva tal. Vilken algoritm har den bästa ex.tiden? Algoritm A Algoritm BAlgoritm C sum=0 for i=1 to n sum=sum+ i; sum=0 for i=1 to n for j=1 to i sum=sum+1 sum=n*(n+1)/2

För utveckling av verksamhet, produkter och livskvalitet. Algoritm analys tilldelningn+11+n(n+1)/2 1 additionnn(n+1)/2 1 multiplikation 1 div 1 Total operationer2n+1n^2+n+1 4 sum=0 for i=1 to n sum=sum+ i; sum=0 for i=1 to n for j=1 to i sum=sum+1 sum=n*(n+1)/2

För utveckling av verksamhet, produkter och livskvalitet. Tidskomplexitet T(n) TA(n)=2n+1 T(n)= n eller O(n) TB(n)= n^2+n+1 T(n)=n^2 eller O(n^2) TC(n)=4 T(n)=c eller O(1) Hur exekveringstiden växer som en funktion av problemets Storlek. T ex att den växer linjärt, kvadratiskt,... Ger en uppfattning om hur stora probleminstanser man kan klara av på rimlig tid Man kan jämföra olika algoritmer för samma problem med varandra. Vi har ett mått som är oberoende av datortyp, språk och kompilator. Ett sådant mått kallas algoritmens tidskomplexitet och brukar betecknas med T(n).

För utveckling av verksamhet, produkter och livskvalitet. I praktiken public void myAlgorithm() { int s = 0; for (int i = 0; i < N; i++) { s += i; } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { s *= (j - i); } System.out.println(”s=” + s); }

För utveckling av verksamhet, produkter och livskvalitet. 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)

För utveckling av verksamhet, produkter och livskvalitet. Tidskomplexiten? public static int search ( int [] a, int x) { int NOT_FOUND=-1; for (int i=0; i<a.length;i++) { if(a[i]==x) return i; } return NOT_FOUND; }

För utveckling av verksamhet, produkter och livskvalitet. Binärt Sökning public static int binarySearch( int [ ] a, int x ) { int NOT_FOUND=-1; int low = 0; int high = a.length - 1; int mid; while( low a[ mid ] ) low = mid + 1; // leta i högra halvan else if(x< a[ mid ] ) high = mid - 1; // leta i vänstra halvan else return mid; } return NOT_FOUND; // NOT_FOUND = -1 }

För utveckling av verksamhet, produkter och livskvalitet. ListIterator ListIterator är ett interface som ärver Iterator och där man lagt till metoder för att röra sig även bakåt i listor samt för att sätta in och ta bort element: public interface ListIterator extends Iterator { boolean hasPrevious(); E previous(); void add(E x); void remove();... }

För utveckling av verksamhet, produkter och livskvalitet. List-klasser i java Det finns två konkreta generiska klasser i Javas API för listhantering. Båda implementerar alltså interfacet List ArrayList som implementerats med vektor LinkedList, som använder länkad struktur i implementationen Man bör bara använda ArrayList om alla insättningar görs sist i listan. Insättningar i andra positioner orsakar flyttningar av element. De indexerade operationerna get(int idx) och set(int idx, E element) är däremot effektivare i denna implementation än i LinkedList

För utveckling av verksamhet, produkter och livskvalitet. Paketet weiss.nonstandard i kursboken Paketet weiss.nonstandard innehåller interface och klasser för samlingar, som inte direkt motsvarar klasser i java.util. En del av klasserna utgör alternativa sätt att utforma vissa samlingar. T ex finns det en LinkedList och en tillhörande iterator-klass som har ett annat gränssnitt än sin motsvarighet i java.util resp. weiss.util. Det finns också klasser för hantering av prioritetsköer (BinaryHeap och PairingHeap) som inte har samma gränssnitt som javas prioritetsköklass.