
spoPresentation2
.pdf
Цепочки символов
Цепочка символов (строка) – это произвольная упорядоченная конечная последовательность символов алфавита
Произвольность: в цепочку может входить любая допустимая последовательность символов, она не обязательно имеет смысл
Упорядоченность: цепочка имеет определенный состав входящих в нее символов, их количество и порядок следования
Цепочки: D, E, J …
21

Цепочки символов
D = E, если цепочки D и E имеют один и тот
же состав символов, их количество и порядок следования
Длина цепочки – это количество символов в ней: |D|. Если D = E |D| = |E|
Конкатенацией 4 цепочек D, E называется цепочка J = D 4 E = DE. |J| = |D| + |E| . Цепочка D является префиксом, E - суффиксом строки J
Не коммуникативна: D, E: DE z ED
Ассоциативна: J (DE) = (JD) E
22

Цепочки символов
Любую цепочку символов можно представить как конкатенацию составляющих ее частей
Цепочка Z называется подцепочкой J, если
J = DZE
Заменой (подстановкой) цепочки J = DZE называется новая цепочка J ’ = DME
Обращение цепочки DR – это запись символов цепочки D в обратном порядке. DRR
= D
D, E: (DE) R = E RD R
23

Цепочки символов
Итерация цепочки Dn - это конкатенация цепочки D самой с собой n раз, n 1, nt0
D k =DD k-1 = D k-1D
Пустая цепочка символов O (H) не содержит
ни одного символа
D0 =O
|O|=0 D: OD = DO = D O R = O n t 0: O n =O
24

Цепочки символов
Цепочка символов D является цепочкой над алфавитом A: D(A), если xD, x A
Замыкание алфавита А (A*) – это множество всех возможных цепочек над алфавитом А
Пример
А = {a, b, c}
А* = {O, a, b, c, aa, ab, ac, bb, ba, bc, cc, ca, cb, aaa, aab, aac,…}
25

Цепочки символов
f
A* = А0 А1 А2 … = An
n 0
где А0 = {O}, A1 = A
|
f |
A+ = А1 А2 … = |
An |
|
n 1 |
A* = A+ {O} |
|
26

Язык
Язык L над алфавитом А: L(A) – это некоторое счетное подмножество цепочек конечной длины из множества всех цепочек алфавита А: L(A) А*
Язык L(A) включает в себя язык L’(A):
L’(A) L(A), если D L’(A): D L(A). Т.е.
множество цепочек языка L’(А) является подмножеством множества цепочек языка
L(A)
27

Язык
Языки L(A) и L’(A) эквивалентны:
L’(A)=L(A), если L’(A) L(A) и L(A) L’(A).
Или D L’(A): D L(A) и E L(A): E L’(A).
Для эквивалентных языков множества допустимых цепочек равны
Языки L(A) и L’(A) почти эквивалентны:
L’(A) # L(A), если L’(A) {O} = L(A) {O}.
L{O} = {O}L = L; |
L = L = |
28

Язык
Конкатенация произвольного числа цепочек формального языка L носит название
замыкания Клини: |
f |
L* = L0 L1 L2 … = |
Ln , где L0 = {O} |
|
n 0 |
При n t 1 справедливо Ln = LLn-1 = Ln-1L ( ноль или
более сцеплений языка L. Позитивное
замыкание означает одно или более f сцеплений языка L: L+ = L1 L2 … = An
или L+ = LL* = L*L, L* = L+ {O}. |
n 1 |
|
29

Способы задания языков
перечисление всех допустимых цепочек языка
указание способа порождения цепочек языка (определение грамматики)
указание метода распознавания цепочек языка (определение распознавателя)
30