Presentation laddar. Vänta.

Presentation laddar. Vänta.

Datastrukturer och algoritmer Föreläsning 5. Datastrukturer och algoritmer VT08 Innehåll  Algoritmer  Experimentell komplexitetsanalys  Kapitel 2.1-2.2,

Liknande presentationer


En presentation över ämnet: "Datastrukturer och algoritmer Föreläsning 5. Datastrukturer och algoritmer VT08 Innehåll  Algoritmer  Experimentell komplexitetsanalys  Kapitel 2.1-2.2,"— Presentationens avskrift:

1 Datastrukturer och algoritmer Föreläsning 5

2 Datastrukturer och algoritmer VT08 Innehåll  Algoritmer  Experimentell komplexitetsanalys  Kapitel , Kapitel

3 Datastrukturer och algoritmer VT08 Algoritmer  Definition: Algoritm är en noggrann plan, en metod för att stegvis utföra något

4 Datastrukturer och algoritmer VT08 Algoritm  Ordet algoritm härstammar från en man, al- Khwarizmi (latinsk form Algorismus) enligt sidan  Hans arbete (början av 800-talet) ligger till grund för modern aritmetik och algebra  algebra lär komma från titeln på hans viktigaste verk al- Kitab al-mukhtasar fi hisab al-jabr wál muqabala, ”Kompendium i ekvationslära”  Han utarbetade en beräkningsmetod för att lösa ekvationer. Beräkningar gjorda enligt bestämda mönster i flera steg: algoritmer.

5 Datastrukturer och algoritmer VT08 Krav på algoritmer  Ändlighet  Algoritmen måste sluta  Bestämdhet  Varje steg måste vara entydigt  Indata  Måste ha noll eller flera indata  Utdata  Måste ha ett eller flera utdata  Genomförbarhet  Varje steg i algoritmen måste gå att utföra på ändlig tid Bilden är tagen från sidan Donald Knuth, ”The Art of Computer Programming” (första versionen 1968) Kallas ibland algoritm- analysens fader

6 Datastrukturer och algoritmer VT08 Olika sätt att beskriva en algoritm  Naturligt språk - man förklarar problemlösningen med vanlig text med införda variabel- och funktionsnamn.  Blockdiagram - man visar en grov struktur av problemlösningen i form av ritade "boxar". Varje box kan vara ett delproblem.  Flödesschema/flödesdiagram, strukturdiagram - man ritar algoritmen med olika symboler, som visar när och hur saker skall ske i programmet. Finare indelning än blockdiagram, t.ex. kan varje block beskrivas som flödesschema för ett delproblem.  Pseudokod - man skriver en blandning av programmeringsspråk och vanlig text, dvs man har variabler, funktioner, kontrollstrukturer etc

7 Datastrukturer och algoritmer VT08 Exempelproblem  Jag ska bjuda på mums mums till kaffet. Hur många förpackningar måste jag köpa?  Vi antar följande:  Varje förpackning innehåller 4 mums mums  Varje person äter i snitt 3 mums mums om de är färska annars äter de bara 2 mums mums i snitt. Detta exempel är inspirerat av korvexemplet på sidan

8 Datastrukturer och algoritmer VT08 Algoritm – naturligt språk 1. Fråga efter antalet personer; kalla talet för Personer. 2. Fråga om mums mumsen är färska; kalla svaret ärFärska. 3. Om ärFärska är sann 1.Multiplicera Personer med 3 ( antalMumsMums ) 4. Annars 1.Multiplicera Personer med 2 ( antalMumsMums ) 5. Dela antalMumsMums med Avrunda svaret uppåt till närmaste heltal; kalla detta tal för Paket. 7. Svara med talet Paket.

9 Datastrukturer och algoritmer VT08 Algoritm – blockdiagram Program ”Antal mums mums-paket” Läs in Personer och ärFärska Beräkna Paket Visa Paket Beräkna antal mums Dela antal mums- mums med 4 och avrunda uppåt

10 Datastrukturer och algoritmer VT08 Algoritm – flödesdiagram Start Stop Läs in personer Läs in ärFärska Visa Paket Är ärFärska sann? mumsmums = personer * 3 mumsmums = personer * 2 paket = mumsmums/4 avrunda uppåt

11 Datastrukturer och algoritmer VT08 Algoritm – pseduokod write(”antalet personer”) read(Personer) write(”är mumsmumsen färska?”) read(ärFärska) If ärFärska Then antalMumsMums  Personer * 3 Else antalMumsMums  Personer * 2 Paket  round(antalMumsMums/4) write(paket)

12 Datastrukturer och algoritmer VT08 Pseudokod  Kursen använder pseudokod för att beskriva algoritmer  Det finns inget universellt språk utan många dialekter  Alla döljer mycket av programspråkens designval, dvs. pseudokoden är programspråksoberoende

13 Datastrukturer och algoritmer VT08 Pseudokod – programkonstruktioner  Beslutsstrukturer: if(...)then...[else...]  Villkorsloopar: while(...)do... done eller repeat... Until(...)  Räkneloopar: for(...)do... done  Arrayindexering: A[i]  Anrop: function(args)eller object.metod(args)  Returnera värden: return value  Tilldelning:   Jämförelse: =

14 Datastrukturer och algoritmer VT08 Pseudokod – exempel Algorithm arrayMax(A,n) input: An array A storing n integers output: The maximum element in A currentMax  A[0] for i  1 to n-1 do if currentMax < A[i] then currentMax  A[i] done return currentMax

15 Datastrukturer och algoritmer VT08 Algoritmer mer formellt  Algoritmiska problem & beräkningsbarhet  En klass av problem  Beräkningsbar omm det finns en Turingmaskin som löser problemet Turing maskin

16 Datastrukturer och algoritmer VT08 Beräkningsbarhet i praktiken  Tid och rum är begränsande resurser  Ibland finns bara ett fixt utrymme  Ibland blir det dyrare ju mer som används  Hanterlig  Försöker fånga begreppet ”praktisk beräkningsbarhet”  Ett problem är hanterligt om oMan känner till en lösning där resurserna som krävs kan begränsas av polynomfunktioner i uppgiftens storlek (n). o”Problemet kan lösas på polynomtid”

17 Datastrukturer och algoritmer VT08 Ohanterliga problem  Problem som vi (ännu) inte funnit en hanterlig lösning på.  Komplexiteten kan vara tex  Superpolynomiska: Komplexiteten överstiger varje polynomfunktion P(n) för stora n.  Många ohanterliga problem är triviala att förstå och viktiga att lösa!  Schemaläggning  Handelsresande problemet

18 Datastrukturer och algoritmer VT08 Hantera ohanterbarhet  Heuristik  Lösa nästan rätt problem oFörenkling oTex. schemalägg en lärare i taget  Lösa problemet nästan rätt oApproximation oTex. finna minimum genom att systematiskt söka av ett område med tänkbara lösningar tills skillanden mellan två sökningar är mindre än ett visst värde.

19 Datastrukturer och algoritmer VT08 NP-kompletta problem  En speciell klass av ohanterliga problem som alla är ekvivalenta:  Ekvivalenta:  Kan transformeras på polynomtid  Högst exponentiell kompexitet  Saknar bevis för ohanterbarhet  Detta innebär att om vi finner lösning på ett enda av de NP-kompletta problemen så kan vi lösa alla andra problem!  Schemaläggningsproblemet är ett NP-komplett problem.

20 Alla (matematiska)problem Beräkningsbar/hanterbar BeräkningsbaraEj beräkningsbara Hanterbara - polynom 1+n 2 +3*n Icke hanterbara - superpolynom (n!, n n, …)

21 Datastrukturer och algoritmer VT08 Hanterligt eller ej...  Enligt definitionen är n hanterligt medan n inte är hanterligt.

22 Datastrukturer och algoritmer VT08 Analys av algoritmer  Vad vill man analysera hos en algoritm?  Exekveringstid  Minnesåtgång  Korrekthet  Varför analysera algoritmer?  Är algoritmen praktiskt körbar?  Vi vill ha den snabbaste! oAtt implementera oAtt köra

23 Datastrukturer och algoritmer VT08 Litet räkneexempel  Antag att 1 operation tar 1  s och att vi har n = 10 9 element i en lista som ska sorteras  Om algoritmen i medel kräver n 2 operationer tar det år att sortera listan!  Krävs n*log(n) operationer tar det 30000s ≈ 1 arbetsdag.  Det spelar inte så stor roll? Datorerna blir ju dubbelt så snabba med jämna mellanrum!  n 2 och dubbelt så snabb => år  n 2 och 1000 gånger så snabb => 31år

24 Datastrukturer och algoritmer VT08 Exekveringstider - en dator med 1 MIPS, 1*10 6 op/sek N2N2 1/100001/25001/4001/1009/100 N5N5 1/103.2 sek.5.2 min.2.8 tim.28.1 dag. 2N2N 1/10001 s35.7 år40000 billioner år 7500 siffror år N 2.8 tim.3.3 billioner år 7000 siffror år siffror år siffror år Drygt 10 miljarder  s på en dag 1*10 24  s sedan ”Big Bang”

25 Datastrukturer och algoritmer VT08 Mäta tidsåtgången  Hur ska vi mäta tidsåtgången?  Experimentell analys oImplementera algoritmen oKör programmet med varierande datamängd –Storlek –Sammansättning oAnvänd metoder för tidtagning så som System.currentTimeMillis() oPlotta uppmätt data

26 Datastrukturer och algoritmer VT08 Exempel t(ms) n

27 Datastrukturer och algoritmer VT08 Bästa, värsta & medel Värsta Bästa Medel

28 Datastrukturer och algoritmer VT08 Experimentell analys…  Begränsningar med metoden  Måste implementera och testa algoritmen  Svårt att veta om programmet har stannat eller fast i beräkningarna. T ex. 2 n ; n=100 => billioner år  Experimenten kan endast utföras på en begränsad mängd av data, man kan missa viktiga testdata  Hårdvaran och mjukvaran måste vara den samma för alla implementationer.


Ladda ner ppt "Datastrukturer och algoritmer Föreläsning 5. Datastrukturer och algoritmer VT08 Innehåll  Algoritmer  Experimentell komplexitetsanalys  Kapitel 2.1-2.2,"

Liknande presentationer


Google-annonser