Översikt. Effektiva algoritmer. En telefonlista. Algoritm

Relevanta dokument
Föreläsning 12. Söndra och härska

Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden

Föreläsning 12. Söndra och härska

RSA-kryptering. Torbjörn Tambour

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Matematik 5 Kap 1 Diskret matematik I

Datastrukturer och algoritmer

Kursens mål är, förutom faktakunskaper om kursinnehållet, att ge:

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

6.4 Svängningsrörelse Ledningar

Algoritmer, datastrukturer och komplexitet

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

Föreläsning 11 Datastrukturer (DAT037)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Algoritmer, datastrukturer och komplexitet

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Magnus Nielsen, IDA, Linköpings universitet

TIDS- OCH RUMSKOMPLEXITET

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Föreläsning 5 Innehåll

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Tommy Färnqvist, IDA, Linköpings universitet

Datastrukturer och algoritmer

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Programmering för språkteknologer II, HT2014. Rum

Sökning. Viktiga algoritmer sökning och sortering. Sökning i en oordnad tabell:

Tommy Färnqvist, IDA, Linköpings universitet. 2 Rekursion i C Implementation av rekursion Svansrekursion En till övning...

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Föreläsning 5: Dynamisk programmering

Facit Tentamen TDDC kl (6)

L HOSPITALS REGEL OCH MACLAURINSERIER.

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Programkonstruktion och Datastrukturer

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Energieffektivt bostadsområde i Borgå

Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?

IV. Ekvationslösning och inversa funktioner

Algoritmer. Två gränssnitt

Föreläsning 9. Sortering

samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV

a k . Serien, som formellt är följden av delsummor

Lösningsförslag Dugga i Mekanik, grundkurs för F, del 2 September 2014

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Föreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Algoritmer och datastrukturer TDA Fredrik Johansson

Inlämningsuppgifter i Funktionsteori, vt1 2012

Lösningar Datastrukturer TDA

Motivering av högerledet i Maxwells 4:e ekvation

förutsättningar och mål

Identification Label. Student ID: Student Name: Elevenkät Fysik. Skolverket Bo Palaszewski, Projektledare Stockholm

Tillämpad Programmering (ID1218) :00-13:00

Övningsuppgifter #11, Programkonstruktion och datastrukturer

5 Klämkraft och monteringsmoment

Exempeltenta GruDat 2002/2003

Uppgifter övning I8: Uppgift nr 1 Sealine AB

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

DEL I. Matematiska Institutionen KTH

Faktorer som påverkar aktiefondsparandet

Föreläsning 2 Datastrukturer (DAT037)

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på sammandragningarna.

Inlämningsuppgifter i Funktionsteori, vt 2016

Några svar till TDDC70/91 Datastrukturer och algoritmer

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Vad har vi pratat om i kursen?

Erfarenheter från labben

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

1 Föreläsning IV; Stokastisk variabel

Algoritmer och problemlösning

Inlämningsuppgifter i Funktionsteori, ht 2018

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Datastrukturer D. Föreläsning 2

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

10. MEKANISKA SVÄNGNINGAR

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Tentamen Datastrukturer för D2 DAT 035

Följande uttryck används ofta i olika problem som leder till differentialekvationer: Formell beskrivning det finns ett tal k så att A=kB

Facit Tentamen TDDC (7)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Problemlösning och algoritmer

Tentamen SF1661 Perspektiv på matematik Lördagen 18 februari 2012, klockan Svar och lösningsförslag

Centrala gränsvärdessatsen (CGS). Approximationer

Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Medan ni väntar. 2. Skriv metoden. 3. Skriv metoden. Naturligtvis rekursivt och utan användning av Javas standardmetoder.

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

F4 Matematikrep. Summatecken. Summatecken, forts. Summatecken, forts. Summatecknet. Potensräkning. Logaritmer. Kombinatorik

Tentamen: Programutveckling ht 2015

Summera godtyckligt antal tal. Programkonstruktion. Moment 4 Om rekursion. Fullständigt resonemang för summeringen. Analys av summeringsproblemet

Sökning och sortering

Induktion och Binomialsatsen. Vi fortsätter att visa hur matematiska påståenden bevisas med induktion.

Föreläsning Datastrukturer (DAT037)

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

NÄR TYSTNADEN VÄSNAS. Projektet Anti Depp Informationsbroschyr om tinnitus. Antidepp_broschyr.indd :24:58

Algoritmteori - effektivitet

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Transkript:

Översit Effetiva algoritmer Håan Jonsson Slides och od av Fredri Bengtsson Algoritm? Vad är det? Effetiva algoritmer En telefonlista! Hur hittar man namnet? I telefonlistan Två olia metoder Slutsatser Analys Hur fort går det egentligen? Sortering ett exempel Forsningsfronten... J Hemuppgift... Algoritm En telefonlista Vad är det? Stegvis besrivning av procedur För att utföra en bestämd uppgift Effetivitet? Hur snabbt proceduren går att genomföra Ofta an man göra en uppgift på flera olia sätt Vi tar ett exempel Leta upp ett telefonnummer i en telefonlista Slå upp i telefonlista? Leta från början? Exempel Stefan Candefjord Hittad efter 5 namn Maximalt 7 namn samma som hela listan Namn hittat! Namn telefon Andersson Karl 5364 Baclund-Norberg Mia 1019 Bengtsson Fredri 2431 Bir Wolfgang 1965 Candefjord Stefan 2386 Carlson Johan 2517 Castano Miguel 2328

Telefonlista Vilen metod är bäst? Om vi börjar i mitten? Står namnet före...eller efter mitten? Exempel Stefan Candefjord Hittad efter 3 namn! Maximalt 3 namn Mycet bättre än 7! Namn telefon Andersson Karl 5364 Baclund-Norberg Mia 1019 Bengtsson Fredri 2431 Bir Wolfgang 1965 Candefjord Stefan 2386 Carlson Johan 2517 Castano Miguel 2328 Namn hittat! Den senare verar överlägsen......men! Den är ännu bättre än det ser ut! Vad händer om man fördubblar listans storle? Första metoden (söa från början): Dubbelt så lång tid (naturligtvis!) Andra metoden (dela på mitten): Längre tid än tidigare...men hur mycet? Större lista Tidsåtgång Börjar med Ding Limei OBS! Tillbaa till gamla fallet efter första jämförelsen! Totalt 4 namn!...istället för 14 Det var ett bra resultat! Om vi dubblar igen? => Ytterligare ett steg Namn telefon Andersson Karl 5364 Baclund-Norberg Mia 1019 Bengtsson Fredri 2431 Bir Wolfgang 1965 Candefjord Stefan 2386 Carlson Johan 2517 Castano Miguel 2328 Ding Limei 1788 Elotob Muslim 1594 Gustafsson Thomas 1323 Hallberg Josef 1177 Harlin Gösta 1141 Hedman Anna 3067 Johansson Anders 1907 Johansson Andreas 2334 Gamla listan...efter ett steg Första metoden (sö från början) Tidsåtgången öar lia fort som listans storle öar Dubbel längd=dubbel tidsåtgång Andra metoden (dela på mitten) Tidsåtgången öar endast onstant (med 1)......per fördubbling av listan Det blir billigare per namn... dvs behövs färre och färre jämförelser per namn......ju större listan är!

Tidsåtgång Andra metoden har Antal steg lägre omplexitet! För 4 miljarder namn (4000000000) Kolla alla: 4 miljarder namn Dela på mitten: 32 namn! (8 miljarder, nästan alla i världen => 33 namn ) Kolla alla Dela i två Antal namn Hur gic det till? Listan var sorterad Annars hade vi inte unnat söa så snabbt Man säger att vi har använt en effetiv representation av datat Ordna (representera) datamängd effetivt Mycet vitigt när man programmerar! om programmen hanterar stora datamängder och man vill ha snabba program (och det vill man J ) Slutsats Tid för linjärsöning Enelt exempel på effetiv algoritm Kallas binärsöning (den sämre allas linjärsöning) Effetiva algoritmer Mycet stora prestandavinster Väldigt många olia problem linande förbättringar...med effetiva algoritmer! Tiden för söning i lista av storle n [i värsta fall] Kalla tiden T(n) Vi ränar antalet jämförelser Vi inser: Vi utveclar: =... = = + T(n-) Vi vet att T(1)=1 (basfall!) När n-=1 <=> =n-1 : = + T(n-) = = 2 + T(n-2 ) = = 1+ T(n-1 ) = 1+ T(n-1 ) = n-1 + T(n-(n-1 )) = = n-1 + T( 1) = = n-1 + 1 = = n Vi gör alltså n st jämförelser i en lista av längd n

Tid för binärsöning Mergesort John von Neumann (1945) Tiden för söning i lista av storle n [i värsta fall] Kalla tiden T(n) Vi ränar antalet jämförelser Vi inser att 1+ T(n/ 2 ) Vi vet att T(1)=1 (basfall!) = 1+ T(n/ 2 ) = = 2 + T(n/ 4 ) = =... = = + T(n/ 2 ) Vi vill att n/ 2 = 1 n = 2 log n log n = Då får vi = log n +1 Vi gör alltså log n + 1 st jämförelser i en lista av längd n Väldigt mycet färre än n = log ( 2 = +T(n / 2 ) = = log n +T(1) = ) Vi delar listan i två delar...sen sätter vi samman delarna till en lista: 7 3 1 2 9 5 0 4 6 8 7 3 1 2 9 5 0 4 6 8...och sorterar varje del för sig... 1 2 3 7 9 0 4 5 6 8 1 2 3 7 9 0 4 5 6 8 0 1 2 3 4 5 6 7 8 9 Varför är Mergesort bra nu då? Mergesort analys Hur många jämförelser? = 2T(n/ 2 ) + n = = 2( 2T(n/ 4 ) + n / 2 ) + n = = 2 = 2 T(n/ 2 T(n/ 2 ) + n + n +... + n = ) + n o, så vi vet att 2 T(n/ 2 ) + n Basfallet är ju T(1)=1 Vi vill att n/ 2 =1 Känner vi igen! n/ 2 = 1 log n = Vi sätter in detta : = 2 T(n/ 2 = 2 logn T (1) + nlog n = = n + nlog n ) + n = Att sortera n tal tar alltså n + n log n jämförelser med Mergesort

Annan algoritm: ZelectionSort En jämförelse I princip SelectionSort (Ej in-place) Ta hela tiden bort det minsta och sätt sist i resultaten Exempel med spelort Enel analys: Att ta bort minsta ur tal tar -1 jämförelser Tän: Behövs bara 1 jämförelse för att ta det minsta av 2 tal Alltså, med n tal i början behövs (n-1)+(n-2)+...+3+2+1 Mergesort i ena ringhörnan "Söndra och härsa" Komplexitet: n + n log n O(n log n)" ZelectionSort i den andra "Ta upprepade gånger och i tur och ordning ut minsta varvarande." Komplexitet: n(n-1)/2 O(n 2 ) jämförelser, vilet är n (n-1) / 2. En jämförelse Maximum sum subsequence Mergesort i ena ringhörnan "Söndra och härsa" Komplexitet: n + n log n O(n log n)" ZelectionSort i den andra "Ta upprepade gånger och i tur och ordning ut minsta varvarande." Komplexitet: n(n-1)/2 O(n 2 ) Input 3mergeSort zelectionsort L m m/l z z/l z+m z/m l1 1000 0,010 9,54E*06 0,142 0,00014 0,151 14,849 l2 2000 0,018 8,75E*06 0,527 0,00026 0,544 30,101 l4 4000 0,030 7,42E*06 2,068 0,00052 2,098 69,729 l8 8000 0,060 7,51E*06 8,339 0,00104 8,400 138,820 l16 16000 0,115 7,21E*06 33,333 0,00208 33,449 288,964 l32 32000 0,257 8,02E*06 133,899 0,00418 134,156 521,897 l64 64000 0,570 8,91E*06 544,152 0,00850 544,722 954,123 Hitta största sammanhängande delsevens största = högst summa Exempel: -3 3-1 -1 4-2 1 Hur göra? Räna ut summan av alla möjliga delsevenser spara den största Gansa tidsrävande: Med n tal finns n(n-1) / 2 olia delsevenser som alla sa summeras... O(n 2 ) Tar i storlesordningen n 3 jämförelser(!) O(n 3 ) Finns smartare sätt!

Helt ort: Ett svårare problem... Hemuppgift - artiel Hitta de st. segment vars totalsumma är maximal! (vi bestämmer oss för ett visst ) För några år sedan ett öppet forsningsproblem Komplexitet? n [Fredri Bengtsson och Jingsen Chen, 2006] =2: -3 3-1 -1 4-2 1 3-1 3-2 Läs artiel: Communications of the ACM Volume 27 Issue 9, Sept. 1984 Programming pearls: algorithm design techniques Jon Bentley http://dl.acm.org/citation.cfm?id=381162 Länen fungerar (bara) inom LTU Från ett LTU-datornät t ex det trådlösa 5 + 6 = 11 Obs! Ett fel i artieln Läs fram t o m avsnittet Two Quadratic algorithms I det avsnittet besrivs två algoritmer som är snabbare (effetivare) än The cubic algorithm (Algorithm 1, sid. 865) Sriv en rapport med LaTeX på svensa och förlara med dina egna ord hur algoritmerna fungerar Börja med att introducera problemet och The Cubic Algorithm Vitigast: Vad är det för specifia (onreta) insiter som gör algoritmerna snabbare? Jämför med The Cubic Algorithm Förlara så att någon i lassen som inte läst artieln förstår Den 2:a algoritmen använder en "cumulative array", även allad Prefix sum: https://en.wiipedia.org/wii/prefix_sum Rad 5 i Algorithm 2: Sum := Sum + X[I] är fel Det sa stå: Sum := Sum + X[U] Lämna in i Canvas

Nu an ni allt om algoritmer! J Bra citat: Grubbla på detta hemma Till och med vatmästarn an detta J