Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора информатика.doc
Скачиваний:
13
Добавлен:
24.09.2019
Размер:
689.66 Кб
Скачать

2. Кодирование информации.Постановка задачи.

Кодирование в информатике:представление памяти в памяти комп., защита информации от несанкционированного доступа, сжатие информации.

Кодирование – это некоторое преобразование F множества сообщений в алфавите А во множество сообщений алфавита В. А={α1….αk} В={β1….βm}

а–сообщение кот-е мы хотим закодировать

А*–множество всех сообщений к-е можно записать в алфавит а

F(a)=b, b принадлежит В* – закодированое

В*–множество всех сообщений в алфавите b

Если алфавит В имеет мощность |В|=m то кодирование наз-ся m-ичным. В={0,1}–двоичное.

Преобразование обратное кодированию F наз-ся декодирование.

Алфавитное кодирование задается схемой кодов <αi → βi>

Кодовое слово βi наз-ся элементарным кодом. Кодирование наз-ся равномерным если все элементарные коды имеют одинаковую длину li= |βi|=l

В неравномерном кодировании разные коды могут иметь разные длины.

Схема кодирования наз-ся разделимой если любое слово составленное из элементарных кодов единственным образом разделяется на элементарные коды.

Схема кодирования наз-ся префиксной если никакой элементарный код не является началом другого элементарного кода.

Алгоритм Фано:Дан алфавит из n букв с помощью кот-х записано сообщение, известна частота появлении, т.е. вероятность каждой буквы алфавита в сообщении р12….рn :

При этом:1) ; 2)Вероятность появления буквы аi на любом месте сообщения одна и та же в не зависимости от того какие буквы стоят перед. 3)Вероятности упорядочены.

Идея:Буквы алфавита требуется разбить на 2 группы, чтобы суммы обоих групп были по возможности ближе друг к другу. Для букв 1-й группы в качестве кодового символа используем 0, а во 2-й – 1.Процесс продолжаем до тех пор пока каждая группа не будет состоять из одной буквы.(Схема префиксная, разделимая, существует однозначное декодирование).

Хаффман(оптимальноеодирование): этот метод используется в архиваторах. Идея этого кода:часто встречающиеся символы кодируются короткими последовательностями битов, а редко встречающиеся длинными.

Надежность (помехоустойчивое) кодирования. Коды с обнаружением и исправлением ошибок.

При передачи инф-ии помехи обычное дело (треск в трубке телефона, разговор при ветре на расстоянии). Часто эти помехи м преодолеть в силу избыточности естественного языка. Избыточность могла бы использоваться и при передаче закодированных сообщ. В техических системах каждый фрагмент текста передается трижды и прав-м считается тот у которого больше совпаденй. Это влечет за собой большие затраты времени и емкостные затраты при передаче и хранении инф-ии. алгоритм Хемминга ищет ошибки при кодировании могут быть: выпадение разряда; получился 0 вместо 1 или наоборот. m-кол-во инф-х разрядов. Cm – элемент. код. K- контролир. разряды. Bn-помехоустойчивый код. {a1,а2…a3} множество M=10 мощность алфавита. 1) 2m≥M, найдёться кол-во инф-х разрядов в инф. коде. 2) 2k≥m+k+1 кол-во контролирующих разрядов. 3) длина элем. кода: n=m+k. далее состовляеться таблица.

3. Формальные языки и граматики. Их классификация.

ФГ: Требуется описать правила или команды алг., так чтобы они м.б. выполнены компьютером. Ясно, что естествен. яз. для этой цели не годится. Т.к.

- он им. не постоян. словарн. запас;

- возможно неоднознач. толкован. слов;

- его избыточность.

Выход: придумать искус. яз. со строгим синтаксисом и полной смысловой определённостью, такой яз. наз. формальным.

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

Синтаксис – набор правил, на основании кот-х строятся синтаксически правильные конструкции языка.

Семантика – соотношение единиц и конструкций яз. с некоторым внешн. миром для описан. состояния кот-го яз. исп-ся.

ФГ – сист. правил, описывающая мн-во конечных последовательностей символов допустимого алфавита.

Для описания ФГ исп-ся мета-язык. Он должен опис-ть синтаксис языка объекта и в некотор. степ. его семантику.

ФГ зад-ся четвёркой объектов:

1) Допустимый алфавит (мн-во терминальных символов - V);

2) W – мн-во нетермин. символов;

3) S – нач. нетермин. символ;

4) P – сист. подстановок или правила ввода синтаксически верных конструкций языка.

ПР. V={a,b}; W={S}

P: 1) S→aSa 3) S→a

2) S→bSb 4) S→b

Яз., кот. пораждается этой грамматикой, предст. собой палиндромы нечётной длины.

S1)→aSa2)→abSba2)→abbSbba3)→abbabba

Области применения ФГ

1. Решение проблем машинного перевода

2.ФГ – это осн. ср-во описания языков прогр-я и построение трансляторов с них

3. ФГ исп. для генерир-я правильных предложений, напр., при формировании ответов сист. для запросов пользователя

4. Поиск синтаксических ошибок в тексте.

Классификация формальных грамматик:

Тип. грам-ки опред. типом яз., кот. поражд. этой грамматикой

ТИП 0 Вкл. в себя все грам-ки вообще.

ТИП 1 Контекстно зависимые и неукорачивающ. гр-ки.

ПР. C1=<{a,b,c}-мн-во термин символ

Порожд. язык сост. из символов a,b,c равного количества.

Яз. кот. порожд. этой грам-кой наз. контекстно завис.

ТИП 2 контекстно- свобод. грам-ка. Все правила им. вид К(не терм.)→к(терминал. цепочка, кроме пустой).

В таких граммат. разреш. заменять символы вне зав-ти от контекста. Исп. при описании синтаксиса яз. прогр-я, поэт. именно им. удел. самое больш. вним.

ТИП 3 Регулярные гр-ки

(леволин. и праволин. гр-ки – это ограничен. на правила гр-ки)

Втор. назв. - автоматн. грам. Исп. при опис. простейших яз. прогр-я: идентификат., констант.

Соотношен. типов гр.

1)Люб. регуляр. гр. явл. контекстносвобод, но не наоборот. Кроме этого, люб. грам. типа 1,2,3 явл. гр. типа 0.

2)Сущ. укорачивающ. грам., котор. не явл. ни контекстнозавис, ни неукорачивающ-ми

Сложноть языков, порожд. гр-ми, уменьш. с увелич. типа.

Абстрактные распознаватели. Конечные автоматы.

Распоз-ль это специальный алгоритм позволяющий определить принадлежность цепочки символов некоторому языку.

Распознаватель явл-ся частью компелятора и представляети собой часть ПО компелятора.

Фактически работа распознавателей в составе компеляторов сводится к построению дерева вывода входной цепочки, а затем это дерево используется компелятором для построения результирующего кода.

Распознаватель устанавливает факт присутствия ошибки и определяет тип ошибки.

Распознаватели:

1)Машина Тьюринга

2)Автоматы с магазинной памятью(конечный автомат снабженный дополнительным стеком)

3)Линейно-ограниченые автоматы(это машина Тьюринга объем которой определяется длиной последовательности входных символов)

4)Конечные автоматы(наз-ся пятерка следующего вида М(V,Q,q0,F,δ)–автомат: V–алфавит автомата; Q–конечное множество состояний автомата; q0–начальное состояние автомата; F–непустое множество конечных состояний автомата; δ–ф-я переходов к-я отображает декартово произведение множеств VxQ во множество Q)

Конечный автомат наз-ся полностью определенным если для любого а и для любого q существует δ(а,q)=R≤Q

Конечный автомат наз-ся детерминированным если в каждом из его состояний для любого входного символа ф-я перехода содержит не более одного состояния

Преобр-е к детерминированному виду:

1)Q/это множество всех подмножеств в множествеQ

2)q/0 =[q0]

3)F/–множество всех таких подмножеств множества Q к-е содержат хотя бы одно из конечных состояний из множ F

4) δ/(a,q/)=r/ принадлежит Q/ ,где r/–объединение всех множеств R= δ(а,q)

5)Удалить из Q/ все недостижимые состояния. Состояние недостижимо если не при какой входной цепочке невозможен переход автоматом из начального состояния в q

6)Посмотрев правые части равенств в предыдущем пункте добавим начальные состояния и тогда получим новое множество q0

Минимизация: она заключается в построении эквивалентного конечного автомата с минимально возможным числом состояний. Перед миним. Необходимо автомат привести к детерминированному виду и удалить недостижимые состояния.

Минимизация конечного автомата состоит в последовательном разбиении множ. Q на классы эквивалентности до тех пор пока не получится разбиение, к-е уже нельзя измельчить.Классы эквивалентности состояний исходного конечного автомата становятся состояниями результирующего минимизированного конечного автомата.

4.основные принципы построения трансляторов. Таблица идентификаторов. Лексический и синтаксический анализаторы. Транслятор – прогр., кот. переводит исх. прогр. записан. на некотор. входн. языке в эквивалент ей прогр. на некотор. выходн. языке. Интерпритатор – не порождает полный объективный код. Компилятор – пораждает код. Язык наз. объективным, если транслятор генерирует объективный код прогр. Исходная программа разбивается на составн. части, затем строятся им эквивалентные части объективной програм.,т.е. сначало компилятор выполняет анализ исходн. программ., затем синтез объективной программы. Этапы:1)Анализ. Выполняется распознавание текста исх. прогр. и заполнение таблиц идентификаторов. Результатом явл. внутр. представление прогр. 2)Синтез. На основе внутрен. представления и таблиц идентификаторов порождается текст, результирующ. прогр., т.е. строится объект. код. Кроме этого в компиляторе имеется часть, отвечающ. за анализ и исправление ошибок.

Эти этапы сост. из более мелких этапов, наз. фазами компиляции.

Фазы:1)Лексический анализ или сканер-чтение програм. на исход. языке. 2)Синтаксический разбор. основная фаза – выделение синтакс. конструк. в тексте прогр., обработанной лексическим анализатором. проверяется правильность синтакса. 3)Семантический анализ – проверяется правильность текста прогр. с т.з. семантики вход. языка. 4)Подготовка к генерации кода. 5)Генерация кода, (создание цепочек) Замечание: представл. длины компиляции на фазе на практике может не соблюдаться (некотор. фазы выполняются одновременно)

Таблица идентификатора

var n: integer;

a,b: real

f: Boolean

begin

m:=n+a; {m:=n/ab}

Т.И.

n

mh

ab

real

m

mh

Построение лексического анализатора. Задача:1)проверить цепочки языка на соответствие входному языку. 2)определить границы лексемы, кот. в тексте явно не заданы. 3)сохранить обнаруженную лексему или сообщить об ошибке.

Сканер – необязательная часть компилятора, но чаще всего его вкл. в сост. компилятора, т.к.:

а) из текста прогр. на этапе выбрасывается вся незначимая информ. (решение проблемы - компиляция) б)синтаксис лексем, можно описать простыми грамматиками, что позволяет разработать эффект. технику разбора в)часто для одного и того же языка сущ. несколько внешн. представл. языка, поэтому можно описать одним синтаксическим анализатором и несколько сканеров, ориентирующиеся на разные версии. Сканер можно запрограммировать как отдельный проход на кот. Выполняется лексический анализ исх. текста прогр.

Обобщённый алгоритм работы простейшего анализатора. 1) Из исход. потока берётся очередь символов. 2) Запущенный сканер просматривает символы прогр. на исх. языке, объединяя их в лексемы или обнаруживает ошибки. 3) При успешном распознавании инф. Выделенные лексемы заносятся в таблицу лексем или идентификат и происх. возврат на 1 пунктов алг. 4) При не успешном выд. лексем выдаётся сообщение об ошибке.

Построение синтаксического анализатора. Синтакс. анализатор отвечает за основн. синтаксич. структуры вход. языка: выявление конструкций, проверка их правильности и представл. их вида для дальнейшей интерпретации кода результирующ прогр. Задача: разбор предлож на основе грамматики, вход. языка, при этом шаги пораждения текста объектив. (результ.) прогр. должны восстанавливать при чтении продлож. Эта слож. задача (невыполнима), ею занимается теория синтаксич. анализа. Создаваемые алгоритмы распознавания могут работать не со всеми языками, а только с некоторыми. Из соображения эффективн. алгоритма разбора вытекает:1)Кажд. очеред. этап анализа должен выбираться в зависимости от следующего или текущего символа. 2)Ни к какому этапу не должно ещё раз обращаться.