COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

Relevanta dokument
Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Frågan om P=NP? Är P=NP? Bakgrund. "Snabb lösning"?!

Föreläsning 8: Intro till Komplexitetsteori

Föreläsning 9: NP-fullständighet

Algoritmteori - effektivitet

Föreläsning 11. Giriga algoritmer

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Datorprogram, algoritmer och Turing-maskiner

Datastrukturer och algoritmer

Algoritmer, datastrukturer och komplexitet

Datastrukturer och algoritmer

Algoritmer, datastrukturer och komplexitet

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

Föreläsning 7+8: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Föreläsning 8+9: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

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

Algoritmer, datastrukturer och komplexitet

Tommy Färnqvist, IDA, Linköpings universitet. 2 Strukturer Domäner Tolkningar... 3

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Grundläggande logik och modellteori

Föreläsning 11. Giriga algoritmer

7, Diskreta strukturer

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Formell logik Kapitel 5 och 6. Robin Stenwall Lunds universitet

Föreläsning 5. Deduktion

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Wittgenstein for dummies Eller hur vi gör det obegripliga begripligt. Västerås 15 februari 2017

Tentamen i Matematik 2: M0030M.

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

1. (3p) Bestäm den minsta positiva resten vid division av talet med talet 31.

Logik: sanning, konsekvens, bevis

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Algoritmer, datastrukturer och komplexitet

Föreläsning 3-4 Innehåll

Språket Python - Del 1 Grundkurs i programmering med Python

Imperativ programmering

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Filosofisk Logik (FTEA21:4) föreläsningsanteckningar/kompendium. v. 2.0, den 29/ III. Metalogik 17-19

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Algoritmer och Komplexitet ht 08. Övning 6. NP-problem

JavaScript del 3 If, Operatorer och Confirm

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

kl Tentaupplägg

Formell logik Föreläsning 1. Robin Stenwall

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

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?

NP-fullständighetsbevis

PCP-satsen på kombinatoriskt manér

Webbregistrering pa kurs och termin

Beräkningsvetenskap introduktion. Beräkningsvetenskap I

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Kurskod: TAIU06 MATEMATISK STATISTIK Provkod: TENA 17 August 2015, 8:00-12:00. English Version

Pseudokod Analys av algoritmer Rekursiva algoritmer

Laboration: Whitebox- och blackboxtesting

Introduk+on +ll JavaScript if- sats, funk+oner, bilder

Om semantisk följd och bevis

7, Diskreta strukturer

Pre-Test 1: M0030M - Linear Algebra.

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

Föreläsning 6: Introduktion av listor

TANA17 Matematiska beräkningar med Matlab

Robin Stenwall Lunds universitet

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Webbreg öppen: 26/ /

Tentamen: Programutveckling ht 2015

Programkonstruktion och Datastrukturer

HUME HANDOUT 1. Han erbjuder två argument för denna tes. Vi kan kalla dem "motivationsargumentet" respektive "representationsargumentet.

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Småprat Small talk (stressed vowels are underlined)

Tentamen i Matematik 2: M0030M.

Matematikens Element. Vad är matematik. Är detta matematik? Anders Fällström Institutionen för matematik och matematisk statistik Umeå universitet

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Beijer Electronics AB 2000, MA00336A,

ATT MÄTA FRAMGÅNG I MATEMATIKPROJEKT MARTIN GRANDER MALMÖ HÖGSKOLA

Isometries of the plane

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

CE_O3. Nios II. Inför lab nios2time

Moralisk rela+vism. moraliska omdömen u2rycker trosföreställningar Kan vara bokstavligen sanna Sanningsvärde beroende av våra uppfa2ningar

En kedja av koder. Isak Lyckberg Peder Skrivares skola, Varberg. 23 april 2009

TDP015: Lektion 5 - Svar

D. x 2 + y 2 ; E. Stockholm ligger i Sverige; F. Månen är en gul ost; G. 3 2 = 6; H. x 2 + y 2 = r 2.

Exempel på akademiskt skrivande? Akademiskt skrivande och tänkande. Eller detta. Fler exempel.. Så kan det bli. Föredömen?

Formell logik Kapitel 1 och 2. Robin Stenwall Lunds universitet

Mekanismer. (implementation)

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Matematikens grundvalar och programmering av datorer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

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

Transkript:

COMPUTABILITY BERÄKNINGSBARHET Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall Den centrala frågan: givet ett problem, kan det ha en algoritmisk lösning? Every definite mathematical problem must necessarily be susceptible of an exact settlement either in the form of an actual answer to the question asked, or by the proof of the impossibility of its solution and therewith the necessary failure of all attempts [...] one of the things that attracts us most when we apply ourselves to a mathematical problem is precisely that within us we always hear the call: here is the problem, search for the solution; you can find it by pure thought, for in mathematics there is nothing which cannot be known. Hade Hilbert rätt? David Hilbert (1862-1943) Hilberts mål: att utveckla ett formellt matematiskt system där man exakt kunde formulera alla problem i termer av satser som antingen är sanna eller falska. Att hitta en algoritm, som given en av dessa satser skulle bestämma om satsen var sann eller falsk (Entscheidungsproblem). Exakt formulerad sats Hilberts algoritm sant falskt Introduktion till datateknik/cs4, A. Soini 1

Matematisk forskning på 1930-talet före de första datorerna! - har visat att Entscheidungsproblemet inte är beräkningsbart (computable). Dvs., ingen sådan algoritm som Hilbert ville utveckla existerar eller kan existera. Church-Turing tes: 1)Alla (vettiga) definitioner av 'algoritm' är ekvivalenta. 2)Alla (vettiga) definitioner av algoritm som någon någonsin kommer att framföra, kommer att visa sig vara ekvivalenta med de redan kända definitionerna. Alla datorer är ekvivalenta. Om man kan exekvera en algoritm på en dator, så kan den exekveras på vilken dator som helst. Alla datorer kan simulera varandra. (Universality). Tesen är allmänt accepterad ingen har kommit med motbevis. Ett exempel på ett oberäkningsbart problem (ingen algoritm existerar eller kan existera) the halting problem: Eviga loopar är tråkiga. Tänk så praktiskt det skulle vara, om vi kunde skriva ett testprogram, halttester, som testar om ett givet program P kan gå i en evig loop. När vi nu vill testa ett nytt program, ger vi programmet P med testdata D som input till halttester: P D halttester(p,d) skriv 'OK' (P(D) stannar) skriv 'BAD' (P(D) loopar evigt) och stanna och stanna. Introduktion till datateknik/cs4, A. Soini 2

Halttester själv måste alltså stanna så att vi får vettiga resultat utav det. Tänk nu, att vi vill använda själva programkoden P som testdata för P (det kan verka suspekt, men program som opererar på andra program eller t o m sig själva är inte alls ovanliga). Vi vill alltså veta, om P stannar med input P: P halttester(p,p) P(P) stannar P(P) stannar inte skriv 'OK' och stanna skriv 'BAD' och stanna Detta nya program som testar P med sin egen kod kan vi kalla newhalttester. Koden för den blir enkel: program newhalttester(p) {anrop till} halttester(p,p); Med dessa två trevliga testprogram kan vi nu konstruera ett till: program funny(p) if newhalttester(p) skriver 'BAD' then halt else loop forever; Funny gör alltså inte så mycket vettigt; om programmet P är ok, så går funny i en evig loop, men om P har en evig loop, så stannar funny: Introduktion till datateknik/cs4, A. Soini 3

P Funny: stannar P(P)? Ja gå i en evig loop Nej stanna Detta var alltså funny(p) funny med indata P. Som sista steg vill vi testa vad som händer, om vi matar koden för själva funny till funny, alltså funny(funny): funny funny(funny) stannar det? Om det testade programmet stannar, ska ju funny loopa evigt. Och om det testade programmet innehåller en evig loop, så ska funny stanna. Så... Ja och loopa evigt! Nej och stanna! Om funny alltså stannar så loopar det för evigt. Och om det inte stannar så Introduktion till datateknik/cs4, A. Soini 4

stannar det. Vi har kommit fram till en logisk omöjlighet alltså måste vi ha ett fel i premisserna. Men det ena enda vi antagit är att programmet halttester existerar... Således: med bevismetoden reductio ad absurdum har vi bevisat att halttester inte kan existera. Antagandet av dess existens leder till absurditeter. Ett annat omöjligt problem är ex. en algoritm som skulle testa om två program, P1 och P2, alltid fungerar på exakt samma sätt. Det går att bevisa att vi inte kan skriva ett sådant testprogram heller. Introduktion till datateknik/cs4, A. Soini 5

Infeasible problems väldigt opraktiska problem: Om vi lämnar de problem som inte kan ha en algoritmisk lösning, och koncentrerar oss till dem som har en sådan, måste vi dock konstatera att en stor del av dessa lösningar inte är till någon nytta. De kan vara korta, enkla och eleganta, men de kräver astronomiska tider för att exekvera. De tillhör effektivitetsklassen O(2 n ) eller ett konstant c upphöjt till n. Så fort n (antalet dataenheter att analysera) hamnar i exponentposition har vi alltså problem; så fort n inte längre är trivialt litet, blir exekveringstiden astronomisk. Bin-packing problem: Vi har ett antal lastbilar med maximumkapacitet w kg, och en hel hög olika tunga paket som borde lastas på bilarna. Frågan är: kan vi klara av att transportera alla paketen med T stycken bilar? 3 3 4 5 8 5 T = 2 w = 14 ton Som du ser, borde nog kapaciteten räcka till. Men hur ska bilarna lastas? Vilken algoritm ska man tillämpa? Hur skulle man komma fram till en allmän lösning? Introduktion till datateknik/cs4, A. Soini 6

Largest crate first skulle ge den första bilen 8+5 ton, men de resterande småpaketen skulle väga tillsammans 3+3+4+5=15 ton, ett för mycket. 3+3+8 4+5+5 När antalet kollin och bilar är så här litet är det inget problem att beräkna alla tänkbara permutationer, och testa vilka som passar. Annat blir det med större antal bil och kollin som ska transporteras. Det existerar ingen polynomiell algoritm som skulle lösa frågan. Den stora teoretiska frågan är om det överhuvudtaget kan existera en sådan. Därom strida de lärda... Introduktion till datateknik/cs4, A. Soini 7

Ett annat opraktiskt problem - Traveling salesman: Vi har en handelsresande som borde besöka ett antal städer. Givet en karta med N städer, är det möjligt att besöka dem alla exakt en gång, inom en viss kilometerbegränsning? Ett relaterat problem är den hamiltonska cykeln: är det överhuvudtaget möjligt att besöka varje stad exakt en gång, givet en karta? Inga flygresor är tillåtna... Inget av dessa problem har en polynomiellt bunden lösning. Men vi vet inte om de kan ha en... Hur skulle du gå till väga för att lösa problemet? Introduktion till datateknik/cs4, A. Soini 8

Problemen vi tittade på ovan som saknar polynomiellt bundna algoritmer (dvs. sådana där n hoppar ner från exponentpositionen) hör till en specialklass som kallas NP-kompletta. NP-kompletta problem har en trevlig egenskap gemensamt: om vi på ett eller annat sätt hittar en lösning som fungerar, då finns det en polynomiell, snabb algoritm som kan verifiera att lösningen i fråga är korrekt. Tyvärr hjälper denna algoritm oss inte att finna nya lösningar... Stephen Cook (1971): Om man finner en polynomiellt bunden lösning till ett av problemen i mängden av de NP-kompletta dito, då får man en lösning till alla problemen i denna mängd. Återigen, ingen har ännu kommit med denna lösning. Men, å andra sidan, ingen har lyckats bevisa att en sådan algoritm inte kan existera. Introduktion till datateknik/cs4, A. Soini 9