Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Теория алгоритмов
Неформально понятие алгоритма, как последовательности действий направленных на решение некоторой задачи, вводилось ещё в курсе информатики. Далее в курсах технологии программирования, дискретной математики, математической логики рассматривались алгоритмы решения различных типов задач. В данном разделе мы формализуем понятие алгоритма, введём понятие вычислительной сложности алгоритма, классифицируем алгоритмы. Вид формальной модели алгоритма зависит от тех понятий, которые положены в основание модели. 1) Первый подход основан на представлении об алгоритме, как о программе для некоторого детерминированного устройства. К моделям этого типа относятся машины Тьюринга, канонические системы Поста, нормальные алгорифмы Маркова. 2) Второй подход основан на понятии вычисления и числовой функции, основная теоретическая модель этого вида – рекурсивные функции. Перед введением формальных определений алгоритма сформулируем понятия, необходимые для дальнейшего изложения. Всюду далее будет рассматриваться некоторая массовая задача P. Массовая задача P определяется следующей информацией: 1) общим списком параметров задачи; 2) формулировкой свойств, которым должно удовлетворять её решение. Напомним, что этот набор называют ещё спецификацией задачи. Индивидуальная задача I получается подстановкой в массовую задачу P данного вида конкретных значений параметров. Будем говорить, что алгоритм решает массовую задачу P, если применим к произвольной индивидуальной задаче I, соответствующей задаче P, и даёт решение задачи I. В качестве массовой задачи P будем рассматривать задачу распознавания, т.е. задачу решением которой могут быть ответы “да” или “нет”. Например, задачей распознавания является задача определения – делится ли заданное натуральное число нацело на 4. Это не ограничивает общности, так как любая задача может быть сформулирована в терминах задачи распознавания. Обозначим через
Таким образом, задача распознавания состоит в определении этих двух множеств. Для записи задачи распознавания используется естественный формальный эквивалент, называемый языком. Обозначим S – конечное множество символов (алфавит), S* – множество всех конечных цепочек, составленных из S (слова),
Соответствие между задачами распознавания и языками устанавливается с помощью схем кодирования. Схема кодирования e записывает каждую индивидуальную задачу из P словом в фиксированном алфавите S. Множество S* делится задачей P и схемой кодирования e на 3 класса: 1) слова, не являющиеся кодами индивидуальных задач из P; 2) слова, являющиеся кодами с отрицательным ответом; 3) слова, являющиеся кодами с положительным ответом. Третий класс слов обозначим
Одноленточная детерминированная машина Тьюринга (ДМТ) представляет собой логическое устройство, которое состоит из: 1) неограниченной в обе стороны ленты, разделенной на одинаковые пронумерованные ячейки; 2) читающей/пишущей головки; 3) управляющего устройства с конечным числом состояний. Схематически ДМТ можно представить в виде рисунка
Программу 1) G – конечное множество символов, записываемых на ленте, 2) Q – конечное множество состояний, в котором выделено начальное состояние 3) функция переходов Т.е. Порядок работы ДМТ под управлением программы 1. Входное слово 2. Если текущее состояние q не совпадает с одним из конечных состояний, то машина переходит в следующее состояние, определяемое согласно функции переходов. Пусть 3. Если В качестве примера рассмотрим упоминавшуюся выше задачу распознавания “делимость на 4”. Построим ДМТ-программу Для представления чисел будем использовать символы 0 и 1, а в качестве схемы кодирования – двоичную запись числа. Значит, Опишем словесно действия ДМТ, а затем формализуем в виде программы Представим функцию переходов наглядно в виде ориентированного графа. Вершинами графа будут являться состояния управляющего устройства, дуги графа означают переход из одного состояния в другое, причём, над каждой дугой будем писать символ(ы), по которому выполняется переход, а после знака ® – замещающий символ(ы) и направление движения головки. Следовательно,
Функцию переходов d можно также задать табличным способом.
Программа
Если Работу ДМТ-программы Функция Свойства вычислимых функций. 1. Суперпозиция 2. Любая вычислимая функция вычислима на машине Тьюринга с правой полулентой. 3. Если функции Выше мы каждому алгоритму поставили в соответствие функцию. Является ли верным обратное утверждение: можно ли для произвольной функции построить алгоритм её вычисляющий? Ответ на этот вопрос отрицательный, т.е. произвольная функция не является вычислимой. Выделим класс функций, для которых вычисляющий их алгоритм существует, таким образом, мы дадим другое определение алгоритма в терминах функций.
|