- •1. Языки программирования. Структурная технология программирования. Реализация основных алгоритмических структур на процедурном языке программирования.
- •2.Базовые алгоритмические структуры: процедуры и функции, рекурсивные функции и процедуры.
- •3.Составные структуры данных: определение новых типов данных, одномерные и двухмерные массивы, строки, множества, записи, файлы.
- •1. Массивы
- •3. Множества
- •4. Записи
- •5. Файлы
- •4. Динамические структуры данных: списки, стеки, очереди.
- •5. Понятие о логическом программировании. Структура программы в Прологе. Предикаты, правила, факты.
- •10) Информация, ее виды и свойства. Измерение информации.
- •11) Кодирование информации. Условие Фано. Коды Шеннона-Фано и Хаффмана.
- •12) Достоверность передачи информации. Коды Хемминга.
- •Кодирование с выявлением ошибок (коды с проверкой на четность).
- •3. Кодирование с исправлением ошибок (самокорректирующиеся коды).
- •13) Понятие о конечных автоматах. Эквивалентность и произведение конечных автоматов.
- •Алгоритмы и их свойства. Существование алгоритмически неразрешимых проблем. Машина Поста.
- •Формализация понятия алгоритма . Машина Тьюринга.
- •Формализация понятия алгоритма. Нормальные алгоритмы Маркова.
- •Формализация понятия алгоритма. Рекурсивные функции.
- •18. Формальная грамматика. Метаязыки. Форма Бэкуса-Наура. Синтаксические диаграммы.
- •Инструментальное программное обеспечение
- •Системы программирования
- •Виды инструментального по
- •Определение
Формализация понятия алгоритма . Машина Тьюринга.
Существует большое количество задач, вызывающих трудности создания алгоритма их решения или требующих значительного упрощения процедур их решения или расширения области применения известных алгоритмов и др. Существование таких задач требует формализовать понятие алгоритма. При этом выделяют 2 проблемы:
-возможно более строгое определение алгоритма, его свойства;
-изучение теоретических моделей алгоритмов и исследование проблемы алгоритмической разрешимости.
Цели формализации: 1. решение проблемы алгоритмической разрешимости различных математических задач, т.е. получение ответа на вопрос, существует ли алгоритм решения указанного класса задач. 2. определение элементарного шага алгоритма. 3. выбор наиболее эффективного алгоритма из нескольких возможных с теоретической и практической точек зрения
Два класса задач
1. вычисление значений функций. Функция называется вычислимой, если существует алгоритм, вычисляющий ее значение.
2. распознавание принадлежности объекта заданному множеству. Множество называется разрешимым, если имеется алгоритм, позволяющий для любого объекта определить, принадлежит он данному множеству или нет.
Тезис Черча-Тьюринга. Любое разумное определение алгоритма, которое может быть предложено в будущем, окажется эквивалентным уже известным определениям.
Исполнитель алгоритма – субъект или устройство, способные правильно воспринимать описание алгоритма и выполнять содержащиеся в нем действия.
Совокупность допустимых команд образует систему команд исполнителя (СКИ ).
Машина Тьюринга. Cостоит из разделенной на ячейки полу бесконечной ленты, считывающе - записывающей каретки, лентопротяжного механизма и логического устройства, которое может находиться в одном из дискретных состояний Q{q0, q1,..., qs}. Алфавит А ={ λ, a1,a2,…., an}. λ - пробел.
Работа машины: На каждом шаге машина выполняет предписание алгоритма, состоящее из пяти символов: qi am qr ak sp , где 0 i, r s, 0 m, k n, sp {R,L,S}. Оно означает, что находясь в состоянии qi и прочитав в обозреваемой ячейке символ am следует записать в обозреваемую ячейку символ ak, перейти в состояние qr и переместить ленту влево (sp=R), вправо (sp =L) или не сдвигать ленту (sp=S). Конкретная машина задается логической схемой машины. Совокупность состояний всех ячеек ленты, состояний логического устройства и положение головки называют конфигурацией машины.
q1 s - стандартная начальная конфигурация
q0 s – стандартная заключительная конфигурация
Начальная конфигурация порождает цепочку конфигураций. Если она приводит к заключительной конфигурации, то говорят, что машина применима к К0, иначе не применима
Пример 2. Найти конец массива
+ ОТЛИЧИЕ ПОСТА ОТ ТЬЮРИНГА
Формализация понятия алгоритма. Нормальные алгоритмы Маркова.
Существует большое количество задач, вызывающих трудности создания алгоритма их решения или требующих значительного упрощения процедур их решения или расширения области применения известных алгоритмов и др. Существование таких задач требует формализовать понятие алгоритма. При этом выделяют 2 проблемы:
-возможно более строгое определение алгоритма, его свойства;
-изучение теоретических моделей алгоритмов и исследование проблемы алгоритмической разрешимости.
Цели формализации: 1. решение проблемы алгоритмической разрешимости различных математических задач, т.е. получение ответа на вопрос, существует ли алгоритм решения указанного класса задач. 2. определение элементарного шага алгоритма. 3. выбор наиболее эффективного алгоритма из нескольких возможных с теоретической и практической точек зрения
Два класса задач
1. вычисление значений функций. Функция называется вычислимой, если существует алгоритм, вычисляющий ее значение.
2. распознавание принадлежности объекта заданному множеству. Множество называется разрешимым, если имеется алгоритм, позволяющий для любого объекта определить, принадлежит он данному множеству или нет.
Тезис Черча-Тьюринга. Любое разумное определение алгоритма, которое может быть предложено в будущем, окажется эквивалентным уже известным определениям.
(Для формализации понятия алгоритма российский математик А.А.Марков предложил использовать ассоциативные исчисления) Нормальные алгоритмы Маркова (НАМ) представляют собой правила по переработке слов в некотором алфавите (в них используется одно элементарное действие - подстановка). Формулой подстановки называется запись вида α –> β (читается «α заменить на β»), где α и β любые слова (возможно, и пустые). При этом, α называется левой частью формулы, а β - правой частью. Сама подстановка (как действие) задается формулой подстановки и применяется к некоторому слову Р. Суть операции сводится к тому, что в слове Р отыскивается часть, совпадающая с левой частью этой формулы (т.е. c α), и она заменяется на правую часть формулы (т.е. на β). При этом остальные части слова P (слева и справа от а) не меняются. Получившееся слово R называют результатом подстановки. Условно это можно изобразить так:
Совокупность всех слов в данном алфавите вместе с системой допустимых подстановок называется ассоциативным исчислением.
Пример: В алфавите А={a,b,c} имеются слова N=ab, M=bcb, K=abcbcbab. Заменив в слове К слово N на М, получим bcbcbcbab или abcbcbbcb, и, наоборот, заменив М на N, получим aabcbab или abcabab.
Слова Р1 и Р2 в некотором ассоциативном исчислении называются смежными, если одно из них может быть преобразовано в другое однократным применением допустимой подстановки. Последовательность слов Р, Р1, Р2,..., М называется дедуктивной цепочкой, ведущей от слова Р к М, если каждое из двух рядом стоящих слов этой цепочки – смежные. Слова Р и М называются эквивалентными, если существует цепочка от Р к М и обратно.
Опр. нормального алгоритма: Пусть задан алфавит А и система подстановок В. Для произвольного слова Р подстановки используются в порядке очередности. Если подходящей подстановки нет, или применяется последняя подстановка, то процесс останавливается. Алгоритм называют нормализуемым, если можно построить эквивалентный ему нормальный алгоритм, и ненормализуемым в противном случае. Все алгоритмы нормализуемы! Произвольная конечная последовательность формул называется схемой нормального алгоритма. Словарная функция f: A* -> A* называется вычислимой по Маркову, если существует схема нормального алгоритма. Способы композиции нормальных алгоритмов: -При суперпозиции двух алгоритмов А и В выходное слово первого алгоритма рассматривается как входное слово второго алгоритма В. Результат суперпозиции С может быть представлен в виде С(р)=В(А(р)). -Объединением алгоритмов А и В в одном и том же алфавите называется алгоритм С в том же алфавите, преобразующий любое слово р, содержащееся в пересечении областей определения алгоритмов А и В, в записанные рядом слова А(р) и В(р). -Разветвление алгоритмов представляет собой композицию Д трех алгоритмов А,В и С, причем область определения алгоритма Д является пересечением областей определения всех трех алгоритмов А,В и С, а для любого слова р из этого пересечения Д(р)=А(р), если С(р)=е, Д(р)=В(р), если С(р) <>е, где е - пустая строка.
-Итерация (повторение) представляет собой такую композицию С двух алгоритмов А и В, что для любого входного слова р соответствующее слово С(р) получается в результате последовательного многократного применения алгоритма А до тех пор, пока не получится слово, преобразуемое алгоритмом В.
+ ПРИМЕР
