FAV-ZCU/KIV TI/Cvičení/Cviceni04.md

1.5 KiB

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