Gramatyki grafowe
Transkrypt
Gramatyki grafowe
Gramatyki grafowe Def. Nieskierowany NL-graf (etykietowane wierzchołki) jest czwórką g = (V, E, Σ, ϕ), gdzie: • V – niepusty zbiór wierzchołków, • E ⊆ V × V – zbiór krawędzi, • Σ - skończony, niepusty alfabet etykiet wierzchołkowych, • ϕ: V → Σ - funkcja etykietowania wierzchołków. Dla v ∈ V, ϕ(v) – etykieta v. Klasa grafów nad Σ - GΣ. Dla g = (V, E, Σ, ϕ) – graf nieetykietowany zwany grafem podstawowym h = (V, E) otrzymujemy przez usunięcie etykiet wierzchołkowych, oznaczamy und(h) (underlying graph). Def. Gramatyka grafowa jest piątką G= (V, Σ, P, C, X), gdzie: • V – alfabet ogólny gramatyki, • Σ – alfabet terminalny, • P – zbiór produkcji • C – transformacja osadzenia, • X ∈ GΣ – graf początkowy zwany aksjomatem. Def. Produkcja gramatyki grafowej jest uporządkowaną parą π=(α,β), α- lewa strona π, β- prawa strona π, (α→β) Przepisanie w grafie g za pomocą produkcji α → β: 1) znaleźć podgraf α’ w g izomorficzny z α (α’ musi być podgrafem indukowanym przez wierzchołki α’ tzn. jeśli wierzchołki x, y ∈ α’ i (x,y) jest krawędzią g to (x,y)∈ α’) α’ – graf matka, 2) ustalić obszar osadzenia (embedding area) – podzbiór wierzchołków reszty grafu. ZaleŜy on od rozwaŜanej gramatyki – wierzchołki, które będą połączone z wstawianym grafem, 3) usunąć α’ z g (wraz krawędziami incydentnymi z wierzchołkami α’), 4) zastąpić α’ przez β’ izomorficzny z β. β’ – graf córka. Wierzchołki β’ muszą być rozłączne z wierzchołkami g-α’ (aby uniknąć niewłaściwej identyfikacji), 5) osadzić β’ w g-α’ poprzez dodanie krawędzi pomiędzy niektórymi wierzchołkami β’ i obszaru osadzenia. Osadzenie zaleŜy od typu uŜywanej gramatyki grafowej Def. g bezpośrednio wyprowadza h za pomocą π, g ⇒ h, jeśli h jest otrzymywane z g w 5 powyŜszych krokach. Def. P- zbiór produkcji, g wyprowadza h za pomocą P ⇔ albo g=h albo ∃ n ≥ 1 i ciąg grafów g0, g1,…, gn, taki, Ŝe g0 = g, gn = h i ∀ 1 ≤ i ≤ n, gi-1 bezpośrednio generuje gi za pomocą πi ∈ P (g ⇒* h). W takiej gramatyce grafowej nie ma warunków stosowalności, czyli kaŜdy podgraf g izomorficzny z lewą stroną produkcji moŜe być grafem matką. Wywód jest sekwencyjny, w bezpośrednim wyprowadzeniu przepisywany jest tylko jeden podgraf g. Np. π1: Osadzenie: dodajemy krawędź (x,y), x ∈ β’, y ∈ EA ⇔ x i y są stopnia trzeciego i mają tę samą etykietę. Gramatyka grafowa NLC (node-label controlled) jest gramatyką grafową gdzie: 1) lewa strona produkcji jest grafem jednowierzchołkowym, 2) obszar osadzenia – wszystkie wierzchołki reszty grafu incydentne z grafem matką, 3) osadzenie określone poprzez binarną relację C na zbiorze etykiet wierzchołków (connection relation). Dla kaŜdej pary etykiet (σ , σ ) ∈ C dodawana jest krawędź (x, y) pomiędzy kaŜdym wierzchołkiem x grafu wstawianego etykietowanym σ i kaŜdym wierzchołkiem y obszaru osadzenia etykietowanym przez σ . Produkcję moŜemy zapisać jako: σ → β, gdzie σ - etykieta wierzchołka lewej strony (lewa strona ma tylko jeden wierzchołek). Gramatyka NLC – wybór grafu matki i ustalenie krawędzi osadzenia zaleŜy tylko od etykiet wierzchołków. 1 2 1 2 Def. NLC gramatyka grafowa jest systemem G=(Σ, ∆, P, C, Z), gdzie: • Σ - skończony niepusty zbiór zwany alfabetem ogólnym, • ∆ - niepusty podzbiór Σ zwany alfabetem terminalnym, • P – skończony zbiór produkcji będących parami postaci (σ, α), σ ∈ Σ, α ∈ GΣ, • C – podzbiór Σ × Σ - relacja połączeń, • Z ∈ GΣ - aksjomat. Język generowany przez NLC gramatykę grafową. Def. G=(Σ, ∆, P, C, Z) – gramatyka grafowa NLC. 1) Język wyczerpujący dla G: S(G) = {g ∈ GΣ| Z ⇒* g} 2) Język terminalny dla G: L(G) = {g ∈ G∆| Z 3) Język spójny dla G: Lcon(G) = {g ∈ G∆| Z * g i g jest spójny} 4) Nieetykietowany język dla G: und(L(G)) = {und(g)| g ∈ L(G)} ⇒ ⇒* g} Np. Gramatyka NLC G=(Σ, ∆, P, C, Z), gdzie: ∆ = {a, a’, b, b’, c, c’, d, d’}, Σ = {S, S’} ∪ ∆, P i C jak w poprzednim przykładzie, Z = g z poprzedniego przykładu. Ograniczony przypadek przepisywania wierzchołków: graf usuwany składa się tylko z jednego wierzchołka. Jeśli osadzenie wykonane jest takŜe w sposób lokalny (poprzez połączenie grafu wstawianego z wierzchołkami pozostałej części, które są blisko usuwanego wierzchołka) to jest to lokalna transformacja grafowa. Gramatyki grafowe oparte na przepisywaniu wierzchołków – iteracja transformacji lokalnych prowadzi do globalnej transformacji grafu. Zastępowanie wierzchołków definiuje skończony zbiór produkcji, a mechanizm osadzenia – skończona liczba instrukcji połączeń. Produkcje i instrukcje łączone są w reguły przepisywania. KaŜda taka reguła składa się z jednej produkcji i skończonej liczby instrukcji połączeń. Gramatyki NLC – przepisywane są nieskierowane grafy o etykietowanych wierzchołkach. Proces przepisywania jest lokalny (w osadzeniu rozwaŜane są tylko wierzchołki sąsiednie dla usuwanego wierzchołka). Instrukcje połączeń są uporządkowanymi parami – relacja połączeń ((δ, µ) – stwórz krawędź między kaŜdym wierzchołkiem wstawianego grafu o etykiecie δ i kaŜdym wierzchołkiem o etykiecie µ w sąsiedztwie usuwanego wierzchołka). Np. Produkcja: Osadzenie {(a,c), (b,b), (A, b)} Niech ciąg α1,...,αn, αi ∈ ∆ (terminalne), n ≥ 1 – oznacza nieskierowany graf etykietowany wierzchołkowo z wierzchołkami x1,...,xn i krawędziami {xi, xi+1}, 1 ≤ i ≤ n-1, gdzie xi ma etykietę αi ∀1 ≤ i ≤ n. α ∈ ∆ oznacza graf jednowierzchołkowy z etykietą α. Np. G=(Σ, ∆, P, C, Z), L(G)= {(abc)+ z krawędziami między wszystkimi wierzchołkami o etykiecie b}. Σ = {A, a, b, c}, ∆ = {a, b, c}, C= {(a,c),(b,b),(A,b)}, Z = A, P: produkcja powyŜsza i A → abc. Pośrednie wyprowadzane grafy mają postać (abc)*A z dodatkowymi krawędziami między wszystkimi wierzchołkami A i b. Gramatyka grafowa NLC jest bezkontekstowa, reguły działają lokalnie (jeden wierzchołek po lewej stronie) i nie ma predykatów stosowalności. Ogólnie nie posiada jednak (w przeciwieństwie do ciągowych gramatyk bezkontekstowych) własności zapewniającej, Ŝe wynik wywodu jest niezaleŜny od kolejności stosowania produkcji (własność ta zapewnia istnienie drzew wywodu odzwierciedlających rekursywną naturę gramatyk bezkontekstowych). Gramatyka grafowa posiadająca tę własność jest gramatyką „niezaleŜną od kolejności”. Np. Graf początkowy S, S → AB, A → a, B → b. Jako gramatyka ciągowa ma 1 drzewo wywodu. L(G)={ab}. Niech C={(a,B), (b, a)}. L(G) = {ab, g}, g jest grafem z dwoma wierzchołkami bez krawędzi. g powstaje jeśli najpierw zastosujemy B → b, a potem A → a, ab – jeśli zastosujemy produkcje w odwrotnej kolejności. Jedno drzewo wyprowadzenia, ale dwa sposoby przechodzenia po nim. NiezaleŜność od porządku jest własnością rozstrzygalną. MoŜna nałoŜyć na gramatykę ograniczenia zapewniające tę niezaleŜność. Np. ograniczenie „graniczne” Gramatyka grafowa B-NLC – nie ma dwóch wierzchołków o etykietach nieterminalnych połączonych krawędzią (w grafie początkowym i prawych stronach produkcji). Gramatyka generująca język {(abc)+ z krawędziami między wszystkimi wierzchołkami o etykiecie b} jest gramatyką B-NLC a nawet jest liniowa (tylko jeden nieterminal). Cecha gramatyki NLC: jeśli w wywodzie dostaniemy graf pośredni z wierzchołkami x i y nie połączonymi krawędzią to w dalszym procesie wywodu Ŝaden wierzchołek pochodzący od x nigdy nie będzie połączony z Ŝadnym wierzchołkiem pochodzącym od y. Połączenia mogą być usuwane ale nie ponownie dodawane. Gramatyka B-NLC zapewnia, Ŝe w kaŜdym grafie pośrednim wierzchołki o etykietach nieterminalnych nie są połączone - stąd wywód nie zaleŜy od kolejności stosowania produkcji. Rozszerzenia gramatyk grafowych 1) Odwołanie w instrukcji połączeń do poszczególnych wierzchołków prawych stron produkcji. Instrukcja ma postać (x, µ), x – wierzchołek prawej strony ma być połączony z wierzchołkami etykietowanymi przez µ w sąsiedztwie usuwanego wierzchołka. Np. Zastępujemy wierzchołek m grafem: moŜemy mieć (x,b) albo (y,b) (choć x i y mają taką samą etykietę). Taka gramatyka to NCE gramatka grafowa (neighbourhood controlled embedding) – lokalny proces osadzenia. NCE gramatyka generuje taką samą klasę języków grafowych jak gramatyka NLC. Def. NCE gramatyka grafowa jest systemem G = (Σ, ∆, Z, R), gdzie: • Σ, ∆, Z – zdefiniowane jak poprzednio, • R – skończony zbiór reguł postaci (A → d, C), gdzie A → d – produkcja, C – relacja połączenia dla d, czyli C ⊆ Vd × Σ, Vd - zbiór wierzchołków d. 2) Rozszerzamy dziedzinę przepisywania grafów na grafy skierowane i grafy posiadające etykietowane krawędzie. Graf skierowany – zamiast relacji połączeń C uŜywamy dwóch relacji połączeń Cin, Cout dla krawędzi wchodzących i wychodzących z usuwanego wierzchołka. Instrukcja (δ, µ) ∈ Cout oznacza, Ŝe osadzenie powinno wprowadzić krawędź od kaŜdego wierzchołka o etykiecie δ wstawianego grafu do kaŜdego wierzchołka o etykiecie µ w sąsiedztwie usuwanego wierzchołka m, do którego dochodziła krawędź z m. (δ, µ) ∈ Cin – nowa krawędź od kaŜdego wierzchołka µ w sąsiedztwie usuwanego wierzchołka m, od którego dochodziła krawędź do m, do kaŜdego wierzchołka δ w nowym grafie. Gramatyka zachowuje skierowanie, krawędzie wchodzące do wierzchołka m są zastępowane krawędziami wchodzącymi do grafu d, a wychodzące z m – wychodzącymi z grafu d. Skierowanie krawędzi i ich etykietowanie w grafie pozwala rozróŜniać wierzchołki o takich samych etykietach naleŜące do sąsiedztwa m. Np. Zastępując m, proces osadzenia moŜe róŜnić wierzchołki x i y gdyŜ prowadzące do nich krawędzie mają róŜne etykiety (nie moŜna rozróŜniać po nazwach wierzchołków bo nie wiadomo ile ich będzie). W ten sposób sąsiedztwo m moŜna podzielić na kilka róŜnych typów, w zaleŜności od etykiet krawędziowych. Osadzenie moŜe zmieniać typ tego sąsiedztwa. Instrukcja połączenia postaci (δ, q, µ, p), gdzie q i p są etykietami krawędzi a δ i µ etykietami wierzchołków oznacza, Ŝe osadzenie powinno wprowadzić krawędź etykietowaną q między kaŜdym wierzchołkiem o etykiecie δ wstawianego grafu i wierzchołkiem o etykiecie µ w sąsiedztwie m połączonego z µ krawędzią etykietowaną p (p-sąsiedztwo). Mamy gramatyki dNLC, eNLC, edNLC , d – oznacza grafy skierowane, e – osadzenie sterowane przez etykiety krawędziowe.