Основная грамматика

редактировать
концепция в обобщенном контексте свободная грамматика

Головная грамматика (HG) - это грамматический формализм, представленный в Карла Полларда (1984) как расширение контекстно-свободной грамматики класса грамматик. Таким образом, основная грамматика является разновидностью грамматики структуры фраз , в отличие от грамматики зависимостей. Класс грамматик заголовков является подмножеством линейных систем контекстно-свободной перезаписи.

Один из типичных способов определения грамматик заголовков - заменить терминальные строки CFG индексированными терминальными строками, где индекс обозначает "заголовок" слово строки. Так, например, правило CF, такое как A → abc {\ displaystyle A \ to abc}A \ to abc , может вместо этого быть A → (abc, 0) {\ displaystyle A \ to ( abc, 0)}A \ to (abc, 0) , где 0-й терминал, a, является заголовком результирующей терминальной строки. Для удобства записи такое правило может быть записано как просто терминальная строка, с головным терминалом, обозначенным какой-то меткой, как в A → a ^ bc {\ displaystyle A \ to {\ widehat {a} } bc}A \ to \ widehat {a} bc .

Затем ко всем правилам перезаписи добавляются две основные операции: упаковка и конкатенация.

Содержание
  • 1 Операции над заголовками
    • 1.1 Обертывание
    • 1.2 Конкатенация
    • 1.3 Форма правил
  • 2 Пример
  • 3 Формальные свойства
    • 3.1 Эквивалентности
  • 4 Ссылки
Операции со строками с заголовками

Обертывание

Обертывание - это операция над строками с двумя заголовками, определенными следующим образом:

Пусть α x ^ β {\ displaystyle \ alpha {\ widehat {x}} \ beta}\ alpha \ widehat {x} \ beta и γ y ^ δ {\ displaystyle \ gamma {\ widehat {y}} \ delta}\ gamma \ widehat {y} \ delta быть конечными строками с заголовком на x и y соответственно.

вес (α x ^ β, γ y ^ δ) знак равно α x γ y ^ δ β {\ displaystyle w (\ alpha {\ widehat {x}} \ beta, \ gamma {\ widehat {y}} \ delta) = \ alpha x \ gamma {\ widehat {y}} \ delta \ beta}w (\ alpha \ widehat {x} \ beta, \ gamma \ widehat {y} \ delta) = \ alpha x \ gamma \ widehat {y} \ delta \ beta

Конкатенация

Конкатенация - это семейство операций над n>0 строками с заголовком, определенное для n = 1, 2, 3 следующим образом:

Пусть α x ^ β {\ displaystyle \ alpha {\ widehat {x}} \ beta}\ alpha \ widehat {x} \ beta , γ y ^ δ {\ displaystyle \ gamma {\ widehat { y}} \ delta}\ gamma \ widehat {y} \ delta и ζ z ^ η {\ displaystyle \ zeta {\ widehat {z}} \ eta}\ zeta \ widehat {z} \ eta быть конечными строками, возглавляемыми x, y, и z соответственно.

c 1, 0 (α x ^ β) = α x ^ β {\ displaystyle c_ {1,0} (\ alpha {\ widehat {x}} \ beta) = \ alpha {\ widehat {x}} \ beta}c _ {{1,0}} (\ alpha \ widehat {x} \ beta) = \ alpha \ widehat {x} \ beta

с 2, 0 (α x ^ β, γ y ^ δ) = α x ^ β γ y δ {\ displaystyle c_ {2,0} (\ alpha {\ widehat {x}} \ beta, \ gamma {\ widehat {y}} \ delta) = \ alpha {\ widehat {x}} \ beta \ gamma y \ delta}c _ {{2,0}} (\ alpha \ widehat {x} \ beta, \ gamma \ widehat {y} \ delta) = \ alpha \ widehat {x} \ beta \ gamma y \ delta

c 2, 1 (α x ^ β, γ y ^ δ) = α Икс β γ Y ^ δ {\ Displaystyle c_ {2,1} (\ alpha {\ widehat {x}} \ beta, \ gamma {\ widehat {y}} \ delta) = \ alpha x \ beta \ gamma { \ widehat {y}} \ delta}c _ {{2,1}} (\ alpha \ widehat {x} \ beta, \ gamma \ widehat {y} \ delta) = \ alpha x \ beta \ gamma \ widehat {y} \ delta

с 3, 0 (α x ^ β, γ y ^ δ, ζ z ^ η) = α x ^ β γ y δ ζ z η {\ displaystyle c_ {3, 0} (\ alpha {\ widehat {x}} \ beta, \ gamma {\ widehat {y}} \ delta, \ zeta {\ widehat {z}} \ eta) = \ alpha {\ widehat {x}} \ бета \ гамма y \ дельта \ дзета z \ эта}c _ {{3,0}} (\ alpha \ widehat {x} \ beta, \ gamma \ widehat {y} \ delta, \ zeta \ widehat {z} \ eta) = \ alpha \ widehat { x} \ beta \ gamma y \ delta \ zeta z \ eta

с 3, 1 (α x ^ β, γ y ^ δ, ζ z ^ η) = α x β γ y ^ δ ζ z η {\ displaystyle c_ {3,1} (\ alpha {\ widehat {x}} \ beta, \ gamma {\ widehat {y}} \ delta, \ zeta {\ widehat {z}} \ eta) = \ alpha x \ beta \ gamma {\ widehat {y}} \ delta \ zeta z \ eta}c _ {{3,1}} (\ alpha \ widehat {x} \ beta, \ gamma \ widehat {y} \ delta, \ zeta \ widehat {z} \ eta) = \ alpha x \ beta \ gamma \ widehat {y} \ delta \ zeta z \ eta

c 3, 2 (α x ^ β, γ y ^ δ, ζ z ^ η) = α x β γ y δ ζ z ^ η { \ дис стиль игры c_ {3,2} (\ alpha {\ widehat {x}} \ beta, \ gamma {\ widehat {y}} \ delta, \ zeta {\ widehat {z}} \ eta) = \ alpha x \ beta \ gamma y \ delta \ zeta {\ widehat {z}} \ eta}c _ {{3,2}} (\ alpha \ widehat {x} \ beta, \ gamma \ widehat {y} \ delta, \ zeta \ widehat {z} \ eta) = \ alpha x \ beta \ gamma y \ delta \ zeta \ widehat {z} \ eta

И так далее для см, n: 0 ≤ n < m {\displaystyle c_{m,n}:0\leq nc _ {{m, n}}: 0 \ leq n <m . Можно резюмировать шаблон здесь просто как «объединить некоторое количество терминальных строк m с заголовком строки n, обозначенным как заголовок результирующей строки».

Форма правил

Правила основной грамматики определяются в терминах этих двух операций, причем правила принимают любую из форм

X → w (α, β) {\ displaystyle X \ вес (\ альфа, \ бета)}X \ to w (\ alpha, \ beta)

Икс → см, n (α, β,...) {\ Displaystyle X \ к c_ {м, n} (\ альфа, \ бета,...) }X \ to c_ {{m, n}} (\ alpha, \ beta,...)

где α {\ displaystyle \ alpha}\ alpha , β {\ displaystyle \ beta}\ beta ,... каждое из них либо конечная строка, либо нетерминальный символ.

Пример

Грамматики заголовка могут генерировать язык {anbncndn: n ≥ 0} {\ displaystyle \ {a ^ {n} b ^ {n} c ^ {n } d ^ {n}: n \ geq 0 \}}\ {a ^ {n} b ^ {n} c ^ {n} d ^ {n}: n \ geq 0 \} . Мы можем определить грамматику следующим образом:

S → c 1, 0 (ϵ ^) {\ displaystyle S \ to c_ {1,0} ({\ widehat {\ epsilon}})}S \ to c _ {{1,0}} ( \ widehat {\ epsilon})

S → c 3, 1 (a ^, T, d ^) {\ displaystyle S \ to c_ {3,1} ({\ widehat {a}}, T, {\ widehat {d}})}S \ to c _ {{3,1}} (\ widehat {a}, T, \ widehat {d})

T → w (S, b ^ c) {\ displaystyle T \ to w (S, {\ widehat {b}} c)}T \ to w (S, \ widehat {b} c)

Вывод для «abcd» следующий:

S {\ displaystyle S}S

c 3, 1 (a ^, T, d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, T, {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, T, \ widehat {d})

c 3, 1 (a ^, вес (S, b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (S, {\ widehat {b}} c), {\ widehat {d}})}c_ {{3,1}} (\ widehat {a}, w (S, \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (c 1, 0 (ϵ ^), b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (c_ {1,0} ({\ widehat {\ epsilon}}), {\ widehat {b}} c), {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, w (c _ {{1,0}} (\ widehat {\ epsilon}), \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, вес (ϵ ^, b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w ({\ widehat {\ epsilon}}, {\ widehat { b}} c), {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, w (\ widehat {\ epsilon}, \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, b ^ c, d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, {\ widehat {b}} c, {\ widehat {d}})}c _ {{3,1 }} (\ widehat {a}, \ widehat {b} c, \ widehat {d})

ab ^ cd {\ displaystyle a {\ widehat {b}} cd}a \ widehat {b} cd

А для "aabbccdd":

S {\ displaystyle S}S

c 3, 1 (a ^, T, d ^) {\ displaystyle c_ {3, 1} ({\ widehat {a}}, T, {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, T, \ widehat {d})

c 3, 1 (a ^, w (S, b ^ c), d ^) {\ displaystyle c_ { 3,1} ({\ widehat {a}}, w (S, {\ widehat {b}} c), {\ widehat {d}})}c_ {{3,1}} (\ widehat {a}, w (S, \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (c 3, 1 (a ^, T, d ^), b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (c_ {3,1} ({\ widehat {a}}, T, {\ widehat {d}}), {\ widehat {b}} c), {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, w (c _ {{3,1}} ( \ widehat {a}, T, \ widehat {d}), \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (c 3, 1 (a ^, w (S, b ^ c), d ^), b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (c_ { 3,1} ({\ widehat {a}}, w (S, {\ widehat {b}} c), {\ widehat {d}}), {\ widehat {b}} c), {\ widehat { d}})}c _ {{3,1}} (\ widehat {a}, w (c _ {{3,1}} (\ widehat {a}, w (S, \ widehat {b} c), \ widehat {d}), \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (c 3, 1 (a ^, w (c 1, 0 (ϵ ^), b ^ c), d ^), b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (c_ {3,1} ({\ widehat {a}}), w (c_ {1,0} ({\ widehat {\ epsilon}}), {\ widehat {b}} c), {\ widehat {d}}), {\ widehat {b}} c), {\ widehat {d}})}c _ {{3, 1}} (\ widehat {a}, w (c _ {{3,1}} (\ widehat {a}, w (c _ {{1,0}} (\ widehat {\ epsilon})), \ widehat {b } c), \ widehat {d}), \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (c 3, 1 (a ^, w (ϵ ^, b ^ c), d ^), b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (c_ {3,1} ({\ widehat {a}}), w ({ \ widehat {\ epsilon}}, {\ widehat {b}} c), {\ widehat {d}}), {\ widehat {b}} c), {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, w (c _ {{3,1}} (\ widehat {a}, w (\ widehat {\ epsilon}, \ widehat {b} c), \ widehat {d}), \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (c 3, 1 (a ^, b ^ c, d ^), b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w (c_ {3,1} ({\ widehat {a}}, {\ widehat {b}} c, {\ widehat {d}}), {\ widehat {b}} c), {\ widehat { d}})}c _ {{3,1}} (\ widehat {a}, w (c _ {{3, 1}} (\ widehat {a}, \ widehat {b} c, \ widehat {d}), \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, w (ab ^ cd, b ^ c), d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, w ( a {\ widehat {b}} cd, {\ widehat {b}} c), {\ widehat {d}})}c _ {3,1}} (\ widehat {a}, w (a \ widehat {b} cd, \ widehat {b} c), \ widehat {d})

c 3, 1 (a ^, abb ^ ccd, d ^) {\ displaystyle c_ {3,1} ({\ widehat {a}}, ab {\ widehat {b}} ccd, {\ widehat {d}})}c _ {{3,1}} (\ widehat {a}, ab \ widehat {b} ccd, \ widehat {d})

aabb ^ ccdd {\ displaystyle aab {\ widehat {b} } ccdd}aab \ widehat {b} ccdd

Формальные свойства

Эквивалентности

Виджай-Шанкер и Вейр (1994) демонстрируют, что линейно проиндексированные грамматики, комбинаторно-категориальные грамматики, смежные с деревом грамматики и главные грамматики являются слабо эквивалентными формализмами, поскольку все они определяют те же строковые языки.

Ссылки
Последняя правка сделана 2021-05-23 04:12:21
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте