Vztah mezi koloniemi s paralelním přepisováním Šárka Vavrečková
C = (V,T,R), kde à V je abeceda kolonie, à T je množina terminálních symbolů, T V, à R je množina komponent (S i, F i ), S i V, F i ={f m (V-{S i })*, 1 m n i }. Axiom kolonie w 0 je libovolný řetězec nad množinou V. Například C = ({M, N, P, a, b}, {a, b}, R), R = { (M, {PPPN, PPNP, PNPP, NPPP, }), (N, {M}), (P, {a}), (P, {b}) }, w 0 = MM Kolonie
à Každá komponenta je použita nejvýše jednou, à pokud je možné komponentu použít, musí být použita, à může existovat více komponent se stejným startovacím symbolem. à wp (weakly competitive parallel derivation step): = slabý paralelismus; když je počet výskytů symbolu menší než počet komponent s tímto startovacím symbolem, vybereme tolik komponent, kolik budeme potřebovat. à sp (strongly competitive parallel derivation step): = silný paralelismus; pokud je počet výskytů symbolu menší než počet komponent s tímto startovacím symbolem, výpočet je zablokován. Paralelní odvozování Paralelní přepisování
R = { (M, {PPPN, PPNP, PNPP, NPPP, }), (N, {M}), (P, {a}), (P, {b}) } w 0 = MM MM wp PPNPM wp PaMb wp bab MM sp PPNPM sp PaMb sp BLOKOVÁNO MM sp PPNPM sp PaMbPNPP sp babPMaP sp sp babaab L 1wp = {w {a,b}*; |w|=3n, n 0, | |w| a -|w| b | 1} L 1sp = {w {a,b}*; |w|=6n, n 0, |w| a = |w| b } Příklad:
COL wp ? COL sp CF COL sp, CF COL wp L 2 = {a i b j a i b j ; i, j 1} COL sp - CF R = {(A, {aA', a}), (A, {aA', a}), (A', {A}), (A', {A}), (B, {bB', b}), (B, {bB', b}), (B', {B}), (B', {B}) }, w 0 = ABAB L 3 = {a i b j c k ; i, j, k 1, i j, j k, i k} COL wp - CF R = { (A, {aA', aX}), (A', {A}), (B, {bB', bX}), (B', {B}), (C, {cC', cX}), (C', {C}), (Y, {Z}), (Z, {Y}), (X, { }), (X, {Y}), (X, {Y}) }, w 0 = ABC Dosavadní výsledky
Demonstrační příklady Krok 1 algoritmu popíšeme na této kolonii: C 4wp = ({A, B, C, a, b, c}, {a, b, c}, R), w 0 = AAC, R = { (A, {aB, }), (A, {bB, }), (B, {A}), (B, {A}), (C, {a,b,c}) } Demonstrační příklady L 4 = {w {a,b}*; w = ' nebo w = ', kde ' je inverzí (záměna symbolů a, b)} ° {a,b,c} Kroky 2 a 3 ukážeme na kolonii C 5wp = ({A, B, C, a, b}, {a, b}, R), w 0 = BBC, R = { (A, {a, aBC, BCa}), (A, {b}), (B, {AA}), (C, {AAA}) } L 5 = {w {a,b}*; |w| = 5n+2, n 1, | |w| a -|w| b | 1}
Použité značení: S S... množina symbolů množiny V, které jsou startovacími symboly ve více než jedné komponentě, počet prvků této množiny budeme označovat s, SS S j... obecně j-tý symbol množiny S (tj. S = {S 1, S 2,..., S s }), S k... počet komponent s tím startovacím symbolem, který je právě zpracováván, obecně můžeme psát k 1, k 2,..., k s pro různé prvky množiny S, pokud není přímo vymezeno, s kterým symbolem právě pracujeme. Použité značení
S Pro každý symbol A S přidáme nové symboly: Ve větné formě je výskytů symbolu A: 1A (1), A (1,1), A (1,2), …, A (1,k) 2A (2), A (2,1), A (2,2), …, A (2,počet_dvojic) 3A (3), A (3,1), A (3,2), …, A (3,počet_trojic) kA (k), A (k,1)... Nové symboly: a další - pomocné - symboly. Krok 1
Kolonie C 4wp : w 0 = AAC, R = { (A, {aB, }), (A, {bB, }), (B, {A}), (B, {A}), (C, {a,b,c}) } S S = {A, B}, k 1 = k 2 = 2. Kolonie C 4sp : sudé kroky odvození jsou obrazy kroků v původní kolonii, liché kroky odvození jsou pomocné. AAC wp aAbAa wp abbBa wp abbAa wp abba S 0 sp A (2) [A,2]A (2) [A,2]CX A X A X B X B sp A (2,1) [A,2]'A (2,1) [A,2]'C'[A,2]'Y A ([B,0]') 3 Y B sp... wp aBbBa Ukázka derivace: sp aB (2) [B,2]bB (2) [B,2]aX A X A X B X B sp aB (2,1) [B,2]'bB (2,1) [B,2]'a([A,0]') 3 Y A [B,2]'Y B sp aA (2) [A,2]bA (2) [A,2]aX A X A X B X B sp aA (2,1) [A,2]'bA (2,1) [A,2]'a[A,2]'Y A ([B,0]') 3 Y B sp abbB (1) [B,1]aX A X A X B X B sp abbB (1,1) [B,1]'a([A,0]') 3 Y A ([B,1]') 2 Y B sp abbA (1) [A,1]aX A X A X B X B sp abbA (1,2) [A,1]'a([A,1]') 2 Y A ([B,0]') 3 Y B sp abbaX A X A X B X B sp abba
Celá derivace Celá derivace v kolonii C 4sp : S 0 sp A (2) [A,2]A (2) [A,2]CX A X A X B X B sp A (2,1) [A,2]'A (2,1) [A,2]'C'[A,2]'Y A ([B,0]') 3 Y B sp aB (2) [B,2]bB (2) [B,2]aX A X A X B X B sp aB (2,1) [B,2]'bB (2,1) [B,2]'a([A,0]') 3 Y A [B,2]'Y B sp aA (2) [A,2]bA (2) [A,2]aX A X A X B X B sp aA (2,1) [A,2]'bA (2,1) [A,2]'a[A,2]'Y A ([B,0]') 3 Y B sp abbB (1) [B,1]aX A X A X B X B sp abbB (1,1) [B,1]'a([A,0]') 3 Y A ([B,1]') 2 Y B sp abbA (1) [A,1]aX A X A X B X B sp abbA (1,2) [A,1]'a([A,1]') 2 Y A ([B,0]') 3 Y B sp abbaX A X A X B X B sp abba Celá derivace v kolonii C 4wp : AAC wp aBbBa wp aAbAa wp abbBa wp abbAa wp abba
Komponenty: R = {(A, {aB, }), (A, {bB, }), (B, {A}), (B, {A}), (C, {a,b,c})}, S w 0 = AAC, S = {A, B}, k 1 = k 2 =2. (C, {C'}), (C', {a,b,c}), (A (1), {A (1,1), A (1,2) }), (A (2), {A (2,1) }), ([A,1], {[A,1]'}), ([A,2], {[A,2]'}), (B (1), {B (1,1), B (1,2) }), (B (2), {B (2,1) }), (B (2), {B (2,1) }) ([B,1], {[B,1]'}), ([B,2], {[B,2]'}), ([A,0]',{ }), ([A,0]',{ }), ([A,0]', {X A }), ([A,1]',{ }), ([A,1]',{ }), ([A,1]', {X A }), ([A,2]',{ }), ([A,2]',{ }), ([A,2]', {X A }), (A (1,1), {aB (1) [B,1], aB (2) [B,2], }), (A (1,2), {bB (1) [B,1], bB (2) [B,2], }), (A (2,1), {aB (1) [B,1], aB (2) [B,2], }), (A (2,1), {bB (1) [B,1], bB (2) [B,2], }), (B (1,1), {A (1) [A,1], A (2) [A,2]}), (B (1,2), {A (1) [A,1], A (2) [A,2]}), (B (2,1), {A (1) [A,1], A (2) [A,2]}), ([B,0]',{ }), ([B,0]',{ }), ([B,0]', {X B }), ([B,1]',{ }), ([B,1]',{ }), ([B,1]', {X B }), ([B,2]',{ }), ([B,2]',{ }), ([B,2]', {X B }), (X A, {([A,0]') 3 Y A, ([A,1]') 2 Y A, [A,2]'Y A, }), (X A, { }), (Y A, {X A }), (X B, {([B,0]') 3 Y B, ([B,1]') 2 Y B, [B,2]'Y B, }), (X B, { }), (Y B, {X B }), (S 0, {A (2) A (2) CX A X A X B X B })
Použitelnost algoritmu po kroku 1: Algoritmus můžeme aplikovat na kolonie, kde všechny výskyty symbolů v přepisovaném slově, které lze přepsat, jsou v každém kroku odvození přepsány. Algoritmus stále ještě není použitelný na kolonie, kde v některých krocích odvození zůstávají nepřepsané (čekající) symboly. Použitelnost algoritmu po kroku 1
KROK 3 S Některý výskyt symbolu S j S má zůstat nepřepsán: Krok 2 [S j,t,v] à t je počet kroků (dvojkroků vytvářené kolonie), po které bude symbol čekat, à v je počet symbolů [S j,t,v] pro určité S j a t, při změně t se v může zvýšit. [S j,-,-] pro symboly, které budou čekat déle, než chceme zachytit číslem t (zde použijeme tyto symboly pro t > k). Například [A,1,2], [A,3,1] S Pro symboly S i S vytvoříme navíc symboly [S i,-,-] pro případ, že je ve větné formě více výskytů tohoto symbolu.
Ukázka derivace: Kolonie C 5wp : w 0 = BBC, R = {(A, {a, aBC, BCa}), (A, {b}), (B, {AA}), (C, {AAA}) }, S S = {A}, k = 2. BBC S 0 sp [B,-,-]BCXX sp [B,-,-]'B'C'([A,0]') 3 Y wp BAAAAA wp AAaAbAA wp bAaAbAa wp baaAbba wp baabbba sp... sp BA (2) [A,2][A,-,-]A (2) [A,2][A,2,1][A,1,1]XX sp B'A (2,1) [A,2]'[A,-,-]'A (2,1) [A,2]'[A,2,1]'[A,1,1]'[A,2]'Y sp A (2) [A,2][A,1,2]a[A,2,1]b[A,1,2]A (2) [A,2]XX sp A (2,1) [A,2]'[A,1,2]'a[A,2,1]'b[A,1,2]'A (2,1) [A,2]'[A,2]'Y sp bA (2) [A,2]a [A,1,1]bA (2) [A,2]aXX sp bA (2,1) [A,2]'a [A,1,1]'bA (2,1) [A,2]'a[A,2]')Y sp baaA (1) [A,1]bbaXX sp baaA (1,2) [A,1]'bba([A,1]') 2 Y sp baabbbaXX sp baabbba
Celá derivace Celá derivace v kolonii C 5sp : S 0 sp [B,-,-]BCXX sp [B,-,-] 'B'C'([A,0]') 3 Y sp BA (2) [A,2][A,-,-]A (2) [A,2][A,2,1][A,1,1]XX sp B'A (2,1) [A,2]'[A,-,-]'A (2,1) [A,2]'[A,2,1]'[A,1,1]'[A,2]'Y sp A (2) [A,2][A,1,2]a[A,2,1]b[A,1,2]A (2) [A,2]XX sp A (2,1) [A,2]'[A,1,2]'a[A,2,1]'b[A,1,2]'A (2,1) [A,2]'[A,2]'Y sp bA (2) [A,2]a[A,1,1]bA (2) [A,2]aXX sp bA (2,1) [A,2]'a[A,1,1]'bA (2,1) [A,2]'a[A,2]')Y sp baaA (1) [A,1]bbaXX sp baaA (1,2) [A,1]'bba([A,1]') 2 Y sp baabbbaXX sp baabbba Celá derivace v kolonii C 5wp : BBC wp BAAAAA wp AAaAbAA wp bAaAbAa wp baaAbba wp baabbba
Komponenty: R = { (A, {a, aBC, BCa}), (A, {b}), (B, {AA}), (C, {AAA}) }, S w 0 = BBC, S = {A}, k = 2 (A (1,1), {a, aBC, a[B,-,-]C, aB[C,-,-], a[B,-,-][C,-,-], (A (1,2), {b}), BCa, [B,-,-]Ca, B[C,-,-]a, [B,-,-][C,-,-]a}), (A (2,1), {a, aBC, a[B,-,-]C, aB[C,-,-], a[B,-,-][C,-,-], (A (2,1), {b}), BCa, [B,-,-]Ca, B[C,-,-]a, [B,-,-][C,-,-]a}), ([A,1]', { }) 2x, ([A,1]', {X}), ([A,1,1], {[A,1,1]'}), ([A,1,2], {[A,1,2]'}) 2x, ([A,1], {[A,1]'}), ([A,1,1]', {A (1) [A,1], A (2) [A,2]}), ([A,1,2]', {A (1) [A,1], A (2) [A,2]}) 2x, ([A,-,-], {[A,-,-]'}), ([A,-,-]', {[A,-,-],[A,2,1],[A,1,2]}), (A (1), {A (1,1),A (1,2) }), (A (2), {A (2,1) }) 2x, ([A,2], {[A,2]'}) 2x, ([A,2]', { }) 2x, ([A,2]', {X}),([A,0]', { }) 2x, ([A,0]', {X}), ([A,2,1], {[A,2,1]'}), ([A,2,2], {[A,2,2]'}) 2x, (X, {([A,0]') 3 Y, ([A,1]') 2 Y, [A,2]'Y, }), (X, { }), (Y, { }), ([A,2,1]', {[A,1,1],[A,1,2]}), ([A,2,2]', {[A,1,2]}) 2x,
další komponenty (B', {A (2) [A,2]A (2) [A,2], [A,-,-][A,-,-], A (2) [A,2][A,1,1], A (2) [A,2][A,1,2],..., A (2) [A,2][A,-,-], [A,1,1]A (2) [A,2], [A,1,2]A (2) [A,2],..., [A,-,-]A (2) [A,2], [A,1,1][A,2,1], [A,1,1][A,2,2], [A,1,2][A,1,2], [A,1,2][A,2,1], [A,1,2][A,2,2], [A,2,1][A,1,1], [A,2,1][A,1,2], [A,2,2][A,1,1], [A,2,2][A,1,2], [A,2,2][A,2,2], [A,-,-][A,1,1], [A,-,-][A,1,2], [A,-,-][A,2,1], [A,-,-][A,2,2], [A,1,1][A,-,-], [A,1,2][A,-,-], [A,2,1][A,-,-], [A,2,2][A,-,-]}), (B, {B'}),([B,-,-], {[B,-,-]'}),([B,-,-]', {B}), (S 0, {[B,-,-]BCXX, B[B,-,-]CXX}) (C, {C'}),([C,-,-], {[C,-,-]'}),([C,-,-]', {C}), (C', {obdobně, všechny použitelné variace s opakováním délky 3})
Proč je nutné řešit čekající symboly tak složitě: Kdybychom použili místo [A,t,v] a [A,-,-] například pouze symboly A (tedy nerozlišovali bychom různé doby čekání), pak by byly zablokovány derivace některých slov do jazyka patřících. Možnosti: 1) více komponent pro A, A' nebezpečí zablokování správných slov (pokud bude výskytů symbolu A například o 1 více než je těchto komponent, v pomocném kroku je derivace zablokována) 2) jediná komponenta pro A, jediná komponenta pro A' pokud z čekajících má být více přepsáno v následujícím kroku, nestačíme z nich vytvořit A (p) [A,p]. S 0 sp BCXX sp B'C'([A,0]') 3 Y sp A (2) [A,2]AAA (2) [A,2]AXX sp A (2,1) [A,2]'A'A'A (2,1) [A,2]'A'[A,2]'Y sp aBCAA (2) [A,2]bA (2) [A,2]XX... Na toto jediná komponenta nestačí
Použitelnost algoritmu po kroku 2: Kolonie po aplikaci algoritmu po krok 2 včetně generuje již všechna slova patřící do jazyka původní kolonie a blokuje generování slov do tohoto jazyka nepatřících, s výjimkou: S pokud pro nějaký symbol S j S použijeme v přepisovaném slově pouze symboly [S j,t,v], resp. [S j,-,-] (čekající), ale žádný symbol S j (k). Například: R = { (B, {AAB', }), (B', {AAB}), (A, {a}), (A, {b}) }, w 0 = B, L = {ab, ba}* Možnost derivace v původní kolonii nepřípustné: B AAB' AAAAB aAAbAAB' aabbAAAAB … Použitelnost algoritmu po kroku 2
Řešení : Čekající symboly nebudou zablokovány, pokud se ve slově nacházejí symboly [S j,k]'. Krok 3 Upravíme existující komponenty: ([S j,k]', { })..., ([S j,k]', { }) ([S j,k]', {X Sj }) ([S j,1,v]', {S j (v) [S j,v], …, S j (k) [S j,k]}) ([S j,t,v]', {[S j,t-1,v], [S j,t-1,v+1], …, [S j,t-1,k]}) - pro všechna t > 1 ([S j,1,v]', {S j (v) [S j,v][S j,1,-], …, S j (k) [S j,k][S j,1,-]}) ([S j,t,v]', {[S j,t-1,v][S j,t,-], [S j,t-1,v+1][S j,t,-],…,[S j,t-1,k][S j,t,-]}) - pro všechna t > 1, vždy jen jediná komponenta ([S j,k]', { ,[S j,1,-]}) ([S j,k]', { ,[S j,2,-]})..., ([S j,k]', { ,[S j,k,-]}) ([S j,k]', {X Sj, [S j,-]X Sj }) S Pro každé S j S přidáme nové komponenty: ([S j,t,-], { }) 2x pro každé t: 1 t k ([S j,-], { }) 2x
S Pro každé S i S přidáme nové komponenty ([S i,-], { }) 2x Upravíme existující komponenty: ([S i,-,-], {[S i,-,-]'}) (S i, {S i '}) ([S i,-,-], {[S i,-,-]'[S i,-]}) (S i, {S i ', S i '[S i,-]}) Tedy v předchozím příkladu přidáme ([B,-], { }) 2x ([C,-], { }) 2x Upravíme ([B,-,-], {[B,-,-]'[B,-]}) ([C,-,-], {[C,-,-]'[C,-]}) (B, {B', B'[B,-]}) (C, {C', C'[B,-]})
L = {a n b n c n ; n 1} COL sp – COL wp C sp = ({A, B, C, A', B', C', D, a, b, c}, {a, b, c}, R) w 0 = ABC, R = { (A, {aA', aD}), (B, {bB', bD}), (C, {cC', cD}), (A', {A}), (B', {B}), (C', {C}), (D, { }), (D, { }), (D, { }) }. Doplnění vztahu
Sporem: L COL wp, pak musí existovat kolonie C wp generující tento jazyk a kolonie C sp ', která by byla obrazem této kolonie podle uvedeného alogoritmu. Nejdřív sestrojíme C sp '. Odvození v kolonii C sp ' : S 0 * a i A b i B c i C XX a i A' 'b i B' 'c i C' '([0]') 4 Y a i+1 D (3) [3] ''b i+1 D (3) [3] ''c i+1 D (3) [3] ''XX a i+1 D (3,1) [3]' '''b i+1 D (3,1) [3]' '''c i+1 D (3,1) [3]' '''[3]'Y a i+1 b i+1 c i+1 XX a i+1 b i+1 c i+1 Proto existují komponenty (D (3,1), { }), (D (3,1), { }), (D (3,1), { }), dále (D (2,1), { }),... Rekonstruujeme kolonii C wp : (D,{ }) 3-krát, (A, {a a, aD}), (B, {bD b, bD}),(C, {cD c, cD}), … ABC * a i D a b i D b c ... L SPOR, ztratili jsme možnost synchronizace tří částí slova
Závěrem Důsledkem práce je vztah COL wp COL sp
Závěrem Děkuji za pozornost.