Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Пример 5.11. На рис. 5.6 представлен пример дерева с терминальной цепочкой в качестве кроны и стартовым символом в корне. Оно основано на грамматике для выражений (см. рис. 5.2). Крона этого дерева образует цепочку а * (а + 600), выведенную в примере 5.6. В действительности, как мы увидим далее, это дерево разбора представляет порождение данной цепочки. □
Е
![]()
Е
*
Е
![]()
I
Е
![]()
Е
а
+
I
Е
I
![]()
I
а
О
![]()
I
О
4
Рис. 5.6. Дерево разбора для а * (a + b00) в языке для грамматики выражений
5.2.3. Вывод, порождение и деревья разбора
Каждый из способов, определенных ранее для описания работы грамматики, приводит по существу к одним и тем же утверждениям о цепочках. Итак, покажем, что при любой грамматике G = (V, T, P,S) следующие утверждения равносильны.
- Процедура рекурсивного вывода определяет, что цепочка w принадлежит языку переменной/!.
*
3.
- А
=> w. А => w.
w.
Правое порождение
Порождение
Рекурсивный вывод
Рис. 5.7. Доказательство равносильности утверждений о грамматиках
Отметим, что две стрелки весьма просты и не будут обоснованы формально. Если цепочка w имеет левое порождение из А, то она безусловно порождается из А, поскольку левое порождение является порождением. Аналогично, если цепочка w имеет правое порождение, то она имеет и порождение. Приступим к доказательству более трудных шагов описанной равносильности.
1т
4. А
5. Существует дерево разбора с корнем А и кроной w.
В действительности, за исключением использования рекурсивного вывода, определенного только для терминальных цепочек, все остальные условия (существование порождений, левых и правых порождений или деревьев разбора) также равносильны, если w имеет переменные.
Указанные равносильности доказываются в соответствии с планом, приведенным на рис. 5.7. Для каждой стрелки в этой диаграмме доказывается теорема, которая утверждает, что если w удовлетворяет условию в начале стрелки, то удовлетворяет и условию в ее конце. Например, мы покажем в теореме 5.12, что если w принадлежит языку А в соответствии с рекурсивным выводом, то существует дерево разбора с корнем А и кроной w.
Дерево ^^^^ разбора
Левое порождение
5.2.4. От выводов к деревьям разбора
Теорема 5.12. Пусть G = (V, Т, P, S) — КС-грамматика. Если рекурсивный вывод утверждает, что терминальная цепочка w принадлежит языку переменной А, то существует дерево разбора с корнем А и кроной w.
Доказательство. Проведем доказательство индукцией по числу шагов, используемых в выводе того, что w принадлежит языку А.
Базис. Вывод содержит один шаг. В этом случае использован только базис процедуры вывода, и в грамматике должна быть продукция A—>w. В дереве на рис. 5.8 существует лист для каждого символа цепочки w, оно удовлетворяет условиям, налагаемым на дерево разбора для грамматики G, и, очевидно, имеет корень А и крону w. В особом случае, когда w = Ј, дерево имеет только один лист, отмеченный е, и является допустимым деревом разбора с корнем А и кроной w.
Индукция. Предположим, что факт принадлежности w языку переменной А выводится за п + 1 шаг, и что утверждение теоремы справедливо для всех цепочек х и переменных В, для которых принадлежность х языку В была выведена с использованием п или менее шагов вывода. Рассмотрим последний шаг вывода того, что w принадлежит языку А. Этот вывод использует некоторую продукцию для А, например А —> XtX2...Xb где каждый X, есть либо переменная, либо терминал.
Цепочку w можно разбить на подцепочки w, w2. ..Wk, для которых справедливо следующее.
- Если Xj является терминалом, то w, = X,, т. е. w, представляет собой один - единственный терминал из продукции.

- Если X) — переменная, то w, представляет собой цепочку, о которой уже сделан вывод, что она принадлежит языку переменной Xt. Таким образом, этот вывод относительно и>; содержит не более п из п + 1 шагов вывода, что w принадлежит языку А. Этот вывод не может содержать все п+ 1 шагов, поскольку заключительный шаг, использующий продукцию А —>X^-.-Xh, безусловно, не является частью вывода относительно w,. Следовательно, мы можем применить предположение индукции к w, и заключить, что существует дерево разбора с кроной w, и корнем X,.

Рис. 5.8. Дерево, построенное для базиса Рис. 5.9. Дерево, использованное в индуктив - теоремы 5.12 ной части доказательства теоремы 5.12
Далее мы построим дерево с корнем А и кроной w в соответствии с рис. 5.9. Там показан корень с отметкой А и сыновьями X), Х2, ..., Хк. Такой выбор отметок возможен, поскольку Л —> Х, Х2.. .Хк является продукцией грамматики G.
Узел для каждого X, становится корнем поддерева с кроной w,. В ситуации 1, где X, — терминал, это поддерево состоит из одного листа, отмеченного X,. Так как в данной ситуации w,=Xi, условия того, что кроной поддерева является w,, выполнены.
Во второй ситуации X, является переменной. Тогда по предположению индукции существует дерево с корнем X, и кроной w,. Оно присоединяется к узлу для X, (см. рис. 5.9).
Построенное таким образом дерево имеет корень А. Его крона состоит из крон поддеревьев, приписанных друг к другу слева направо, т. е. w = wtw2...wk. □
5.2.5. От деревьев к порождениям
Покажем, как построить левое порождение по дереву разбора (метод построения правого порождения аналогичен и не приводится). Для того чтобы понять, каким образом можно построить левое порождение, сначала нужно увидеть, как одно порождение цепочки из переменной можно вставить внутрь другого порождения. Проиллюстрируем это на примере.
Пример 5.13. Рассмотрим еще раз грамматику выражений (см. рис. 5.2). Нетрудно убедиться, что существует следующее порождение.
Ј=>/=> lb ab
Отсюда для произвольных цепочек а и /3 возможно следующее порождение.
аЕ(3 аф=> alb/3 => aab/3 Доказательством служит то, что головы продукций можно заменять их телами в контексте а и /3 точно так же, как и вне его.14
Например, если порождение начинается заменами Ј=>Ј + Ј=>Ј + (Ј), то можно было бы применить порождение цепочки ab из второго Ј, рассматривая "Ј+(" в качестве а и ")" — Д Указанное порождение затем продолжалось бы следующим образом. Ј+(Ј)=>Ј + (/)=>Ј + (lb) => Ј + (ab)
□
Теперь можно доказать теорему, позволяющую преобразовывать дерево разбора в левое порождение. Доказательство проводится индукцией по высоте дерева, которая представляет собой максимальную из длин путей, ведущих от корня через его потомков к листьям.
Например, высота дерева, изображенного на рис. 5.6, равна 7. Самый длинный из путей от корня к листьям ведет к листу, отмеченному Ь. Заметим, что длины путей обычно учитывают ребра, а не узлы, поэтому путь, состоящий из единственного узла, имеет длину 0.
Теорема 5.14. Пусть G = (V, Т, P, S) — КС-грамматика. Предположим, что существует дерево разбора с корнем, отмеченным А, и кроной w, где we 7*. Тогда в грамматике G
существует левое порождение А => w.
lm
Доказательство. Используем индукцию по высоте дерева.
Базис. Базисом является высота 1, наименьшая из возможных для дерева разбора с терминальной кроной. Дерево должно выглядеть, как на рис. 5.8, с корнем, отмеченным А, и сыновьями, образующими цепочку w. Поскольку это дерево является деревом разбора, А —> w должно быть продукцией. Таким образом, А => w есть одношаговое левое
lm
порождение w из А.
Индукция. Если высота дерева равна п, где п> 1, то оно должно иметь вид, как на рис. 5.9. Таким образом, существует корень с отметкой А и сыновьями, отмеченными слева направоХ/Х2...Хк. Символы Смогут быть как терминалами, так и переменными.
- Если X] — терминал, то определим w, как цепочку, состоящую из одного X,. Если X, — переменная, то она должна быть корнем некоторого поддерева с терминальной кроной, которую обозначим w,. Заметим, что в этом случае высота поддерева меньше п, поэтому к нему применимо предположение индукции. Следовательно,
•
существует левое порождение X, => w,.
lm
Заметим, что w = и>/и^...и>/;..
Построим левое порождение цепочки w следующим образом. Начнем с шага А => Х, Х2. ■ Хк. Затем для / = 1,2,..., к покажем, что имеет место следующее порождение.
lm
*
А => w, w2...wiX^1Xi+2...Xk
lm
Данное доказательство использует в действительности еще одну индукцию, на этот раз по (. Для базиса /'= 0 мы уже знаем, что А => XjX2.. .Х^ Для индукции предположим, что
lm
существует следующее порождение. А WjW2...w./XX,■!■■ Хк
lm
1. Если X,— терминал, то не делаем ничего, но в дальнейшем рассматриваем X, как терминальную цепочку W/. Таким образом, приходим к существованию следующего порождения. .
А w/w2...wjXi4XM...Xk
2. Если Xi является переменной, то продолжаем порождением vv, из X, в контексте уже построенного порождения. Таким образом, если этим порождением является
Xi => а; =» а2... wh
Im 1т 1т
то продолжаем следующими порождениями. Wiw2...wl4XlXi+,...Xk =>
Im
w, w2...wi-, a, Xi4...Xk =»
Im
W, W2... Wi уСЫС - ,...Xk =>
Im
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |


