330 likes | 491 Views
Algoritmer. Algoritmer. Ordet kommer från en persisk författare som kom från al’Khowârizmi (engelskans algorithm). Han skrev boken ’Kitab al jabr w’al-muqabala’. Händelsevis kommer ordet algebra härifrån…. Donald Knuths formulering.
E N D
Algoritmer • Ordet kommer från en persisk författare som kom från al’Khowârizmi (engelskans algorithm). Han skrev boken ’Kitab al jabr w’al-muqabala’. Händelsevis kommer ordet algebra härifrån…
Donald Knuths formulering • ”En ändlig uppsättning regler som bestämmer en följd av operationer som löser en specifik typ av uppgift, och som har följande fem kännetecken; • Ändlighet • Bestämdhet • Indata • Utdata • Effektivitet
Ändlighet (finiteness) • Algoritmen måste kunna garanteras bli färdig efter ett ändligt antal steg (oavsett vilka indata är). • Den tekniska termen är terminera.
Bestämdhet (definiteness) • Varje steg i algoritmen måste vara entydigt och precist definierad.
Indata (input) • En algoritm har noll eller fler indata, det vill säga värden som ges algoritmen innan den startas.
Utdata (output) • En algoritm har ett eller flera utdata, det vill säga värden som produceras av algoritmen.
Effektivitet (effectiveness) • Varje steg i algoritmen måste vara så elementärt att det i princip kan utföras exakt, och inom en ändlig tidsrymd, av en människa med papper och penna.
Euklides algoritm • Största gemensamma delaren till två positiva heltal (SGD).
Ändlighet • Måste vara möjligt att formellt bevisa att algoritmen terminerar för varje möjlig kombination av indata. • Matematiskt minskar vi värdet på n i euklides för att slutligen komma till 0.
Bestämdhet • Klara och entydiga aritmetiska operationer.
Indata • I detta fall 2 indata, m och n.
Utdata • Ett utdatum i detta fall, det sista värdet av m.
Effektivitet • I detta fall med heltalsdivision bör det inte vara något problem att utföra det med papper och penna inom en ändlig tidsrymd. • Detta rör en i viss mån idealiserad version av problemet.
Pseudokod • Ett datorprogram består oftast av en eller flera algoritmer. • Oftast använder man någon form av pseudokod för att beskriva funktionen innan man implementerar till valt programmeringsspråk. • Pseodokod är ett mellanting mellan naturligt språk och programkod.
Euklides algoritm i Java gcd(e, n) { while (e != 0) { r = n mod e; n = e; e = r; } return n; }
Beräkningsbarhet • Det finns en uppdelning av problem i beräkningsbara och icke beräkningsbara problem. • Av de beräkningsbara finns det dels hanterliga och dels ohanterliga.
Hanterligt • Kan man säga om det finns algoritmisk lösning där resursanspråken begränsas av polynomfunktioner av uppgiftens storlek n, för stora n. • Exempelvis...
Ohanterliga • Är de problem där man inte känner till en algoritm med polynomisk komplexitet. • Schemaläggning är ett exempel, Travelling Salesman (TSP) ett annat. • I många fall finns algoritmer som ger praktiskt användbara resultat.
Alan Turing • Förutspådde lagringskapaciteter i storleksordningen GigaByte år 2000 • Matematiker • Turingmaskiner, 1936 • Teoretisk beräkningsmaskin/dator
Turingmaskinen • Centralenhet med läs/skrivhuvud • Ett oändligt band med celler av fix längd. • Bandet motsvarar maskinens minne, samt in- och utmatningsenheter.
Turingmaskinen • Turing ville skapa en abstrakt modell av en mänsklig ’dator’ som arbetade med papper och penna för att lösa problem. • Han delade upp problemet i mindre och mindre delar till dess han kom fram till att:
Turings definition • Varje steg skulle bestå av att sudda ut en symbol på papperet som observerades av pennan och skriva en ny i dess ställe. • Beslutet av vilken symbol som skulle skrivas och vilken symbol som skulle observeras härnäst skulle bara bero på den symbol som observerades av pennan och det sinnestillstånd ’datorn’ befann sig i.
Vad gör den? • En Turingmaskin kan skapas för varje enskild algoritm som kan lösas av en dator. • En Turingmaskin terminerar inte nödvändigtvis. • Har givit upphov till:
Church-Turings tes • Allt som kan beräknas kan beräknas av någon Turingmaskin. • Every computer algorithm can be implemented as a Turing machine.
Maskinens delar • Ett oändligt band med celler av fix storlek. • Ett läs- och skrivhuvud • (En bandtransport) • Ett regelverk
Regelverket • Består av en fem-tupel • (S, S, d, s, H) S motsvarar mängden tillstånd maskinen kan befinna sig i. S motsvarar alfabetet (symboluppsättningen) som också innehåller startsymbolen w, blanksteg V men inte pilarna g eller f.
Regelverket fortsättning s Î S där s är starttillståndet och S mängden tillstånd. H Í S där H är mängden av halttillstånd d är transitionsfunktionen, eller omvandlingsreglerna
Algoritmer och problem • Titta på följande: • om x=1 så stoppa • låt x få värdet x-2 (x=x-2) • fortsätt med steg 1 Är detta en algoritm?
Exempel 2 • om x=1 så stoppa • om x är jämt så låt x få värdet x/2 annars låt x få värdet 3x + 1 • fortsätt med steg 1 Är detta en algoritm?
Terminering • Om vi backar till Knuths definition av en algoritm så innehöll den ett krav på terminering. • Detta fanns det krav på att kunna bevisa. • Kan man skapa en algoritm som kan avgöra om en annan algoritm terminerar?
NEJ • och det kan bevisas!
Haltproblemet • Win98