10. Mängder och språk

Relevanta dokument
9. Predikatlogik och mängdlära

Alfabeten, strängar och språk. String

12. Relationer och funktioner

12. Relationer och funktioner

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

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

11. Reguljära uttryck och grammatiker

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

11. Reguljära uttryck och grammatiker

7, Diskreta strukturer

7, Diskreta strukturer

8. Naturlig härledning och predikatlogik

Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk

Tentamen i Objektorienterad modellering och diskreta strukturer

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.

Tentamen i Objektorienterad modellering och diskreta strukturer

Grammatik. BNF-grammatik

Tentamen i Objektorienterad modellering och diskreta strukturer

Kompletteringsmaterial. K2 Något om modeller, kompakthetssatsen

Mängder. 1 Mängder. Grunder i matematik och logik (2015) 1.1 Grundläggande begrepp. 1.2 Beskrivningar av mängder. Marco Kuhlmann

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

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

Föreläsning 14 Innehåll

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

K2 Något om modeller, kompakthetssatsen

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

Semantik och pragmatik

Mängder och kardinalitet

Övningshäfte 1: Logik och matematikens språk

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

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

Filosofisk logik Kapitel 15 (forts.) Robin Stenwall Lunds universitet

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Induktion och rekursion

Tentamen i Objektorienterad modellering och design Helsingborg

1 Föreläsning Implikationer, om och endast om

En introduktion till predikatlogik

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

Programmering A. Johan Eliasson

Tentamen Grundläggande programmering

Semantik och pragmatik (Serie 4)

Sanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.

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

Kapitel 1. betecknas detta antal med n(a). element i B; bet. A B. Den tomma mängden är enligt överenskommelsen en delmängd. lika; bet. A = B.

Material till kursen SF1679, Diskret matematik: Om urvalsaxiomet mm. Axiom som är ekvivalenta med urvalsaxiomet

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

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

Induktion och rekursion

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 7: Syntaxanalys

Grundläggande logik och modellteori

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Logik och bevisteknik lite extra teori

F4. programmeringsteknik och Matlab

Objektorienterad Programmering (TDDC77)

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

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

Övningshäfte 3: Funktioner och relationer

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

Algebra I, 1MA004. Lektionsplanering

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Semantik och pragmatik (serie 5)

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Information. Computer

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

MS-A0409 Grundkurs i diskret matematik I

MA2047 Algebra och diskret matematik

MS-A0409 Grundkurs i diskret matematik I

Mängdlära. Kapitel Mängder

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Semantik och pragmatik

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

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

Inlämningsuppgift MiniPlotter

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

TENTAMEN OOP

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

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

Föreläsning 3-4 Innehåll

Lite om bevis i matematiken

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

Interfacen Set och Map, hashtabeller

Föreläsningsanteckningar och övningar till logik mängdlära

Obligatorisk uppgift 5

Grundläggande logik och modellteori (5DV102)

TDDD78 Viktiga begrepp, del 2

FÖRELÄSNING 3 ANDERS MÄRAK LEFFLER IDA/HCS

Föreläsning 5. Deduktion

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

Transkript:

Objektorienterad modellering och diskreta strukturer 10. Mängder och språk Sven Gestegård Robertz Institutionen för datavetenskap, LTH 2013

Rekaputilation Vi har talat om satslogik, predikatlogik och härledning mängdlärans begrepp Vi kommer att använda predikatlogik när vi gör denitioner i mängdläran. och sedan studera de mängder som kallas språk. introducera laboration 3. Rekapitulation 10. Mängder och språk 2/40

Mängdlära Primitiva begrepp: mängd, element och tillhör. Notation: och {1, 3, 5}. Mängder av tal: N, Z, Q, R,... B = {F, T} Mängdlära 10. Mängder och språk 3/40

Kardinalitet Denition Om M är en ändlig mängd M = antalet element i mängden. Exempel {1, 3, 5} = 3 = 0 {1, 3, 1, 5} = 3 { } = 1 Mängdlära 10. Mängder och språk 4/40

Mängdbyggare Denition Om U är en mängd och P (x) är ett predikat, där x U så är M = {x U P (x)} den mängd som har egenskapen x. x M x U P (x) Detta åternns i programmeringsspråk som har List comprehension: att skapa en lista baserat på existerande listor. Exempel i Python: >>> M = [ x f o r x i n r a n g e ( 1 0 ) i f x % 2 == 0 ] >>> p r i n t M [ 0, 2, 4, 6, 8 ] >>> S = { v f o r v i n [ 1, 2, 3, 1, 5, 4, 6 ] i f v not i n [ 4, 5, 6 ] } >>> p r i n t S s e t ( [ 1, 2, 3 ] ) Mängdlära 10. Mängder och språk 5/40

Induktivt denierade mängder Vi kan deniera mängden av alla satslogiska uttryck, L, som den minsta mängd med följande egenskaper: Om x är ett variabelnamn så x L. Om P L så P L. Om P L och Q L så tillhör alla (P Q), (P Q) (P Q) och (P Q) också mängden L. Känner ni igen kompositmönstret? Expr 1 getvalue() : boolean 2 1 Not Variable - name : String - value : boolean And 1 getvalue() : boolean +getname() : String getvalue() : boolean +getvalue() : boolean Mängdlära 10. Mängder och språk 6/40

Delmängd Denition M 1 M 2 = m. m M1 m M 2 Sats (Transitivitet) Om A B och B C så är A C. Bevis. Antag att a A. Detta betyder att a är ett godtyckligt element i A, men att a är samma element i hela beviset. Vi skall visa att a C. Av denitionen på A B så följer att a B. Eftersom B C så gäller på samma sätt att a C. Mängdlära 10. Mängder och språk 7/40

Ett härledningsträd Satsen kan, enligt denitionen av skrivas { m. m A m B, m. m B m C} m. m A m C m. m A m B [ E ] m A m B [m A] [ E ] m B m C m. m B m C [ E ] m B m C [ E ] [ I ] m A m C [ I ] m. m A m C Notera att regeln I innebär att antagandet till vänster om pilen (m A) upphävs. Regeln betyder alltså att en härledning där antagandet P leder till Q ersätts med implikationen P Q och därefter används inte antagandet P längre. Mängdlära 10. Mängder och språk 8/40

Likhet för mängder Denition M 1 = M 2 = M1 M 2 M 2 M 1 Mängdlära 10. Mängder och språk 9/40

Mängdoperationer Denition (Union) M 1 M 2 = {x x M1 x M 2 }. Denition (Snitt) M 1 M 2 = {x x M1 x M 2 }. Denition (Relativt komplement, Dierens) M 1 M 2 = {x M1 x M 2 }. Denition (Absolut komplement) M = {x M}. (M = U M ) Mängdlära 10. Mängder och språk 10/40

Mängdoperationer och logiska konnektiv Räknelagarna i mängdläran är analoga med de i satslogiken B B B A A A A B A B (A B) (A B) Mängdlära 10. Mängder och språk 11/40

Potensmängd Potensmängden P(M) denieras som mängden av alla delmängder av M Denition P(M) = {S S M} Exempel P({1, 2}) = {, {1}, {2}, {1, 2}} Notera att P(M) och att M P(M) Mängdlära 10. Mängder och språk 12/40

Alternativ beteckning 2 M = P(M) Sats Om M är en ändlig mängd så är 2 M = 2 M. Mängdlära 10. Mängder och språk 13/40

Partitionering Denition En uppdelning av en mängd i disjunkta icketomma delmängder kallas för en partitionering. Det går att partitionera {1, 3, 5} på fem olika sätt: {{1}, {3}, {5}} {{1, 3}, {5}} {{1, 5}, {3}} {{3, 5}, {1}} {{1, 3, 5}} Mängdlära 10. Mängder och språk 14/40

Aktivitet Denition En uppdelning av en mängd i disjunkta icketomma delmängder kallas för en partitionering. Använd predikatlogik för att ge ett villkor för att {A 1, A 2,..., A n } är en partitionering av A. ( n i=1 ) A i = A ( ) i. j. i j A i A j = ( i.a i ) Mängdlära 10. Mängder och språk 15/40

Par Ett par (eng. pair) har två komponenter. Om komponenterna är a och b betecknar vi paret med (a, b). I matematiken är ordningen mellan komponenterna i ett par i regel signikant. (1, 2) och (2, 1) är olika par. Mängdlära 10. Mängder och språk 16/40

Likhet för par Denition (a 1, b 1 ) = (a 2, b 2 ) = (a 1 = a 2 ) (b 1 = b 2 ) Mängdlära 10. Mängder och språk 17/40

Par i Java public final class Pair { private A a; private B b; public boolean equals(object object) { if(!(object instanceof Pair)) { return false; } Pair other = (Pair) object; return a.equals(other.a) && b.equals(other.b); } } public int hashcode()... Mängdlära 10. Mängder och språk 18/40

Produktmängd Kartesisk produkt Denition M 1 M 2 = {(m1, m 2 ) m 1 M 1, m 2 M 2 } René Descartes, Cartesius (15961650) Mängdlära 10. Mängder och språk 19/40

Russels paradox Låt U vara mängden av alla mängder. Deniera M = {S U S S} Betrakta M / M M M Antagandet leder till motsägelsen M / M M M Mängdlära 10. Mängder och språk 20/40

Laboration 3 Givet: Klasser för en term: a x f(x) g(y, (f(x))) tostring collectvariables Att göra: t 1 [x\t 2 ] f(x)[x\g(x)] = f(g(x)) Term substitute(variable, Term) Laboration 3: Predikatlogik och substitution 10. Mängder och språk 21/40

Laboration 3 Att göra: Klasser för ett predikatlogiskt uttryck: n-ställiga predikat, P (x, f(y)) implikationer, e 1 e 2 allkvantieringar, x. e tostring Expr substitute(variable, Term) ( x. P (x, y))[x\g(z)] = ( x. P (x, y)) ( x. P (x, y))[y\g(z)] = ( x. P (x, g(z))) ( x. P (x, y))[y\g(x)] = ( v 0. P (v 0, g(x))) Laboration 3: Predikatlogik och substitution 10. Mängder och språk 22/40

Substitution i kvantieringar NB! Rätt i F08, fel i exempel i F09 Tre fall: 1. om v och x är samma variabel ( v. P )[x\t] = ( v. P ) Exempel Notera. Substitutionen ( x N. x > 0)[x\2] ger enligt ovan resultatet x N. x > 0 medan substitutionen (x > 0)[x\2] betyder Sätt in x = 2, d v s 2 > 0 Laboration 3: Predikatlogik och substitution 10. Mängder och språk 23/40

Term Term + collectvariables(set<variable>) : Set<Variable> Constant - name : String Variable - name : String + equals(object) : boolean + hashcode : int Function - name : String - termlist: TermList ArrayList<Variable> TermList - name : String + collectvariables(set<variable>) : Set<Variable> Laboration 3: Predikatlogik och substitution 10. Mängder och språk 24/40

Metoder (konstruerare) med godtyckligt antal parametrar public class TermList extends ArrayList<Term> { public TermList(Term... terms) { super(arrays.aslist(terms)); } } Variable x = new Variable("x"); Variable y = new Variable("y"); Variable z = new Variable("z"); TermList termlist = new TermList(x, y, z); Laboration 3: Predikatlogik och substitution 10. Mängder och språk 25/40

Laboration 3 Givet: Basklasser och testfall Att göra: Studera testfallen, och komplettera efter behov Lägg till funktionalitet för substitution (i paketet term) Implementera, och predikat (i paketet predicate) Förberedelse behövs! Laboration 3: Predikatlogik och substitution 10. Mängder och språk 26/40

Alfabeten, strängar och språk Ett alfabet är en ändlig icketom mängd vars element kallas symboler. En sträng på ett alfabet är en ändlig följd av symboler ur alfabetet. Språk 10. Mängder och språk 27/40

Sträng Denition Låt Σ vara ett alfabet. ɛ är en sträng på Σ. Om σ Σ och α är en sträng på Σ så är σα en sträng på Σ. Språk 10. Mängder och språk 28/40

String public interface String {} public class Empty implements String {} public class NonEmpty implements String { private char c; private String tail; } Språk 10. Mängder och språk 29/40

String public interface String { public int length(); public String concatenate{string other}; public String reverse{}; } Språk 10. Mängder och språk 30/40

Strängoperationer Denition (Längd) ɛ = 0 σα = 1 + α Denition (Konkatenering) ɛ α = α (σα) β = σ(α β) Språk 10. Mängder och språk 31/40

Reversering, prex, etc. α R (abc) R = cba. Om ω = α β γ, där α, β och γ är strängar kallar vi α för ett prex, γ ett sux och β en delsträng till ω. Språk 10. Mängder och språk 32/40

Potenser α n+1 α 0 = ɛ = α α n, n 0 Språk 10. Mängder och språk 33/40

Språk Med ett språk på ett alfabet menas en mängd strängar på alfabetet. Språk 10. Mängder och språk 34/40

Operationer L 1 \ L 2 = L1 L 2 = {ω L1 ω L 2 } L 1 L 2 = L1 L 2 = {u v u L1 v L 2 } L 0 L k+1 = {ɛ} = L L k L = L + k=0 L k = L L Språk 10. Mängder och språk 35/40

Ett reguljärt uttryck Ett språk {0} ({1} ({0} {1}) ) motsvarande reguljära uttryck 0 (1 (0 1) ) beskriver språket som innehåller alla binära tal utan onödiga inledande nollor {0, 1, 10, 11, 100,...} Språk 10. Mängder och språk 36/40

Reguljära uttryck Mängden av reguljära uttryck på alfabetet Σ denieras av Denition är ett reguljärt uttryck ɛ är ett reguljärt uttryck om σ Σ så är σ ett reguljärt uttryck om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck om α är ett reguljärt uttryck så är α ett reguljärt uttryck Språk 10. Mängder och språk 37/40

Exempel a (a b) (((a b) a) (b a) ) är reguljära uttryck på alfabetet {a, b}. Språk 10. Mängder och språk 38/40

Semantik Denition L[ ] L[ɛ] L[σ ] = = {ɛ} = {σ}, σ Σ L[α β ] L[α β ] L[α ] = L[α]L[β ] = L[α] L[β ] = (L[α]) Språk 10. Mängder och språk 39/40

Sammanfattning Vi har talat om mängdlära strängar språk reguljära uttryck Nästa föreläsning: Språk och grammatiker Vi kommer att studera reguljära uttryck och deras begränsningar introducera grammatiker för att beskriva mer komplexa språk Språk 10. Mängder och språk 40/40