metoda_2013
.pdfТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР
множеством правил. Множество цепочек, символов называется формальным языком.
Формальная грамматика - это набор грамматических правил, с помощью которых можно порождать и анализировать цепочки формального языка.
Вграмматике имеются определенные правила, содержащие информацию о том, как из этих символов можно строить предложения языка.
Вобщем виде правила грамматики можно записать :
<нетерминал>: <любая_конечная_цепочка_терминальных_и_нетерминальных_с имволов> <нетерминал>: <цепочка_терминалов>
<нетерминал>: ε (Эпсилон - правило)
Контекстно – свободная грамматика (КСГ) задаётся:
конечное множество терминальных символов;
конечное множество нетерминальных символов;
конечное множество правил вывода:
вида : <A> α, где А- нетерминал, α –цепочка
нетерминальных и терминальных символов (возможно пустая) или цепочка терминальных символов;
нетерминал А называется левой частью правила, а α – правой;
аксиома грамматики – один нетерминальный символ,
выделенный в качестве начального; Правила грамматики задают способы подстановки цепочек.
Подстановка осуществляется заменой нетерминального символа в заданной цепочке на правую часть правила, левой частью которого является такой нетерминал.
Пример: SaAbS Sb ASac
A ε, где < S > - начальный символ, {A,S} – множество нетерминальных символов, {a,b,c} - множество терминальных символов
Основные понятия теории формальных языков и грамматики.
Язык, задаваемый грамматикой, есть множество терминальных цепочек, которые можно вывести из начального символа грамматики.
430
ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР
Для каждого дерева существует единственный правый или левый выводы, т.е. вывод, когда на каждом шаге заменяется самый левый или правый нетерминальный символ.
Цепочке языков может соответствовать более чем одно дерево. Т.к. она может иметь разные выводы, порождающие разные деревья. Если одна цепочка имеет несколько деревьев вывода, следует, что соответствующая грамматика неоднозначна.
V – алфавит терминальных символов.
V* – множество всех конечных слов или цепочек в алфавите V. Формальный язык L над алфавитом V - это произвольное подмножество множества V*, то есть L(V)V Є V*
Конструктивное описание формального языка осуществляется с помощью формальных систем, называемых формальными порождающими грамматиками.
1)Формальной порождающей грамматикой G – формальная система, описываемая с помощью четырёх формальных объектов{V, W, P, S}
где V – словарь терминал. сим-в; W – словарь нетерминал. сим-в , причём V ∩ W = Ø; P – множество правил вида φ -> ψ, где φ и ψ Є (V U W)*; S- аксиомы грамматики.
2)Цепочка β выводится из цепочки α, если они представимы в виде:
β = α φ δ α = λ ψ δ и в грамматике существует правило вида ψ ->
φ.
3)Цепочка β называется выводимой из α, если существует конечная цепочка вывода: α ->ξ0; ξ0 -> ξ1; ξ1-> ξ2; …, ξn -> β, где ξi – цепочка нетерминальных символов Є (V* U W*).
α ->G β: β выводима из α в грамматике G.
4)Языком L , порождаемым грамматикой G, называется множество всех цепочек, выводимых из аксиомы грамматики.
5)Грамматики G1 и G2 эквивалентны, когда они порождают один и тот же язык.
Операции над языками.
Пусть L0 - язык, заданный грамматикой G0={V0, W0, R0, I0}, a Є V0;
L1язык, заданный грамматикой G1={V1, W1, R1, I1};
1. Подстановка.
Подстановка языка L в L0 вместо символа а–операция, сопоставляющая языкам L0 и L1 язык L=L0 (а->L1), состоящий из всех цепочек языка L0, в которых вместо символа а подставлена некоторая цепочка из L1.
Пример:
431
ТЕОРИЯ ВЫЧИСЛИТЕЛЬHЫХ ПРОЦЕССОВ И СТРУКТУР |
|
|
L=L0(a->L1) |
|
|
L=L0(a1->L1, a2->L2…ak->Lk) |
|
|
L0=(a,(a+a), (a+a+a) ) |
|
|
L1=(b, bb, bbb ) |
|
|
L=(b,bb,…,b+b,(b+b+b)…) |
|
|
2.Конкатенация. |
|
|
Конкатенация языков L0 |
и L1это операция, сопоставляющая |
|
языки L0 и L1 языку |
L, который |
состоит из цепочек, |
представляющих собой парное сцепление цепочек языков L0 и
L1.
Пример:
L0=(a,(a+a),…) L1=(b, bb, …)
L=L0L1={ab, abb,…, (a+a)b, (a+a)bb…}
Введем обозначение кратной конкатенации
L&L= L^2; L&L&L= L^3; …
3. Итерация.
Язык L*, его подмножество будет определяться равенством
L* = [ ε ] U L U L2 U .. U Ln = { ε } U n i=1 Li
Замечание: не следует смешивать язык, содержащий ε (пустую цепочку), с пустым языком, не содержащим ни одной цепочки. ε – не есть отсутствие правил. Язык, содержащий ε – не пустой.
2. Двоичное кодирование переменных и функций трехзначной логики
Для описания дискретных устройств, наряду с булевой логикой применяются такие, у которых аргументы и сами функции принимают значения из множества, содержащего k-элементов. k:
(0,1, … k-1)
Определение: функция, принимающая значения от 0 до k-1, аргументы которой также принимают значения из этого множества, называется функцией k-значной логики. Булева функция - функция двухзначной логики.
В k-значной логике выделяется ряд элементарных функций, например:
1) |
квазиконьюнкция |
& min(x1, x2 ) |
|
|
|
|
|
|
|
2) |
квазидизъюнкция |
|
max( x1 , x2 ) |
|
3) |
сумма по модулю k |
|
{x1 x2}mod |
k |
4) |
произведение по модулю k |
{x1 x2}mod |
k |
432