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

Relevanta dokument
9 Funktioner. Exempel. f(x) = x + 1 sqr(y) = y 2. x, om x < 0. abs(x) =

10. Mängder och språk

12. Relationer och funktioner

12. Relationer och funktioner

Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

9. Predikatlogik och mängdlära

7, Diskreta strukturer

11. Reguljära uttryck och grammatiker

Alfabeten, strängar och språk. String

7, Diskreta strukturer

Grammatik. BNF-grammatik

11. Reguljära uttryck och grammatiker

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

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i Objektorienterad modellering och diskreta strukturer

8. Naturlig härledning och predikatlogik

Sats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan.

PROV I MATEMATIK Automatateori och formella språk DV1 4p

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

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

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

Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck

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

Föreläsning 3-4 Innehåll

Föreläsning 5: Kardinalitet. Funktioners tillväxt

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

Typkonvertering. Java versus C

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

Tentamen i TDDC75 Diskreta strukturer

13. CHURCH S OCH GÖDELS SATSER. KORT ORIENTERING OM BERÄKNINGSBARHET, EFFEKTIV UPPRÄKNELIGHET OCH AVGÖRBARHET.

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

1.1. Fördjupning: Jämförelse av oändliga mängder

Information. Computer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Diskret matematik, lektion 2

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

Programmering A. Johan Eliasson

I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.

Kompletteringsmaterial. K2 Något om modeller, kompakthetssatsen

Turingmaskinen - en abstrakt datormodell

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Tentamen, EDAA20/EDA501 Programmering

Reguljära uttryck Grammatiker Rekursiv nedåkning Allmänna kontextfria grammatiker. Syntaxanalys. Douglas Wikström KTH Stockholm

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Tentamen i Objektorienterad modellering och diskreta strukturer

ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

Övningshäfte 3: Funktioner och relationer

Tentamen, EDAA10 Programmering i Java

Datastrukturer och algoritmer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Föreläsning 7: Syntaxanalys

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

DAT043 Objektorienterad Programmering

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Tentamen i Programmering

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Kurskod D0010E Datum Skrivtid 5tim

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

TATM79: Föreläsning 1 Notation, ekvationer, polynom och summor

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

K2 Något om modeller, kompakthetssatsen

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Tentamen i Algoritmer & Datastrukturer i Java

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

Laboration 1: Figurer i hierarki

Explorativ övning 4 ÄNDLIGT OCH OÄNDLIGT. Övning A

Föreläsning 9 Innehåll

public boolean containskey(string key) { return search(key, head)!= null; }

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Inlämningsuppgift MiniPlotter

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

TENTAMEN OOP

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 3 Jody Foo,

Föreläsning 5-6 Innehåll

Kontinuitet och gränsvärden

Datastrukturer och algoritmer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Föreläsning 7-8 Innehåll

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Malmö högskola 2007/2008 Teknik och samhälle

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Instuderingsfrågor, del D

Föreläsning 13 Innehåll

Föreläsning 9: Talteori

Transkript:

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

Rekaputilation Vi har talat om satslogik och härledning predikatlogik och substitution mängder och språk reguljära uttryck och grammatiker relationer och funktioner Vi kommer att tala om enkla, svåra och omöjliga problem en datormodell Turingmaskinen 13. Problem 2/37

Kardinalitet för oändliga mängder Uppräknelig mängd Definition En mängd M är uppräknelig om det finns en funktion f N M sådan att ran (f) = M. Det vill säga man kan räkna upp elementen i M så att varje element får ett unikt nummer ur N. Omöjliga problem 13. Problem 3/37

Aktivitet Visa att mängden av de hela talen, Z, är uppräknelig genom att konstruera en funktion i N Z som har hela Z som kodomän. f(n) = { n/2 om n är jämnt (n + 1)/2 om n är udda D v s f avbildar de naturliga talen på följden (0, 1, 1, 2, 2,...) Notera att N = Z trots att N Z, vilket är möjligt då de är oändliga mängder Omöjliga problem 13. Problem 4/37

Icke-uppräkneliga mängder Sats Det finns oändliga mängder som inte är uppräkneliga Omöjliga problem 13. Problem 5/37

Cantors diagonalbevis (I) (Cantor, 1891) Sats Låt T vara mängden av alla oändliga binära följder För varje uppräkning s 1, s 2,..., s n,... ur T finns en följd s T som inte ingår i uppräkningen. Bevis. Givet en uppräkning s 1, s 2,..., s n,... ur T, konstruera en följd s så att symbol n är komplementet till symbol n i s n. Då är i. s s i eftersom s och s i skiljer sig i element i. Omöjliga problem 13. Problem 6/37

Exempel: s 0 = (0, 0, 0, 0, 0, 0, 0,...) s 1 = (1, 1, 1, 1, 1, 1, 1,...) s 2 = (0, 1, 0, 1, 0, 1, 0...) s 4 = (1, 0, 1, 0, 1, 0, 1...) s 4 = (1, 1, 0, 0, 1, 1, 0...) s 5 = (0, 0, 1, 1, 0, 0, 1...) s 6 = (0, 0, 1, 1, 0, 1, 1...)... s = (1, 0, 1, 1, 0, 1, 0,...) Omöjliga problem 13. Problem 7/37

Cantors diagonalbevis (II) Sats Det finns oändliga mängder som inte är uppräkneliga. Bevis. Låt T vara mängden av alla oändliga binära strängar Antag att T är uppräknelig. Då kan alla dess element räknas upp: s 1, s 2,..., s n,... Men, enligt föregående sats, finns en sträng s som inte ingår i uppräkningen. Motsägelse. Alltså är T inte uppräknelig. Omöjliga problem 13. Problem 8/37

Beräkningsbara funktioner Går det att implementera alla funktioner i N N i Java? Hur många Java-metoder av typen BigInteger m(biginteger) finns det? Kommer mängden metoder att innehålla alla funktioner N N? Sats {f : N N} > {Java metoder} Bevis-skiss (jfr Cantors diagonalbevis). Låt f i (x) vara resultatet av metod nr i och g(x) = f x (x) + 1 Då är g(x) N N Men ingen av metoderna i uppräkningen kommer att beräkna g(x) eftersom varje metod kommer att ge ett annat värde än g(x) (åtminstone) för parametern i. Omöjliga problem 13. Problem 9/37

Uppräknelighet Mängden av Java-metoder är uppräknelig. Mängden av funktioner i N N är inte uppräknelig. Omöjliga problem 13. Problem 10/37

Hur många funktioner N N finns det? En annan variant på diagonalbeviset {f : N {0, 1} } {f : N N} Definiera, för varje delmängd X av N funktionen f(x) = { 1 om x X 0 om x / X Mängden delmängder av N är P(N). Alltså är {f : N {0, 1}} = P(N) Men P(N) > N och därmed är mängden funktioner N N ej uppräknelig. Omöjliga problem 13. Problem 11/37

Uppräknelighet Mängden av Java-metoder är uppräknelig. Mängden av funktioner i N N är inte uppräknelig. Det går alltså att konstruera funktioner N N som det inte går att skriva ett program för Finns det några intressanta problem som inte går att lösa med ett program? Omöjliga problem 13. Problem 12/37

Terminerar metoden för alla värden på x? Collatz, 3x + 1 public int f(int x) { int count = 0; while (x>1) { count++; if (x%2==0) { x = x/2; } else { x = 3*x+1; } } return count; } Exempel: följden som börjar med x = 27 Man vet inte om metoden terminerar för alla x. Test har visat att den gör det för alla n 19 2 58 Omöjliga problem 13. Problem 13/37

Haltproblemet Eng: The halting problem Givet en funktion och indata (parametrar) till denna, kommer funktionen att terminera? Omöjliga problem 13. Problem 14/37

Representation av en metod public class Method { private String name; private List<Parameter> parameters; private Type returntype; private Statement body; \\ omissions } Omöjliga problem 13. Problem 15/37

Haltproblemet Låt Method vara en klass som representerar en metod, och vars tostring-metod returnerar en källkoden till metoden. Antag att det går att implementera public boolean terminates(method method, String data) så att terminates returnerar true om method terminerar med data som parameter och false om den inte gör det. Omöjliga problem 13. Problem 16/37

Kommer följande metod att terminera? Låt Method testmethod vara representationen av följande program: public void loop(method method) { if (terminates(method, method.tostring()) { while(true) {}; } } Kommer anropet loop(testmethod) att terminera? Båda svaren leder till en motsägelse. Omöjliga problem 13. Problem 17/37

Två olösliga problem Det är inte möjligt, i det generella fallet, att skriva ett program som avgör om en kontextfri grammatik är entydig Exempel på (risk för) tvetydig grammatik: från tidigare föreläsning: aritmetiska uttryck från programspråk: if A then if B then X else Y bevisar att ett (godtyckligt) program är korrekt Omöjliga problem 13. Problem 18/37

Handelsresandepoblemet Antag att man vill planera resrutten för en handelsresande som skall besöka 30 företag så att resvägen blir så kort som möjligt. Som indata till problemet behöver man avstånden mellan alla par av företag, dvs en matris int distance[][] = new int[30][30]; Det enklaste sättet att lösa problemet är att testa alla möjliga rutter och välja den som är kortast. Antalet rutter är 30! = 265252859812191058636308480000000. Så även om man kan testa en rutt på en nanosekund så kommer det att ta 8411113 miljarder år. Datorn kommer säkert att sluta fungera långt tidigare. Svåra problem 13. Problem 19/37

Definition Ett beslutsproblem tillhör P om det finns ett polynom p(n) sådant att en Turingmaskin kan lösa problemet för givna indata på en tid som är mindre än p(n) där n är längden på indata. Svåra problem 13. Problem 20/37

Turing Alan Turing, 1912-1954 matematik, logik, datavetenskap, kryptoanalys Turingmaskinen, datormodell Turingtest, avgör om ett program har intelligens Enigma, kryptoanalys Automatic Computing Engine, dator med program i minnet Svåra problem : Turingmaskiner 13. Problem 21/37

En Turing-maskin q i 1 q i q i+1 q i σ j (q, δ) state symbol next......... Alfabet Σ där L, R, $, / Σ Remsalfabet Σ T = {σ σ (Σ {$, })} Tillstånd Q = {s, h, q 0,..., q n } Operationer {δ δ {L, R} Σ T } $ σ Svåra problem : Turingmaskiner 13. Problem 22/37

Exempel En enkel Turingmaskin, E för erase, gör alla symboler till från markeringen $, där läs/skrivhuvudet startar, och fram till första. Vi antar att Σ = {0, 1}. Låt Q = {s, h, q 1, q 2 } och övergångsfunktionen T enligt tabellen: q σ T (q, σ) s $ (q 1, R) q 1 0 (q 2, ) q 1 1 (q 2, ) q 2 (q 1, R) q 1 (h, ) Tillståndsmaskin för turingmaskinen E: start s $/R q 1 / h /R 0/ 1/ q 2 Svåra problem : Turingmaskiner 13. Problem 23/37

Exempel En enkel Turingmaskin, med Σ = {x, y} och Q = {s, q 1, q 2, h}, som byter alla x mot y tills första, kan ha T q σ T (q, σ) s $ (q 1, R) q 1 x (q 2,y) q 1 y (q 2,y) q 2 y (q 1, R) q 1 (h, ) Svåra problem : Turingmaskiner 13. Problem 24/37

Ickedeterministisk Turingmaskin En ickedeterminstisk Turingmaskin kan i varje exekveringssteg välja mellan ett antal olika konfigurationer. Nästa tillstånd bestäms av en relation och inte en funktion. En sådan maskin säges lösa ett problem på tiden T om det finns någon exekvering som gör detta. Maskinen kan gissa rätt i varje val alternativt göra alla möjliga exekveringar parallellt. En kvantdator skulle vara bra att ha. Finns det sådana? Svåra problem : Turingmaskiner 13. Problem 25/37

NPC NP-kompletta problem är de svåraste problemen i NP. Om ett av dem kan lösas på polynomtid så är P=NP. Många kombinatoriska problem tillhör NPC. Givet en mängd av hela tal. Finns det någon icketom delmängd så att summan av alla element är 0. För mängden { 7, 3, 2, 5, 8} är svaret ja. Svåra problem : Klassen NP 13. Problem 26/37

Förslag till examensarbeten Skriv ett program som planerar leveranserna till varuhusen så att de totala transporterna blir så korta som möjligt. Skriv ett program som kontrollerar att programvaran i våra produkter är korrekt. Svåra problem : Klassen NP 13. Problem 27/37

Diskreta strukturer Förstå, konstruera och manipulera satslogiska uttryck predikatlogiska uttryck mängduttryck språk reguljära uttryck grammatiker relationer funktioner Sammanfattning och exempel från extentor 13. Problem 28/37

Diskreta strukturer Kunna utföra naturlig härledning substitution härledning med grammatik syntaxanalys Sammanfattning och exempel från extentor 13. Problem 29/37

Tentamen 12-08-24: 4a Det reguljära uttrycket 0 (10 + ) (1 ɛ) beskriver ett språk på alfabetet {0, 1}. Vilka av följande strängar tillhör språket? 01100 01010 ɛ 1001100 Svar: 01010 och ɛ Sammanfattning och exempel från extentor 13. Problem 30/37

Tentamen 12-08-24: 4b Ange alla strängar med längden 4 som tillhör det språk som generaras av grammatiken S ::= SS S ::= asa bsb ɛ Svar: aaaa aabb bbaa bbbb abba baab Sammanfattning och exempel från extentor 13. Problem 31/37

Tentamen 12-08-24: 5a Visa att {p q, q} p genom att komplettera följande härledning. p q q Svar: p q [p] [ E ] q q [ I ] p Sammanfattning och exempel från extentor 13. Problem 32/37

Tentamen 12-08-24: 5b Vi definierar två predikat på mängden av naturliga tal p(x, y) = q(x, y) = x = y 2 x är delbart med y Konstruera med hjälp av dessa ett predikatlogiskt uttryck som säger att ett godtyckligt tal är delbart med 4 om det är jämt och kvadraten på ett tal. Svar: x. p(x, 2) ( y. q(x, y)) p(x, 4) Sammanfattning och exempel från extentor 13. Problem 33/37

Tentamen 11-10-21: 5b f ρ = {(0, 1), (1, 1), (1, 2)} är en relation på {0, 1, 2}. Beräkna ρ 0, ρ 2 och ρ. Svar: ρ 0 = {(0, 0), (1, 1), (2, 2)} ρ 2 = {(0, 1), (0, 2), (1, 1), (1, 2)} ρ = {(0, 0), (1, 1), (2, 2), (0, 1), (0, 2), (1, 1), (1, 2)} Sammanfattning och exempel från extentor 13. Problem 34/37

Tentamen 09-10-22: 5a Låt F (x, y) betyda att x är far till y, M(x, y) att x är mor till y och E(x, y) att x och y är samma person. Konstruera ett predikat som är sant precis då x och y är syskon. Två personer är syskon om de har samma föräldrar men är olika personer. Syskon(x, y) = f. m. F (f, x) F (f, y) M(m, x) M(m, y) E(x, y) Sammanfattning och exempel från extentor 13. Problem 35/37

Tentamen 08-10-23: 5b Ge ett exempel på när e[x\e 1 ][y\e 2 ], där e, e 1 och e 2 är aritmetiska uttryck, inte är lika med e[y\e 2 ][x\e 1 ]. Till exempel: e = x = y e 1 e 2 = z Sammanfattning och exempel från extentor 13. Problem 36/37

Tack för mig Uppsamlingsheat för laborationer - Efter tentan (och omtentan), för godkända - Tid och former meddelas senare Lycka till på tentan. Frågor? Sammanfattning och exempel från extentor 13. Problem 37/37