Алфавиты, слова, языки, алгоритмические проблемы

Содержание

Слайд 2

Цели и задачи 1. Ввести подходящий формализм для работы с текстами

Цели и задачи

1. Ввести подходящий формализм для работы с текстами -

представлениями данных.
- Основные понятия - алфавит, слово и язык.
2. Показать, как использовать введённые понятия, применять их для получения формальных представлений алгоритмических проблем.
- Проблемы принадлежности (разрешимости)
- Оптимизационные проблемы
3. Рассмотреть некоторые вопросы, связан­ные со сжатием текстов.
- Сложность по Колмогорову
Слайд 3

Формальный язык Алфавитом называется любое непустое конечное множество. Каждый элемент алфавита

Формальный язык

Алфавитом называется любое непустое конечное множество.
Каждый элемент алфавита называется символом.
Алфавит

языка – множество символов (букв)
Язык – множество строк
Строка (слово) – последовательность символов
Примеры:
“студент”, “123”, “house”
∑={‘0’, ‘1’, ‘2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’}
∑={‘a’, ‘b’, ‘c’, …, ’z’} ∑={‘а’, ‘б’, ‘в’, …, ’я’}
Слайд 4

Примеры стандартных алфавитов ∑bool={0, 1} - логический (Булевый) алфавит ∑lat={a, b,

Примеры стандартных алфавитов

∑bool={0, 1} - логический (Булевый) алфавит
∑lat={a, b, c, …,

z} - латинский алфавит
∑keyboard=∑latU{….} – алфавит символов, которые можно набрать на клавиатуре
∑m= {0, 1, …, m-1} , m> 1 – алфавит для записи чисел в m-ичной системе счисления
∑logic= {0, 1, x, (, ), ∩, U, ⌐} – алфавит формул алгебры логики
Слайд 5

Алфавит и строки Будем использовать алфавит из двух букв ∑={a, b}

Алфавит и строки

Будем использовать алфавит из двух букв
∑={a, b}
Строки (слова)
a, ab,

abba, baba, aaabbbaabab
u = ab
v = bbbaaa
w = abba
Слайд 6

w = a1a2…an v = b1b2…bm w = abba v =

w = a1a2…an v = b1b2…bm
w = abba v = bbbaaa
Конкатенация: Длина строки:
wv

= a1a2…anb1b2…bm |w| = m
wv = abbabbbaaa |abba| = 4
Обращение: Длина конкатенации строк:
vR= bm…b2b1 |uv| = |u| + |v|
vR= aaabbb

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

Слайд 7

Операции над строками Пустая строка: Строка, не содержащая букв: λ |λ|

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

Пустая строка:
Строка, не содержащая букв: λ |λ| = 0
λw =

wλ = w λabba = abbaλ = abba
Подстрока:
Строка: abbab
Подстроки: ab, abba, b, bbab, λ
Слайд 8

Префиксы и суффиксы: Строка: abba Префиксы: Суффиксы: w = uv λ

Префиксы и суффиксы:
Строка: abba
Префиксы: Суффиксы: w = uv
λ abba u - префикс
a bba v - суффикс
ab ba
abb a
abba λ

Операции над

строками
Слайд 9

Итерация: w0 = λ (abba)2 = abbaabba = ab2a2b2a (abba)0 =

Итерация: w0 = λ
(abba)2 = abbaabba = ab2a2b2a (abba)0 = λ
Звезда Клини:
∑*

- множество всех возможных слов в алфавите ∑
∑ = {a, b}
∑* = {λ, a, b, aa, ab, ba, bb, …}

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

Слайд 10

Плюс Клини: ∑ + = ∑* - λ ∑+ = {a,

Плюс Клини:
∑ + = ∑* - λ ∑+ = {a, b,

aa, ab, ba, bb, …}
Язык в алфавите ∑ - любое подмножество ∑*

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

Слайд 11

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

 

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

Слайд 12

Обращение LR {wR: w ϵ L} {ab, aab, baba}R = {ba,

Обращение
LR {wR: w ϵ L}
{ab, aab, baba}R = {ba, baa, abab}
Конкатенация


L1L2= {xy: x ϵ L1, y ϵ L2}
{a, ab, ba}{b, aa} = {ab, aaa, abb, abaa, bab, baaa}

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

Слайд 13

Итерация {a, b}3 = {a, b} {a, b} {a, b} =

Итерация
{a, b}3 = {a, b} {a, b} {a, b} = {aaa,

aab, aba, abb, baa, bab, bba, bbb}
L0 = {λ}
{a, b}0 = {λ}

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

Слайд 14

Звезда Клини (замыкание) L* = L0 U L1 U L2 U … Операции над языками

Звезда Клини (замыкание)
L* = L0 U L1 U L2 U …

Операции

над языками
Слайд 15

Плюс Клини (положительное замыкание) L+ = L1 U L2 U …

Плюс Клини (положительное замыкание)
L+ = L1 U L2 U … =

L* - {λ}

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

Слайд 16

Грамматики определяют языки, является ли данное предложение правильным предложением данного языка.

Грамматики определяют языки, является ли данное предложение правильным предложением данного языка.
Пример:

грамматика русского языка
<предложение> → <подлежащее> <сказуемое> <дополнение>
<подлежащее> → <существительное>
<сказуемое> → <глагол>
<дополнение> → <наречие>
<существительное> → птица | студент
<сказуемое> → летает | учится
<наречие> → высоко | хорошо

Грамматики

Слайд 17

=> => => => => Птица летает высоко Возможные предложения Птица

<предложение> => <подлежащее> <сказуемое> <дополнение> =>
=> <существительное> <глагол> <наречие> =>
=> Птица

летает высоко
Возможные предложения
Птица летает хорошо
Птица учится высоко
Студент летает хорошо

Вывод предложения

Слайд 18

Обозначения

Обозначения

Слайд 19

Пример формальной грамматики

Пример формальной грамматики

Слайд 20

G = {V, T, S, P} V = Множество нетерминальных символов

G = {V, T, S, P}
V = Множество нетерминальных символов
T =

Множество терминальных символов
S = Начальный символ
P = Множество правил вывода (продукций)
Пример:
Грамматика S → aSb, S → λ
V = {S}
T = {a, b}
P = {S → aSb, S → λ}

Определение формальной грамматики

Слайд 21

Определение: Для грамматики G с начальным символом S L(G) = {w:

Определение:
Для грамматики G с начальным символом S
L(G) = {w: S =>

w}
язык, порождаемый этой грамматикой
Пример:
Грамматика G {S → Ab, A → aAb, A → λ}
L(G) = {anbnb: n≥0}
поскольку S => anbnb и никакие друге слова не выводимы

Язык, порождаемый грамматикой

Слайд 22

Любая программа (алгоритм) A выполняет отображение: A: ∑1* → ∑2* входы

Любая программа (алгоритм) A выполняет отображение:
A: ∑1* → ∑2*
входы представлены как

слова над алфавитом ∑1
выходы представлены как слова над алфавитом ∑2
A однозначно определяет выход по каждому входу
Для некоторых алгоритма A и входа x обозначим записью A(x) выход алгоритма A для этого входа. Будем говорить, что два алгоритма (программы) A и B эквива­лентны, если они работают над одним и тем же алфавитом ∑ и при этом A(x) = B(x) для всех x ϵ ∑*.

Алгоритмические проблемы

Слайд 23

Проблема принадлежности

Проблема принадлежности

 

Слайд 24

Оптимизационная проблема U = {∑I, ∑O, L, M, cost, goal) ∑I

Оптимизационная проблема

U = {∑I, ∑O, L, M, cost, goal)
∑I – входной

алфавит
∑O – выходной алфавит
L – язык подходящих входов
M – множество допустимых решений
Cost – функция стоимости
Goal – цель (максимизация или минимизация)
Пример: задача коммивояжера
Слайд 25

Сложность по Колмогорову Колмогоровская сложность объекта есть мера вычислительных ресурсов, необходимых

Сложность по Колмогорову

Колмогоровская сложность объекта есть мера вычислительных ресурсов, необходимых для

точного описания этого объекта
Cложность строки — это длина описания этой строки на некотором универсальном языке описания.
Пример:
Две строки:
ababababababababababababababababababababababababab = (ab)25
4c1j5b2p0cv4w1x8rx2y39umgw5q85s7uraqbjfdppa0q