Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
KAPITOLA 3. REGULÁRNÍ JAZYKY 40<br />
3.3.4 Soustavy rovnic nad regulárními výrazy<br />
Příklad 3.20<br />
Budiž dána soustava rovnic<br />
X = a 1 X + a 2 Y + a 3<br />
Y = b 1 X + b 2 Y + b 3<br />
Její řešení je:<br />
X = (a 1 + a 2 b ∗ 2b 1 ) ∗ (a 3 + a 2 b ∗ 2b 3 )<br />
Y = (b 2 + b 1 a ∗ 1a 2 ) ∗ (b 3 + b 1 a ∗ 1a 3 )<br />
Důkaz: Cvičení.<br />
✷<br />
Definice 3.13 Soustava rovnic nad regulárními výrazy je ve standardním tvaru<br />
vzhledem k neznámým ∆ = {X 1 , X 2 , ..., X n }, má-li soustava tvar<br />
∧<br />
X i = α i0 + α i1 X 1 + α i2 X 2 + ... + α in X n<br />
i∈{1,...,n}<br />
kde α ij jsou regulární výrazy nad nějakou abecedou Σ, Σ ∩ ∆ = ∅.<br />
Věta 3.15 Je-li soustava rovnic nad regulárními výrazy ve standardním tvaru,<br />
pak existuje její minimální pevný bod a algoritmus jeho nalezení.<br />
Důkaz: Vyjadřujeme hodnotu jednotlivých proměnných pomocí řešení rovnice<br />
X = pX +q jako regulární výraz s proměnnými, jejichž počet se postupně snižuje:<br />
Z rovnice pro X n vyjádříme např. X n jako regulární výraz nad Σ a X 1 , ..., X n−1 .<br />
Dosadíme za X n do rovnice pro X n−1 a postup opakujeme. Jsou přitom možné<br />
(ale ne nutné) různé optimalizace tohoto pořadí.<br />
✷<br />
Příklad 3.21 Vyřešte soustavu rovnic nad regulárními výrazy:<br />
(1) X 1 = (01 ∗ + 1)X 1 + X 2<br />
(2) X 2 = 11 + 1X 1 + 00X 3<br />
(3) X 3 = ε + X 1 + X 2<br />
Řešení:<br />
1. Výraz pro X 3 dosadíme z (3) do (2). Dostaneme soustavu:<br />
(4) X 1 = (01 ∗ + 1)X 1 + X 2<br />
(5) X 2 = 11 + 1X 1 + 00(ε + X 1 + X 2 ) = 00 + 11 + (1 + 00)X 1 + 00X 2<br />
2. Ze (4) vyjádříme X 1 s využitím řešení rovnice X = pX + q (věta 3.14):<br />
(6) X 1 = (01 ∗ + 1) ∗ X 2 = (0 + 1) ∗ X 2<br />
3. Dosazením do (5):<br />
(7) X 2 = 00 + 11 + (1 + 00)(0 + 1) ∗ X 2 + 00X 2 =<br />
= 00 + 11 + (1 + 00)(0 + 1) ∗ X 2<br />
4. Vypočtením X 2 jako řešení rovnice X = pX + q dostaneme:<br />
(8) X 2 = ((1 + 00)(0 + 1) ∗ ) ∗ (00 + 11)