Přidání 1. až 5. cvičení z TI

This commit is contained in:
Filip Znachor 2023-10-18 11:26:22 +02:00
parent fe34ba6912
commit 4994338f4a
10 changed files with 342 additions and 0 deletions

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
.obsidian
.trash
*.excalidraw.md

View file

@ -0,0 +1,57 @@
## Rozklad množiny
Rozklad množin je množina podmnožin, které jsou
- neprázdné,
- vzájemně disjunktní,
- sjednocením je celá množina.
## Kartézský součin
- značí se $A \times B$
- $\{ (a, b) \mid a \in A \wedge b \in B \}$
Vlastnosti
- není komutativní ($A \times B \neq B \times A$)
- je asociativní
- $A = \{ 1, 2 \}, B = \{ a, b \}, C = \{ 3, 4 \}$
- $(A \times B) \times C = \{ ((1, a), 3), ((1, a), 4), \dots, ((2, b), 4) \}$
- $A \times (B \times C) = \{ (1, (a, 3)), (1, (a, 4)), \dots, (2, (b, 4)) \}$
- pro nás není podstatná struktura
- $A \times B \times C = \{(1, a, 3), (1, a, 4), (2, b, 4)\}$
## Binární relace
Binární relace je libovolnou podmnožinou Kartézského součinu.
Inverzní relace
- $b \, R^{-1}\, a \iff a \, R \, b$
Složená relace (kompozice)
- $\alpha \subseteq A \times B$
- $\beta \subseteq B \times C$
- $\gamma = \alpha \circ \beta \subseteq A \times C$
## Příklad
- $A = \{ 1, 2, 3 \}$
- $B = \{ 2, -3 \}$
- $C = \{ a, b, c \}$
+ $R \subseteq A \times B = \{ (1, 2), (1, -3), (2, 2), (2, -3) \}$
+ $S \subseteq B \times C = \{ (2, a), (-3, c) \}$
- $R \circ S = \{ (1, a), (2, a), (1, c), (2, c) \}$
## Relace na množině
$R \subseteq A \times A$
- množina $A = \{ 1, 2, 3 \}$
- relace $R = \{ (1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3) \}$
## Funkce
$F: A \to B \quad f \subseteq A \times B$
- $\forall \, a \in A : \exists! \, b \in B : a \, f \, b$
Je inverzní relace k funkci také funkcí?
- pouze v případě, že je funkce injektní

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 432 KiB

View file

@ -0,0 +1,67 @@
$\sum = \{ a,b \}$
$L_{1} = \{ w \mid w \text{ obsahuje lichý počet } a \text{ a sudý počet } b \}$
- 4 stavy
- sasb - vstupní
- salb
- lasb - koncový
- lalb
$L_{2} = \{ w \mid w \text{ obsahuje lichý počet } a \text{ a 0 nepovažujeme za sudé číslo} \}$
- 3 stavy
- 0 - vstupní
- l
- s - koncový
$L_{3} = \{ w \mid w \text{ obsahuje právě dva znaky } a \}$
- 4 stavy
- 0 - vstupní
- 1
- 2 - koncový
- \>2 - absorbční stav (zamítací), nedá se z něj dostat
$L_{4} = \{ w \mid w \text{ obsahuje alespoň 2 znaky } a \}$
- 3 stavy
- 0 - vstupní
- 1
- \>=2 - koncový a absorbční
$L_{5} = \{ w \mid w \text{ začíná podřetězcem } bba- \}$
- 5 stavů
- e - vstupní
- b
- bb
- bba - koncový akceptující absorbční
- špatný - zamítací absorbční
$L_{6} = \{ w \mid w \text{ obsahuje méně než 2 znaky } a \}$
- opak $L_{4}$, stačí prohodit koncové stavy
- 4 stavy
- 0 - koncový
- 1 - koncový
- \>=2
- $L = \left( Q, \sum, \delta, q_{0}, F\right)$
- $\overline L = \left( Q, \sum, \delta, q_{0}, \overline F\right)$
$L_{7} = \{ w \mid w \text{ obsahuje podřetězec } -bbab- \}$
- 5 stavů
- e
- b
- bb
- bba
- bbab
$L_{8} = \{ w \mid w \text{ obsahuje podřetězec } -abba- \}$
$L_{9} = \{ w \mid w \text{ končí na } -abba \}$
$L_{10} = \{ w \mid w \text{ současně splňuje} \}$
- nezačíná bba-
- obsahuje -babb-
- nekončí -aa
$L_{11} = \{ w \mid w \text{ současně splňuje } \}$
- obsahuje -aaba-
- neobsahuje -bba-
- **Kartézský součin automatu**
- u zkoušky jsou na tom stavěny příklady!

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 378 KiB

View file

@ -0,0 +1,84 @@
Příklad z minulého cvičení
| | 0 | 1 |
| ----- | --- | --- |
| <-> A | B | A |
| <-- B | C | A |
| <-- C | C | D |
| D | D | D |
| | 0 | 1 |
| ----- | --- | --- |
| --> 0 | 0 | 1 |
| 1 | 0 | 2 |
| 2 | 3 | 2 |
| 3 | 0 | 4 |
| <-- 4 | 4 | 4 |
| | 0 | 1 |
| ---------- | --- | --- |
| **A0** | B0 | A1 |
| **B0** | C0 | A1 |
| **A1** | B0 | A2 |
| **C0** | C0 | D1 |
| **A2** | B3 | A2 |
| **D1** | D0 | D2 |
| **B3** | C0 | A4 |
| **D0** | D0 | D1 |
| **D2** | D3 | D2 |
| <-- **A4** | B4 | A4 |
| **D3** | D0 | D4 |
| <-- **B4** | C4 | A4 |
| **D4** | D4 | D4 |
| <-- **C4** | C4 | D4 |
**Př. 1**: L je množina všech řetězců, které splňují právě jednu z podmínek:
- $w$ obsahuje $-babb-$
- počet znaků $b$ ve $w$ je dělitelný 3
viz. excalidraw
**Př. 2**: Navrhněte konečně automatový model algoritmu pro softwarovou implementaci vstupní konverze textového řetězce reprezentujícího zápis konstanty typu integer do vnitřní reprezentace PC. (formát v pevné řádové čárce)
| | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | ---- |
| MAX | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 127 |
| MIN | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -128 |
314 = 256 + 32 + 16 + 8 + 2
`0000 0001 0011 1010`
| číslo | zobrazení |
| ----- | ------------- |
| 314 | `00 00 01 3A` |
| | `33 31 34 20` |
| -314 | `FF FF FE C6` |
**Př. 3**: Navrhněte RKA akceptující syntakticky správné řetězce reprezentující konstantu integer.
- správné: 0, 121, -15, +6, ...
- nesprávné: +-3
- $\sum = \{D, +, -, x\}$
- \\ je koncový znak
Pomocné stavové proměnné
| | počáteční hodnota |
| ----------- | ----------------- |
| znam. INT | 1 |
| hodnota INT | 0 |
transformace PSP
- 0: nic
- 1: $\text{znam} \leftarrow 1$
- 2: $\text{hodnota} \leftarrow \text{hodnota} \cdot 10 + \text{cislice}$
- znak je v ASCII kódu $\to$ odečíst '0' (30)
- 3: $\text{hodnota} \leftarrow \text{znak} \cdot \text{hodnota}$
$(3x^2 + x + 4) x = 10$
- 314
viz. excalidrawPř. 1
1: $\text{hodnota} \leftarrow \text{hodnota} \cdot 10 + (\text{vstup} - \text{'0'})$
2: $\text{hodnota} \leftarrow \text{hodnota} \cdot 10 - (\text{vstup} - \text{'0'})$

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 176 KiB

View file

@ -0,0 +1,45 @@
Jedna množina
- $A = \{ 0, 1, 2 \}$
- $A^2 = A \cdot A = \{ 00, 01, 02, 10, 11, 12, 20, 21, 22 \}$
- $A^+ = \{ 0, 1, 2, 00, 01, 02, \dots, 22, 000, 001, \dots, 222, \dots \}$
- $A^* = A^+ \cup \{e\}$
Dvě množiny
- $A = \{ 0, 1, 2 \}, \quad B = \{ a, b \}$
- $A^* \cup B^* = \{ e, 0, 1, 2, a, b, 00, 01, \dots, 22, aa, ab, ba, bb, \dots \}$
- $(A \cup B)^* = \{e, 0, 1, 2, a, b, 00, 01, 02, 0a, 0b, \dots, 2b, ab, bb, \dots\}$
- $A \cdot (B \cup B^2) = \{0a, 0b, 0aa, 0ab, 0ba, \dots, 2bb\}$
### Návrh gramatiky
**Př. 1**: Nad abecedou $0-9$ vymyslete gramatiku představující sudá čísla. Připouštíme i neplatné nuly na začátku řetězce.
- musí končit sudou číslicí $\{ 0, 2, 4, 6, 8 \}$
Gramatika:
- $S \to AB$
- $B \to 0|2|4|6|8$
- $A \to e|0A|1A|2A|3A|4A|5A|6A|7A|8A|9A$
316
- $S \to AB \to 3AB \to 31AB \to 31B \to 316$
**Př. 2**: Jako př. 1, ale nepřipouštíme nevýznamné nuly na začátku.
- nesmí začínat nulou
Gramatika:
- $S \to CAB | B$
- $B \to 0|2|4|6|8$
- $A \to e|0A|1A|2A|3A|4A|5A|6A|7A|8A|9A$
- $C \to 1|2|3|4|5|6|7|8|9$
**Př. 3**: Vytvořte gramatiku, která bude generovat všechny řetěze reprezentující korektní identifikační čísla studentů ZČU, kteří zahájili studium v roce 2020/21 a později.
Gramatika:
- $\text{<student>} \to \text{<fak><rok><typ><cislo><forma>}$
- $\text{<fak>} \to A|E|K|S|P|F|R|U|Z$
- $\text{<rok>} \to 20|21|22|23$
- $\text{<typ>} \to B|N|P|M$
- $\text{<cislo>} \to \text{<c><c><c><c>}$
- $\text{<c>} \to 0|1|2|\dots|9$
- $\text{<forma>} \to P|K$

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 360 KiB

View file

@ -0,0 +1,68 @@
**Př. 1**: Vytvořte gramatiku, která bude nad abecedou $\{0, 1\}$ generovat řetězec obsahující lichý počet 0 a sudý počet 1.
- $\{0, 1\} \quad w \dots \text{lichý počet } 0 \text{, sudý počet } 1$
- 4 stavy
**Př. 2**:
- $S \to abA \mid bS \mid aa \mid A$
- $A \to abA$
- $B \to aS \mid baA \mid a$
a) Najděte $G'$ typu G3R takovou, že $L(G') = L(G)$.
+ $S \to bS | aS_{1} | aS_{2} \mid aS | bB_{1} | aB_{2} \mid aA_{1}$
+ $A \to aA_{1} \mid aS | bB_{1} | aB_{2}$
+ $B \to aS | bB_{1} | aB_{2}$
- $S_{1} \to bA$
- $B_{1} \to aA$
- $A_{1} \to bA$
- $S_{2} \to aS_{3}$
- $S_{3} \to e$
- $B_{2} \to e$
b) Vytvořte tabulku popisující nedeterministický konečný automat A takový, že platí $L(A) = L(G') = L(G)$.
| | a | b |
| ------------------ | ----------------------------------- | -------------- |
| $\to S$ | $\{S, S_{1}, S_{2}, A_{1}, B_{2}\}$ | $\{S, B_{1}\}$ |
| $S_{1}$ | - | $\{A\}$ |
| $S_{2}$ | $\{S_{3}\}$ | - |
| $\leftarrow S_{3}$ | - | - |
| $A$ | $\{S, A_{1}, B_{2}\}$ | $\{B_{1}\}$ |
| $A_{1}$ | - | $\{A\}$ |
| $B$ | $\{S, B_{2}\}$ | $\{B_{1}\}$ |
| $B_{1}$ | $\{A\}$ | - |
| $\leftarrow B_{2}$ | - | - |
c) Vytvořte tabulku popisující deterministický konečný automat A' takový, že platí $L(A') = L(G') = L(G)$.
| | a | b |
| -------------------------------------------------------- | ---------------------------------------------- | --------------------- |
| $\to S$ (0) | $\{S, S_{1}, S_{2}, A_{1}, B_{2}\}$ (1) | $\{S, B_{1}\}$ (2) |
| $\leftarrow \{S, S_{1}, S_{2}, A_{1}, B_{2}\}$ (1) | $\{S, S_{1}, S_{2}, S_{3}, A_{1}, B_{2}\}$ (3) | $\{S, A, B_{1}\}$ (4) |
| $\{S, B_{1}\}$ (2) | $\{S, S_{1}, S_{2}, A, A_{1}, B_{2}\}$ (5) | $\{S, B_{1}\}$ (2) |
| $\leftarrow\{S, S_{1}, S_{2}, S_{3}, A_{1}, B_{2}\}$ (3) | $\{S, S_{1}, S_{2}, S_{3}, A_{1}, B_{2}\}$ (3) | $\{S, A, B_{1}\}$ (4) |
| $\{S, A, B_{1}\}$ (4) | $\{S, S_{1}, S_{2}, A, A_{1}, B_{2}\}$ (5) | $\{S, B_{1}\}$ (2) |
| $\leftarrow\{S, S_{1}, S_{2}, A, A_{1}, B_{2}\}$ (5) | $\{S, S_{1}, S_{2}, S_{3}, A_{1}, B_{2}\}$ (3) | $\{S, A, B_{1}\}$ (4) |
**Př. 3**: Sestrojte NKA $A$, kde platí $L(A) = L(G_{1})^R \cup L(G_{2})$.
- $G_{1}$
- $S \to aS | bbA$
- $A \to aaA | B$
- $B \to bbB | e$
- $G_{2}$
- $S \to Aba | Ab | B$
- $A \to Aaa | B$
- $B \to Bbb | e$
- G3L -> reverze -> G3P -> NKA -> reverze -> NKA
Plán
1) $A_{1} \qquad L(A_{1}) = L(G_{1})$
2) $A_{1}^R \qquad L(A_{1}^R) = L(A_{1})^R = L(G_{1})^R$
3) $G_{2}^R \qquad L(G_{2}^R) = L(G_{2})^R$
4) $A_{2}^R \qquad L(A_{2}^R) = L(G_{2}^R) = L(G_{2})^R$
5) $A_{2} \qquad A_{2} = (A_{2}^R)^R \quad L(A_{2}) = \dots = L(G_{2})$
6) $A \qquad L(A) = L(A_{1}^R) \cup L(A_{2}) = L(G_{1})^R \cup L(G_{2})$
$G_{2}^R$
- $S \to abA | bA | B$
- $A \to aaA | B$
- $B \to bbB | e$