Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TAiFYA(X-file).doc
Скачиваний:
14
Добавлен:
24.04.2019
Размер:
3.09 Mб
Скачать

1.Операции над словами и языками. Понятие грамматики и грамматического вывода.

В={b1, b2,…bm} - некоторое конечное множество букв.

Слово в алфавите В – произвольная конечная последовательность символов (символы могут повторяться).

α (альфа) = b1, b2,…,bn

| α | - длина слова, число символов (| α | = n).

λ – пустое слово (не содержит ни одной буквы).

| λ |=0 // пустое слово принадлежит множеству всех слов В*.

| α |b – число вхождений буквы b в слово α.

В* - множество всех слов в алфавите В. Это бесконечный язык, если алфавит не пустой, счетное множество.

Язык L – произвольное подмножество множества В. L включ. в В*.

Язык может быть конечным или бесконечным.

Операции над словами.

Пусть есть слово α.

  1. Обращение слова α – αR (буквы в обратном порядке), одноместная операция.

α = 010111, αR = 111010.

  1. Конкатенация обозначается α*β или αβ, двухместная операция.

α=11010, β=001, αβ=11010001.

К слову α справа дописывается слово β (склеивание, слияние, умножение).

  • слова α αλ=α=λα (λ играет роль единицы).

Операции над языками.

Т.к. язык – это множество, над ним можно применять все теоретико-множественные операции.

1. Объединение.

L1 U L2 = {α| λ ϵ L1 или λ ϵ L2}.

2. Пересечение.

L1 ∩L2 = { α| λ ϵ L1 и λ ϵ L2}.

3. Разность.

L1\L2 = { α| λ ϵ L1 и λ не ϵ L2}.

4. Дополнение.

_

L = B*\L дополнение до множества всех слов в алфавите

Конкатенация языков.

L0 = {λ} L1*L2={α|α=βγ, βєL1, γϵL2}

Используются степени языков.

L1= L, L2= L*L1=L*L, L3=L*L2=L*L*L,…, Ln=L*Ln-1

Пример. Рассмотрим конечные языки

L1={ab, bac}, L2={ba, ab, c}

Построим конкатенацию

L1*L2={abba, abab, abc, bacba, bacab, bacc}

1-ая часть слов входит в язык L1, 2-ая в L2

Операция некоммутативна

L2*L1={baab, babac, abab,abbac,cab,cbac}

Используя операцию степени, введем операцию итерация языка.

L*=U(i=1,…,∞)Li

L0={λ}. т.к. λ входит в L*, итерация любого языка содержит устое слово, итерация не может быть пустым множеством (всегда есть λ).

Позитивная итерация.

Одноместная итерация

L+=U(n=1,…,∞)Ln

Пустое слово обязательно не содержится? Нет., т.к. λ может быть в языке L, для которого строится L+, следовательно L+ содержит {λ} и L+ совпадает с L*.

Может быть L*=Ø? Нет, т.к.всегда есть λ.

Может быть L+=Ø? Да, когда L=Ø.

Грамматики.

Грамматикой называется система, которая определяется четырьмя параметрами

G=<VT, VN, P, S>

VT – алфавит терминальных символов (основных)

VN – алфавит нетерминальных символов (вспомогательных)

P – конечное множество правил

Sϵ VN – некоторый выделенный символ нетерминального алфавита, который называется аксиомой.

VT∩ VN алфавиты не пересекаются, все буквы различны.

Как применяются правила.

Если есть слово γ=α1βα2 и в множестве правил есть β→δ (из β следует δ) получим γ’= α1δα2.

И говорят, что γ’ непосредственно выводимо из γ (с помощью применения одного правила). γ => γ’.

Правило можно применять многократно. =>* - рефлексивная транзитивная выводимость.

Любое слово выводимо из себя. Рефлексивность: α =>* α, транзитивность: можно применять правило любое конечное число раз.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]