21.11.2013 Views

Diskreta strukturer –¨Ovning vecka 6 - Lunds Tekniska Högskola

Diskreta strukturer –¨Ovning vecka 6 - Lunds Tekniska Högskola

Diskreta strukturer –¨Ovning vecka 6 - Lunds Tekniska Högskola

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Lunds</strong> <strong>Tekniska</strong> <strong>Högskola</strong><br />

Datavetenskap<br />

Lennart Andersson<br />

Övning<br />

EDAF10<br />

2012-10-04<br />

<strong>Diskreta</strong> <strong>strukturer</strong> – Övning <strong>vecka</strong> 6<br />

1 a. Förenkla (∀x.∃y.P (x, z))[z\g(x, y)].<br />

b. Förenkla (∀x.∃y.P (z, y))[z\y][y\z].<br />

c. Man kan visa att e[x\f][x\g] = e[x\f[x\g]] för alla aritmetiska uttryck e, f och g.<br />

Kontrollera att detta stämmer när e △ = x · y, f △ = x + 1 och g △ = 2 · x.<br />

2 a. Ange potensmängden för mängden {1} och dess kardinalitet.<br />

b. Ange potensmängden för mängden {∅} och dess kardinalitet.<br />

c. Ange ett element i P(P({0, 1})) med kardinaliteten 2.<br />

3 a. Bestäm alla partioneringar av mängden {a, b}.<br />

b. Bestäm alla partioneringar av mängden {a, b, c}.<br />

c. Hur många olika partioneringar av mängden {a, b, c, d} finns det? Försök beräkna<br />

detta utan att skriva upp alla partioneringar.<br />

d. Bestäm alla partioneringar av mängden ∅.<br />

4 Antag att A och B är ändliga mängder.<br />

a. Ange ett samband mellan |A ∪ B|, |A ∩ B|, |A| och |B|.<br />

b. Ange ett liknande samband där |A − B| ingår.<br />

c. Ange ett liknande samband där |P(A × B)| ingår.<br />

5 a. En operator ⋆ är kommutativ om a ⋆ b = b ⋆ a, associativ om (a ⋆ b) ⋆ c = a ⋆ (b ⋆ c) och<br />

idempotent om a ⋆ a = a för alla a, b och c. Är operatorn för att konkatenera språk,<br />

◦, kommutativ, associativ eller idempotent?<br />

b. Är L ⋆ och (L ⋆ ) ⋆ lika eller olika?<br />

c. Ge ett exempel på ett språk där L + = L ∗ .<br />

6 Konstruera reguljära uttryck som beskriver språket av alla strängar på {0, 1} som<br />

a. har 11 som ett prefix eller suffix.<br />

b. har 11 som en delsträng.<br />

c. har ett jämnt antal symboler och varannan symbol med början på det första är 0.<br />

Språket innehåller alltså ɛ, 00, 01, 0000, 0100, 0101, . . . .<br />

d*. har exakt en delsträng som är 11.<br />

e*. inte har delsträngen 11.<br />

7 a. Använd grammatiken<br />

expr ::= ’(’ expr ’)’ expr<br />

expr ::= ɛ<br />

för att härleda strängen ()(). Visa varje steg i härledningen och rita härledningsträdet.<br />

b. Gör samma sak för (()()).<br />

c*. Beskriv med vanligt språk vilka strängar som ingår i det språk som genereras av<br />

grammatiken.<br />

8 Härled strängen INT - INT - INT med följande grammatiker och rita härledningsträden.<br />

1


a.<br />

b.<br />

c.<br />

term ::= INT (’-’ INT )∗<br />

term ::= INT tail<br />

tail ::= ’-’term<br />

tail ::= ɛ<br />

term ::= head INT<br />

head ::= term’-’<br />

head ::= ɛ<br />

9 Följande grammatiker beskriver språk på alfabetet {a, b}. Konstruera reguljära uttryck<br />

som beskriver samma språk.<br />

a.<br />

b.<br />

S ::= aS<br />

S ::= b<br />

S ::= aT<br />

T ::= bT<br />

T ::= b<br />

10 Låt L = △ {ww | w ∈ {0, 1} ∗ } och låt G vara en grammatik med följande produktioner:<br />

S ::= W W<br />

W ::= (0 | 1) ∗<br />

Är L = L(G)? Svaret kräver en motivering.<br />

2


Lösningar<br />

1 a. (∀v 0 .∃v 1 .P (v 0 , g(x, y)))<br />

b. (∀x.∃v 0 .P (z, v 0 ))<br />

c. (x · y)[x\x + 1][x\2 · x] = ((x + 1) · y)[x\2 · x] = (2 · x + 1) · y<br />

(x · y)[x\(x + 1)[x\2 · x]] = (x · y)[x\2 · x + 1] = (2 · x + 1) · y<br />

2 a. {∅, {1}}, 2<br />

b. {∅, {∅}}, 2<br />

c. {∅, {0}}<br />

3 a. {{a, b}}, {{a}, {b}}<br />

b. {{a, b, c}}, {{a, b}, {c}}.{{a}, {b, c}}, {{a, c}, {b}}, {{a}, {b}, {c}}<br />

c. 15<br />

d. ∅<br />

4 a. |A ∪ B| = |A| + |B| − |A ∩ B|.<br />

b. |A − B| = |A| − |A ∩ B|.<br />

c. |P(A × B)| = 2 |A|·|B|<br />

5 a. ◦ är associativ men inte kommutativ eller idempotent.<br />

b. L ⋆ och (L ⋆ ) ⋆ är alltid samma språk.<br />

c. Detta är sant för alla språk som innehåller den tomma strängen. Det minsta språket med<br />

denna egenskap är {ɛ}.<br />

6 a. (11(0|1) ⋆ )|((0|1) ⋆ 11)<br />

b. (0|1) ⋆ 11(0|1) ⋆<br />

c. (0(0|1)) ∗<br />

d. (0|10) ⋆ 11(01|0) ⋆<br />

e. 0 ⋆ (100 ⋆ ) ⋆ (1|ɛ)<br />

7 a.<br />

expr<br />

expr => ( expr ) expr =><br />

( ) expr =><br />

() ( expr ) expr =><br />

() () expr => () ()<br />

(<br />

expr<br />

ɛ<br />

)<br />

(<br />

expr<br />

expr<br />

)<br />

expr<br />

ɛ<br />

ɛ<br />

3<br />

expr


(<br />

expr<br />

)<br />

expr<br />

(<br />

expr<br />

ɛ<br />

)<br />

(<br />

expr<br />

expr )<br />

expr<br />

ɛ<br />

(<br />

expr<br />

ɛ<br />

)<br />

expr<br />

ɛ<br />

b.<br />

ɛ<br />

expr<br />

ɛ<br />

expr =><br />

( expr ) expr=> ( expr )=><br />

( (expr) expr ) =><br />

( () expr )=> ( () (expr) expr)=><br />

(() (expr) )=> ( () () )<br />

(<br />

(<br />

(<br />

(<br />

expr<br />

expr ɛ<br />

expr<br />

expr )<br />

) (<br />

expr<br />

expr<br />

expr expr )<br />

expr<br />

)<br />

)<br />

expr<br />

expr ɛ<br />

ɛ<br />

ɛ<br />

(<br />

expr ɛ<br />

)<br />

expr ɛ<br />

ɛ<br />

ɛ<br />

c. Mängden av alla strängar med korrekt matchade parenteser på det sätt som kan förekomma<br />

i aritmetiska uttryck.<br />

term<br />

8 a. term => INT - INT - INT<br />

INT<br />

-<br />

INT<br />

-<br />

INT<br />

b.<br />

term<br />

INT<br />

tail<br />

1<br />

term => INT tail=> INT<br />

- term => INT - INT tail =><br />

INT - INT - term => INT - INT - INT<br />

tail=> INT - INT - INT<br />

- term<br />

INT tail<br />

- term<br />

1<br />

INT<br />

tail<br />

ɛ<br />

c. term => head INT => term - INT => head INT - INT =><br />

term - INT - INT => head INT - INT - INT => INT - INT - INT<br />

9 a. a ∗ b<br />

b. ab ∗ b<br />

10 Svaret är nej. Strängen 01 tillhör L(G) men ej L.<br />

2<br />

4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!