Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч.Пособие2013-4.doc
Скачиваний:
97
Добавлен:
09.05.2015
Размер:
674.3 Кб
Скачать

4. Существование алгоритмов

4.1. Проблема существования алгоритма

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

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

Рассмотрим в качестве примера задачу о диофантовых уравнениях.

Диофантовы уравнения (названы в память греческого математика Диофанта, жившего в III в. н. э.) имеют вид

P(x1, x2, ..., xn) = Q(x1, x2, ..., xn),

где Р и Q – полиномы, например:

ax2 + bx + c = y2; axn + bxn = czn; ax3 + bx2y + cxy2 + dy3 = 1.

Коэффициенты a, b, c и степень n – целые числа; решения – значения x, y, z – также должны быть целыми числами. Конечно, решения не всегда существуют: вспомним хотя бы известную теорему Ферма о том, что уравнение xn + yn = zn, n > 2, не имеет целочисленных решений. Теорема была сформулирована Пьером де Ферма в середине XVII в. без доказательства и доказана Эндрю Уайлсом в 1995 г.

Математик Давид Гильберт сформулировал задачу (известную как 10-я проблема Гильберта): указать способ, при помощи которого возможно после конечного числа операций установить, разрешимо ли это уравнение в целых числах. Иначе говоря, разработать алгоритм, на вход которого подается запись конкретного уравнения (текст), а на выходе появляется по окончании работы одно из двух текстовых значений: «решение существует», «решение не существует».

Эта задача распознавания проще, чем задача нахождения решения, т.е. определения числовых значений x, y, z, …, удовлетворяющих диофантову уравнению. Но все равно она достаточно амбициозна, если учесть тот срок, который потребовался математикам для ответа на такой же вопрос, сформулированный в теореме Ферма.

Неудивительно, что на решение 10-й проблемы Гильберта ушло 70 лет, и ответ был неожиданным: Ю.Матиясевич доказал, что такого алгоритма не существует!

Общая задача определяется:

1) списком параметров lp – свободных переменных, конкретные значения которых не определены;

2) формулировкой условий – свойств, которыми должен обладать ответ (решение задачи).

Решением такой задачи z(lp) со списком параметров lp является алгоритм (lp) – тоже кодируемый строкой символов, интерпретируемой (выполняемой) некоторым вычислителем, причем важно то, что некоторые участки строки интерпретируются многократно (циклически) потенциально неограниченное число раз. Более точно можно сказать, что решением массовой задачи являются алгоритм + вычислитель.

Частная задача получается из общей задачи, если всем параметрам общей задачи придать конкретные значения (задать исходные данные).

Некоторые массовые задачи решения не имеют. Это значит, что не существует алгоритма как решения массовой задачи z(lp). Если же для каждого параметра задачи из списка lp задать конкретное значение из предметной области, т.е. превратить массовую задачу в индивидуальную, то решение вполне может найтись. Различие состоит в том, что для разных частных задач z1 , z2, z3 ,…, полученных из одной общей задачи z, могут потребоваться разные алгоритмы 1 , 2 , 3 ,…. Поэтому более точно: не существует общего алгоритма, решающего массовую задачу. Возможно, что только для некоторых параметров задаются конкретные значения, т.е. список lp уменьшается до более короткого списка lp‘, но при этом «упрощенная» общая задача получает решение.

В связи с этой проблемой возникли задачи о задачах Z(z(lp)). Задача Z о задаче z(lp) может быть сформулирована так: существует ли алгоритм (lp), решающий задачу z(lp)?

Для того чтобы такие задачи можно было решать на строго научной основе, математическими методами, должно быть введено строгое понятие алгоритма. Формулировок таких понятий в теории алгоритмов было введено несколько. Наиболее известными являются машина Тьюринга, машина Поста, алгорифмы Маркова. Было доказано, что они эквивалентны в том смысле, что алгоритм, представленный в одной форме, может быть переведен в другую.