Uploaded by moj spam

du2

advertisement
FOJA 2 - DU2 - Úloha 1
Jakub Kaššák
Definujme:
φ(L1 , L2 ) = {v ∈ L1 ∩
LC
2
|v|
| (∃u ∈ L2 ) |u| =
}.
2
Chceme dokázat’, že trieda LECS je uzavretá na operáciu φ.
Nech L1 , L2 ∈ LECS , potom aj Lc2 , L1 ∩LC
2 ∈ LECS . Vezmime LBA A1 = (K1 , Σ1 , Γ1 , δ1 , q01 , F1 ),
A2 = (K2 , Σ2 , Γ2 , δ2 , q02 , F2 ) také, že L(A1 ) = L1 ∩ LC
2 , L(A2 ) = L2 . BUNV nech K1 ∩ K2 = ∅.
Definujme LBA A = (K, Σ1 , Γ, δ, q01 , F2 ) taký, že L(A) = φ(L1 , L2 ).
K = K1 ∪ K2 ∪ {generuj, vymaz, preskoc, najdi, zaciatok} ∪ {zober[a], uloz[a] | a ∈ Σ2 }
Stavy generuj, vymaz, preskoc, najdi, zaciatok, zober[a], uloz[a] sú nové stavy.
Γ = Γ1 ∪ Γ2 ∪ {B}
Pričom B ∈
/ Γ1 ∪ Γ2 .
Pre prehl’adnost’ uvedieme delta funkciu vo fázach.
1.
(∀q ∈ K1 − F1 )(∀a ∈ Γ1 ∪ {$, ¢}) : δ(q, a) = δ1 (q, a)
2.
(∀q ∈ F1 )(∀a ∈ Γ1 ∪ {$}) : δ(q, a) ∋ (q, a, −1)
(∀q ∈ F1 ) : δ(q, ¢) ∋ (generuj, ¢, 1)
(∀a ∈ Γ1 )(∀b ∈ Σ2 ) : δ(generuj, a) ∋ (generuj, b, 1)
δ(generuj, $) ∋ (vymaz, $, −1)
(∀a ∈ Σ2 ) : δ(vymaz, a) ∋ (preskoc, B, −1)
(∀a ∈ Σ2 ) : δ(preskoc, a) ∋ (vymaz, a, −1)
3.
δ(preskoc, ¢) ∋ (najdi, ¢, 1)
δ(vymaz, ¢) ∋ (najdi, ¢, 1)
δ(najdi, B) ∋ (najdi, B, 1)
(∀a ∈ Σ2 ) : δ(najdi, a) ∋ (zober[a], B, −1)
(∀a ∈ Σ2 ) : δ(zober[a], B) ∋ (zober[a], B, −1)
(∀a ∈ Σ2 )(∀b ∈ Σ2 ∪ {¢}) : δ(zober[a], b) ∋ (uloz[a], b, 1)
(∀a ∈ Σ2 ) : δ(uloz[a], B) ∋ (najdi, a, 1)
4.
δ(najdi, $) ∋ (zaciatok, $, −1)
(∀a ∈ Σ2 ∪ {B}) : δ(zaciatok, a) ∋ (zaciatok, a, −1)
δ(zaciatok, ¢) ∋ (q02 , ¢, 1)
5.
(∀q ∈ K2 )(∀a ∈ Γ2 ∪ {¢}) : δ(q, a) = δ2 (q, a)
(∀p, q ∈ K2 )(∀j ∈ {−1, 0}) : δ(q, B) ∋ (p, B, j) ⇐⇒ δ2 (q, $) ∋ (p, $, j)
Popis výpočtu:
1. Spustı́me A1 na vstupe. Ak akceptuje, prejdeme do d’alšej fázy.
2. Z l’ubovol’ného akceptačného stavu A1 , dokráčame na ¢ a prejdeme do stavu generuj. V stave
generuj vygenerujeme l’ubovol’né slovo u′ zo Σ∗2 (|u′ | = |v|, kde v je pôvodný vstup). Následne
každé druhé pı́smenko vymažeme, tak že na zostane práve ⌊|v|/2⌋ pı́smen oddelených znakmi
B.
3. V d’alšej fáze posunieme pı́smenká (okrem B) smerom ku ¢. V stave najdi hl’adá A pı́smenko.
Ked’ ho nájde uložı́ si pı́smenko do stavu zober[a] a kráča smerom k ¢ až kým nenájde ¢ alebo
neblank. Vtedy prejde do stavu uloz[a] a posunie sa na vedl’ajšı́ B. Na jeho miesto zapı́še
pı́smenko a zopakuje celý postup.
4. Ak v stave najdi vidı́ $, znamená to, že slovo je už kompletne upratané. V stave zaciatok
prejde na ¢ a odtial’ na prvý znak vygenerovaného slova v počiatočnom stave A2 .
5. V poslednej fáze simuluje A2 na vygnerovanom slove. Ak akceptuje A2 akceptuje aj A.
Treba si uvedomit’, že ak A akceptuje nejaké slovo, znamená to, že musel prejst’ cez všetky fázy
výpočtu. Tým pádom vstup musı́ spĺňat’ podmienku operacie φ. Naopak, ak slovo v ∈ L1 ∩ LC
2 a
zároveň (∃u ∈ L2 ) |u| = ⌊|v|/2⌋, automat A1 akceptuje v, vd’aka čomu sa A dostane do fázy 2.
Vo fázé 2 dokáže vygenerovat’ l’ubovol’né slovo, a preto ked’ následne vo fáze 3 nechá len polovicu
dokáže nedeterministicky ’uhádnut’’ aj slovo u. Automat A2 akceptuje u, preto aj A akceptuje.
FOJA 2 - DU2 - Úloha 2
Jakub Kaššák
Chceme dokázat’, že PKP je rozhodnutel’ný práve vtedy, ked’ je rozhodnutel’né kompletné PKP.
⇐
1
Nech existuje DT S A rozhodujúci kompletný PKP. Nech (X, Y ) je inštancia PKP. Spustı́me A pre
každú podmnožinu indexov, okrem prázdnej množniny (toto si môžeme dovolit’, lebo podmnožı́n
je konečne vel’á). Ak A pre aspoň jednu podmnožinu povie áno, inštancia PKP (X, Y ) má riešenie.
Ak pre všetky podmnožiny povie nie, inštancia (X, Y ) nemá riešenie.
⇒
2
Chceme ukázat’, že ak vieme rozhodovat’ PKP, tak vieme rozhodovat’ aj kompletné PKP. Nech
(X, Y ) je inštancia kompletného PKP, pomocou špeciálnej sady obyčajného (X ′ , Y ′ ), ktorá má
riešenie práve vtedy, ked’ má riešenie pôvodná inštancia. Potom by sme vedeli algoritmicky zostrojit’
novú špeciálnu inštanciu PKP, rozhdnút’ o nej, či má riešenie a tak by sme dostali odpoved’ na
pôvodnú otázku.
BUNV nech #, & je nový znak. Nech (X, Y ) je naša sada domı́n, |X| = n. Vytvorme sadu
(X ′ , Y ′ ), s (n + 2)n + 3 dominami. Definujme pre ∀n ∈ N homomorfizmus zn : Σ∗ → Σ∗ ∪ {#}
tak, že pre ∀a ∈ Σ zn(a) = a#n+1 . Definujme pre ∀n ∈ N zobrazenie mn : Σ∗ → Σ∗ ∪ {#} tak,
že pre ∀w ∈ Σ∗ , ∃a ∈ Σ, ∃w′ ∈ Σ∗ , w = w′ a, mn(w) = mn(w′ a) = zn(w′ )a. Budeme mat’:
(∀i ∈ N )(1 ≤ i ≤ n) : x′i = zn(xi ), yi′ = #n+2−i mn(yi )#i
Tieto dominá nazývame prechody.
(∀i, j, k ∈ N )(1 ≤ i ≤ n)(0 ≤ j ≤ n)(k = (n + 1)i + j + 1) : x′k = zn(xi ), yk′ = #n+1−j mn(yi )#j
Tieto dominá nazývame medzi-bloky.
(k = (n + 2)n + 2) : x′k = #n+2 , yk′ = &
Toto domino voláme začiatok.
(k = (n + 2)n + 3) : x′k = #, yk′ = #&
Toto domino voláme koniec.
Chceme dokázat’, že (X, Y ) má riešenie práve vtedy, ked’ (X ′ , Y ′ ).
2.1
⇒
Nech α je postupnost’ indexov, ktoré sú riešenı́m (X, Y ). Vytvorme nové postupnosti pre ∀i ∈
{1, ..., n}. Hl’adáme prvý výskyt indexu i v α. Pretože α je riešenie kompletného PKP určite sa tam
vyskytuje. α potom vyzerá nejako takto j1 , j2 , ..., jk−1 , jk , jk+1 , ..., jl , kde l = |α|, 1 ≤ k ≤ n, jk = i.
αi bude potom postupnost’ (j1 (n+1)+i), ..., (jk−1 (n+1)+i), i, (jk+1 (n+1)+i+1)..., (jl (n+1)+i+1).
Teraz už vieme skonštruovat’ riešenie (X ′ , Y ′ ). Ako prvý index zoberieme začiatok. Potom pridáme
všetky indexy z α1 , potom α2 , ..., až po αn . Riešenie ukončı́me s koncom. Pı́smenká sedia pretože
αn je riešenie, a vd’aka tomu ako sme zadefinovali postupnosti αi # na seba presne nadvázujú.
2.2
⇐
Nech β je postupnost’ indexov, ktoré sú riešenı́m (X ′ , Y ′ ). Očividne prvý v nej musı́ byt’ začiatok,
lebo ako jediný má viac # hore ako dole a zároveň začı́na rovnakým znakom. Posledný musı́ byt’
koniec, lebo aj ked’ viaceré bloky končia rovnakým znakom, ich použitie na konci vylučuje to, že na
posledných n + 1 znakoch sa nezhodujú. Očividne # musia byt’ nad # a pı́smenká na pı́smenkami.
Ak by sme teda ukázali, že pre každé xi , sa niekde nachádza mn(xi ), vedeli by sme nájst’ riešenie
kompletného PKP. Predpokladajme, že nejaké mn(xi ) sa tam vôbec nenachádza. Potom sa tam
nenachádza ani prechod x′i , yi′ . Vieme, že sme začali so začiatkom a skončili s koncom. Pretože
počet mriežok hore začiatku je n + 2, dole iba 1, počet mriežok v konci dole je 1 a hore 0 a 1 ≤ n,
vieme, že sme museli použit nejaký prechod (lebo iba prechody menia počet mriežok hore a dole).
BUNV nech sa chýbajúci prechod nachádza medzi dvoma prechodmi (analogicky sa to dá ukázat’
aj pre chýbajúci prechod medzi začiatkom a koncom). Nech x′i je prvý chýbajúci prechod. Až po
prechod xi−1 sú pı́smenká a mriežky správne zarovnané, preto dole chýba práve n − i + 1 mriežok.
Prechod x′j , j > i ale nedokáže toto odstránit’, lebo jeho yi začı́na s najviac n − j + 1 < n − i + 1
mriežkami. Takisto j < i nedokáže toto odstránit’, lebo jeho yi začı́na s najviac n − j + 1 > n − i + 1
mriežkami. Ale potom β nemôže byt’ riešenie. Vieme, že β je riešenie a obsahuje každé domino
aspoň raz. Odstránime z nej začiatky a konce. A pre každý index v β vyberieme index pre riešenie
(X, Y ) nasledovne:
ˆ i, ak i ≤ n
ˆ (i − 1)/(n + 1), ak i > n
Download