Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы / Ответы на экзаменационные вопросы по математической логике.docx
Скачиваний:
162
Добавлен:
04.07.2020
Размер:
163.65 Кб
Скачать

21. Алгоритмы. Определение (интуитивное) алгоритма. Свойства алгоритмов. Направления поисков точного определения алгоритма. Вычислимые функции. Проблема алгоритмической неразрешимости

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

Слово «алгоритм» происходит от имени узбекского математика XIII века Абу ал Хорезми. Оно претерпело эволюцию: ал Хорезми – ал Горезми – алгоритм.

Примеры алгоритмов:

  • Алгоритм Эвклида (правило отыскания наибольшего общего делителя).

  • Правило отыскания решений квадратного уравнения.

  • Правило отыскания производной от многочлена степени.

  • Правило интегрирования рациональных дробей.

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

Свойства алгоритмов:

  • Дискретность — изначально задаётся исходная конечная система величин (параметров), и на каждом следующем шаге система величин получается по определенному закону из системы величин, имевшихся на предыдущем шаге.

  • Детерминированность (определённость) — система величин, получаемых на каком-то шаге, однозначно определяется системой величин, полученных на предыдущем шаге.

  • Элементарность каждого шага — решение задачи разбивается на этапы, каждый из которых должен быть простым.

  • Результативность (направленность) — последовательный процесс построения системы величин должен быть конечным и давать результат, то есть решение задачи.

  • Массовость — начальная система величин может выбираться из некоторого потенциально бесконечного множества (то есть алгоритм служит не для решения какой-то одной задачи, а для целого класса однотипных задач).

Для того, чтобы доказать существование алгоритма, достаточно дать описание фактического процесса, решающего задачу и здесь достаточно интуитивного понятия алгоритма.

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

В 30-е годы 20-го века шли интенсивные поиски строгого определения понятия алгоритма. В подходе к решению этой задачи были выделены три основных направления:

  1. Первое направление связано с уточнением понятия вычислимой функции (Чёрч, Гёдель, Клини). В результате был выделен класс так называемых частично-рекурсивных функций, имеющих строгое математическое определение. Такие функции вычислимы, то есть существует алгоритм для их вычисления; если же функция не принадлежит к этому классу, то не существует алгоритма её вычисления (не надо его и искать).

  2. Второе направление связано с машинной математикой путём рассмотрения процессов, осуществляемых машиной (Пост, Тьюринг). Впервые это сделали независимо друг от друга Тьюринг и Пост (1937). Это направление часто называют машиной Тьюринга. Программа для такой машины и есть алгоритм вычисления так называемой тьюринговой функции. Если же функция не является тьюринговой, то не существует алгоритма её вычисления.

  3. Третье направление рассматривает алгоритм как преобразование слов в некотором алфавите, при этом элементарными операциями являются подстановки, то есть замены части слова другим словом. Такие алгоритмы носят название «нормальных» алгоритмов. Они разработаны А. А. Марковым.

И уже в конце 20-го века разработаны так называемые нейронные сети — тоже строгое математическое определение алгоритма.

В дальнейшем будем рассматривать так называемые числовые функции, то есть функции, аргументы и значения которых принадлежат множеству натуральных чисел с нулём . Если число аргументов , то область определения таких функций декартово произведение , а область значений — .

Вычислимые функции — числовые функции, значения которых можно вычислить посредством некоторого алгоритма.

Например, не является числовой вычислимой функцией, так как хотя бы даже на интуитивном уровне не вычислить машине точно, сколько знаков не брать.