1 / 20

Föreläsning 4 Algoritmer

Föreläsning 4 Algoritmer. Vad är algoritm?. En algoritm är en begränsad uppsättning väldefinierade instruktioner för att lösa en uppgift Kännetecken: Indata, lista I Utdata, lista U Det brukar finns flera sätt att lösa ett problem  flera algoritmer  effektivitet? Effektivitet:

cher
Download Presentation

Föreläsning 4 Algoritmer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 4Algoritmer 729G04

  2. Vad är algoritm? • En algoritm är en begränsad uppsättning väldefinierade instruktioner för att lösa en uppgift Kännetecken: • Indata, lista I • Utdata, lista U Det brukar finns flera sätt att lösa ett problem  flera algoritmer  effektivitet? Effektivitet: • Eller som löser problemet på kortast tid. • Eller som löser problemet med minst resurser. • eller som är minst komplicerad. 729G04

  3. Flödesdiagram Symboler: • Start och slut (ovaler) • Flödesriktning (pilar) • Instruktioner (rektangel) • Villkor (romber) • Indata,utdata (parallellogram) (se bilden) I dagsläget: pseudokod istället 729G04

  4. Avbuggning • För att hitta fel i programmet eller få insikt i programmet skrivet av ngn annan: • Använd något indata • Kör algoritmen steg-för-steg • Dokumentera flödesriktning och värden på viktiga parametrar • Jämför med förväntad utdata Exempel: Avbugga detta power(2,4) (hitta fel!) • Function power(x,p) • x0=x • For i=1 to p • x0=x0*x • End • Return x0 729G04

  5. Vanliga algoritmer • Sökning • Linjär sökning • Binär sökning • Sortering • Bubblelsortering (bubble sort) • Urvalssortering (selection sort) • Insättningssortering (insertion sort) • Mergesort • Quicksort • Heap sort • Binärträdssökning 729G04

  6. Komplexitet • Varför olika algoritmer • Ibland historiskt, algoritmer blir snabbare • Passar bäst för olika typer av data (kompromiss minne -snabbhet) Komplexitet: • Sämsta fall (Worstcase) • Normalfall (Averagecase) • Undre gräns(Lowerbound) 729G04

  7. Komplexitet Bestäms med hjälp av indatastorlek n. DefAlgoritmen har komplexiteten O(g(n)) om antalet elementära (numeriska) operationer T : |T|≤C|g(n)| Typiska g(n)=np, log(n) , 2n Exempel: Komplexiteten på power(x,p)-? 729G04

  8. Linjär sökning • Söker efter en nyckel i en sekvens, ett element i taget • Indata: nyckel x och sekvens X • Utdata: nyckelns position i sekvensen • Ide: jämför x med Xi, i=1,2,…n 729G04

  9. Linjär sökning - pseudokod • Functionlinear_search(x, X): • pos = 1 • while pos <= len (X) and X[pos] != x • pos = pos + 1 • end • ifpos<= len(X) • returnpos • else • return -1 729G04

  10. Linjär sökning Övning: • Rita flödesdiagram • Avbugga för • x=3, X=(1,3,4) • x=5, X=(1,3,4) • Komplexiteten • Sämsta fall O(n) • Normalfall O(n) • Undre gräns O(1) 729G04

  11. Binär sökning • Söker efter en nyckel i en ordnad sekvens • Sekvensen man söker i halveras varje gång • Indata : nyckel och sorterad sekvens • Utdata: nyckelns position i sekvensen 729G04

  12. Binär sökning Övning: • Avbugga Sekvens= (1 4 6 9 13 17 21 29 47) Nyckel=21 • Komplexitet: • Sämsta O(log(n)) • Undre gräns O(1) 729G04

  13. Bubbelsort • Gör parvisa jämförelser och byter plats på element som är i fel ordning • Indata: Osorterad sekvens • Utdata: Sorterad sekvens • Iden: Mindre element flyttar till början av listan (jämf: bubblar i vattnet) 729G04

  14. Bubbelsort Functionbubble_sort(A): n = length(A) for j =1 to n for i =1 to n-1 if A[i]>A[i+1] swap(A,i,i+1) end end return A functionswap(seq, i, j): element = seq[i] seq[i] = seq[j] seq[j] = element 729G04

  15. Bubbelsort • Exempel: Bank A i Indien planerar avskeda 20 % anställda i försäkringsavdelningen. Kriteriet: antalet antaletsålda försäkringar per år. • föreslå strategin • Använd bubbel sort för datamängden: 729G04

  16. Bubbelsort • Komplexitet • Sämsta fall O(n2) • Normalfall O(n2) • Undre gräns O(n) • Sämre än alla andra sorteringsalgoritmer. 729G04

  17. Insättningssort • Indata: Osorterad sekvens • Utdata: Sorterad sekvens • Iden: Få sorterad sekvens av längd i igenom att sätta in element i i den sorterade sekvensen av längd i-1 Exempel: spelkort 729G04

  18. Insättningssort • Procedure insertionsort(A) • for j =2 to length(A) • key = A[j] • i= j - 1 • while i > 0 and A [ i ] > key • A[ i +1 ] = A[ i ] • i = i -1 • end • A [i +1] = key • End Exempel: SorteraA=(4 6 1 19) (avbugga..) 729G04

  19. Insättningssort Egenskaper • Enkelt att implementera • Effektiv för små mängder • Bra att använda när listan är nästan ordnad • I praktiken effektivare än bubbelsort • Online, dvs. Enkel att använda om man får nya data • Man kan använda strukturen ”List” för att minska antalet byten • Komplexitet • Sämsta fall O(n2) • Normalfall O(n2) • Undre gräns O(n) 729G04

  20. Vad ska jag läsa hemma? • Kursbok, s. 56-57 • Wikipedia • Utskrifter 729G04

More Related