- •Т. А. Сливина математическая логика и теория алгоритмов
- •Глава I. Логика высказываний 6
- •Глава 1 логика высказываний
- •§ 1. Логические операции над высказываниями
- •§ 2. Формулы логики высказываний. Основные равносильности и преобразования
- •1. Основные равносильности
- •2. Равносильности, выражающие одни логические операции через другие
- •3. Равносильности, выражающие основные законы алгебры логики
- •§ 3. Алгебра Буля. Функции Буля. Представление произвольной функции алгебры логики в виде формулы алгебры логики
- •§ 4. Дизьюнктивная нормальная форма и совершенная дизьюнктивная нормальная форма. Коньюнктивная нормальная форма и совершенная коньюнктивная нормальная форма
- •§ 5. Приложения алгебры логики в технике и других областях
- •Задачи и упражнения
- •Глава 2 исчиление высказываний
- •§ 1. Этапы построения исчисления высказываний. Понятие формулы исчисления высказываний
- •§ 2. Определение доказуемой формулы. Правила вывода и заключения
- •§ 3. Производные правила вывода
- •§ 4. Выводимость формул из совокупности формул
- •§5. Доказательство некоторых законов логики
- •3. Закон разъединения посылок
- •5. Закон исключенного третьего: ├
- •§6. Связь между алгеброй высказываний и исчислением высказываний
- •§7. Проблемы аксиоматического исчисления высказываний
- •1. Проблема разрешимости исчисления высказываний.
- •3. Проблема полноты исчисления высказываний.
- •4. Проблема независимости аксиом исчисления высказываний.
- •Задачи и упражнения
- •Глава 3 логика предикатов
- •§ 1. Понятие предиката. Логические операции над предикатами. Кванторные операции.
- •§ 2. Понятие формулы логики предикатов. Значение формулы логики предикатов
- •§ 3. Равносильные формулы логики предикатов. Предваренная нормальная форма
- •§ 4. Общезначимость и выполнимость формул. Проблема разрешимости для общезначимости и выполнимости, неразрешимость ее в общем случае
- •§ 5. Применение языка логики предикатов для записи математических предложений, определений, построения отрицания предложений
- •§ 6. Замечание об аксиоматическом исчислении предикатов
- •Задачи и упражнения
- •Глава 4 математические теории
- •§ 1. Теории первого порядка. Основные понятия
- •§ 2. Примеры математических теорий из алгебры, анализа, геометрии
- •1. Теория частичного упорядочения.
- •2. Теория групп.
- •3. Аффинная геометрия.
- •§ 3. Интерпретация языка теории
- •§ 4. Проблемы непротиворечивости, полноты, разрешимости теории
- •2. Проблема полноты.
- •3. Проблема разрешимости.
- •Глава 5 алгоритмы
- •§ 1. Понятие алгоритма и его характерные черты
- •§ 2. Разрешимые и перечислимые множества
- •§ 3. Уточнение понятия алгоритма
- •§ 4. Вычислимые функции. Частично рекурсивные и общерекурсивные функции
- •1. Суперпозиция функций.
- •2. Схема примитивной рекурсии.
- •§ 5. Машины Тьюринга
- •§ 6. Нормальные алгоритмы Маркова
- •§ 7. Неразрешимые алгоритмические проблемы (обзор)
- •1.Неразрешимость проблемы распознавания выводимости в математической логике.
- •3. Проблема эквивалентности слов для ассоциативных исчислений.
- •4. Неразрешимость десятой проблемы Гильберта о диофантовых уравнениях.
- •Задачи и упражнения
- •Заключение
- •Библиографический список
- •Математическая логика и теория алгоритмов
- •660014, Красноярск, просп. Им. Газ. «Красноярский рабочий», 31.
- •660028, Г. Красноярск, ул. Водопьянова, 2-241.
§ 3. Уточнение понятия алгоритма
В истории математики накопилось много случаев длительных и часто безрезультатных поисков тех или иных алгоритмов. При этом естественно возникало сомнение в существовании алгоритма.
Одним из ярких примеров такого случая является история решения десятой проблемы Д. Гильберта.
В 1900 году на втором международном математическом конгрессе в Париже немецкий математик Давид Гильберт огласил список 23 трудных проблем, на важность решения которых он обращал внимание математической общественности. Среди них была и следующая 10-ая проблема Гильберта: требуется выработать алгоритм, позволяющий для любого диофантова уравнения выяснить, имеет ли оно целочисленное решение.
Рассмотрим всевозможные диофантовы уравнения, т.е. уравнения вида Р = 0, где Р является многочленом с целочисленными коэффициентами. Такими будут, например, уравнения:
х2 + у2 - 2хz = 0,
10x5 + 7x2 + 5 = 0,
из которых первое с тремя неизвестными, а второе с одним неизвестным. В общем случае рассматривают уравнения с любым числом неизвестных. Такие уравнения могут иметь целочисленные решения, а могут и не иметь.
Так, уравнение х2+у2-2xz=0 имеет бесконечное множество целочисленных решений, а уравнение 10x5 + 7x2 + 5 = 0 таких решений не имеет.
Для частного случая диофантова уравнения с одним неизвестным давно известен алгоритм, позволяющий найти все его целочисленные решения. Установлено, что если уравнение
с целочисленными коэффициентами имеет целый корень, то он обязательно является делителем а. В связи с этим можно предложить такой алгоритм:
Найти все делители числа an: d1, d2, ,.., dn .
Вычислить Рп(х) для каждого из делителей числа а.
3) Если при некотором i из совокупности 1,2,...,k Pn(di ) =0, то di - корень уравнения. Если при всех i = l,2,...,k Pn(di ) 0, то уравнение не имеет целочисленных решений.
Поиски решения десятой проблемы Гильберта привлекли внимание многих математиков и длились около 70 лет. Только в 1968 году молодым математиком Ю. Матиясевичем было доказано, что нет алгоритма, дающего решение поставленной задачи.
Интуитивное определение алгоритма хотя и не строгое, но настолько ясное, что не дает оснований для сомнений в тех случаях, когда речь идет о найденном алгоритме решения конкретной задачи.
Положение существенно меняется, когда возникает алгоритмическая проблема, решение которой не найдено, и требуется установить, имеет ли она решение.
Действительно, в этом случае нужно либо доказать существование алгоритма, либо доказать его отсутствие.
В первом случае достаточно дать описание фактического процесса, решающего задачу. В этом случае достаточно и интуитивного понятия алгоритма, чтобы удостовериться в том, что описанный процесс есть алгоритм.
Во втором случае нужно доказать несуществование алгоритма, а для этого нужно точно знать, что такое алгоритм. Между тем для общего понятия алгоритма точного определения до тридцатых годов XX века не было, и поэтому выработка такого определения стала одной из важных задач современной математики. При формулировке этого определения пришлось преодолеть многие трудности.
Во-первых, такое определение должно было правильно отражать сущность интуитивного определения алгоритма.
Во-вторых, оно должно было быть совершенным с точки зрения формальной точности.
И наконец, различные исследователи этой проблемы исходили из разных технических и логических соображений, и вследствие этого было выработано несколько определений алгоритма. Однако со временем выяснилось, что все эти определения равносильны, т.е. определяют одно и то же понятие. Это и есть современное понятие алгоритма.
В подходах к определению понятия алгоритма можно выделить три основных направления.
Первое направление связано с уточнением понятия эффективно вычислимой функции. Этим занимались А. Черч, К. Гедель, С. Клини. В результате был выделен класс так называемых частично рекурсивных функций, имеющих строгое математическое определение. Анализ идей, приведших к этому классу функций, дал им возможность высказать гипотезу о том, что класс эффективно вычислимых функций совпадает с классом частично рекурсивных функций.
Второе направление связано с машинной математикой. Здесь сущность понятия алгоритма раскрывается путем рассмотрения процессов, осуществляемых в машине. Впервые это было сделано Тьюрингом, который предложил самую общую и вместе с тем самую простую концепцию вычислительной машины. Ее описание было дано Тьюрингом в 1937 году. При этом Тьюринг исходил лишь из общей идеи работы машины как работы вычислителя, оперирующего в соответствии с некоторым строгим предписанием.
Третье направление связано с понятием нормальных алгоритмов, введенным и разработанным российским математиком А. А. Марковым.