- •1. Основы математической логики
- •1.1. Понятие составного высказывания
- •1.2. Логические операции над высказываниями
- •1.3. Логические отношения
- •1.4. Варианты импликации
- •1.5. Основные законы, определяющие свойства логических операций
- •1.6. Понятие булевой функции
- •1.7. Основные свойства элементарных булевых функций
- •1.8. Дизъюнктивные и конъюнктивные нормальные формы алгебры логики
- •Алгоритм построения
- •1.9. Совершенная дизъюнктивная и совершенная конъюнктивная нормальные формы
- •1.10. Многочлены Жегалкина
- •2. Множества и отображения
- •2.1. Понятие множества
- •2.2. Способы задания множеств
- •2.3. Подмножества
- •2.4 Операции над множествами
- •2.5. Соотношение между множествами и составными высказываниями
- •2.6. Соотношение между высказываниями и соответствующими им множествами истинности
- •2.7 Абстрактные законы операций над множествами
- •2.8. Кортежи и декартовое произведение множеств
- •2.9. Бинарные отношения
- •2.10. Отображение множеств
- •2.11. Функции
- •3. Логика предикатов или логика первого порядка
- •3.1. Предикаты
- •3.2. Применение предикатов в алгебре
- •3.3. Булева алгебра предикатов
- •3.4. Кванторы
- •3.5. Формулы логики предикатов
- •3.6. Равносильные формулы логики предикатов
- •3.7. Приведённые и нормальные формы в логике предикатов
- •3.8. Исчисление предикатов
- •4. Элементы теории алгоритмов
- •4.1. Вычислимые функции и алгоритмы
- •4.2. Свойства алгоритмов
- •4.3. Понятия разрешимого предиката, разрешимого множества, перечислимого множества
- •4.4. Пример алгоритма
- •4.5. Интуитивное понятие алгоритма
- •4.6.Теория рекурсивных функций. Простейшие функции
- •4.7. Операторы
- •4.8. Примитивно рекурсивные функции
- •4.9. Частично рекурсивные функции
- •4.10. Примитивно-рекурсивные предикаты
- •4.11. Нормальный алгоритм Маркова: основные понятия
- •4.12. Проблема слов в ассоциативном исчислении
- •4.13. Алгоритм в некотором алфавите а
- •4.14. Понятие нормального алгоритма
- •5. Примеры решения типовых задач. Задания для самостоятельного решения
- •5.1. Булевы функции. Таблицы истинности
- •Задания для самостоятельного решения
- •5.2. Равносильность булевых функций
- •Задания для самостоятельного решения
- •5.3. Преобразование булевых функций
- •Задания для самостоятельного решения
- •5.4. Функциональная полнота
- •Задания для самостоятельного решения
- •5.5. Булева алгебра. Нормальные формы
- •Задания для самостоятельного решения
- •5.6. Минимальные формы
- •Задания для самостоятельного решения
- •5.7. Алгебра Жегалкина
- •Задания для самостоятельного решения
- •5.8. Алгебра высказываний
- •Задания для самостоятельного решения
- •5.9. Предикаты
- •Задания для самостоятельного решения
- •5.10. Исчисление высказываний
- •Задания для самостоятельного решения
- •Список рекомендуемой литературы
4.5. Интуитивное понятие алгоритма
Приведенные выше определения и свойства алгоритмов являются эмпирическими, подмеченными для всех известных алгоритмов. Таким образом, понятие алгоритма и понятие вычислимой функции выводятся непосредственно из опыта и могут быть усвоены лишь на примерах, а поэтому эти понятия являются интуитивными и не могут быть положены в основу математической теории алгоритмов.
После того как было сформулировано интуитивное понятие алгоритма, были предприняты усилия дать его точное математическое определение.
В результате появились несколько вариантов определения алгоритма, которые трактуются как самостоятельные математические понятия. Каждое из них имеет свое название: «Теория рекурсивных функций», « Нормальные алгоритмы Маркова», «Машины Тьюринга».
4.6.Теория рекурсивных функций. Простейшие функции
Прежде всего рассмотрим следующие простейшие функции, которые называются базисными.
(a) нуль — функция 0 (0(х) = 0 для всех х);
(b)
функция следования
,
которая означает переход к следующему
элементу заданного множества;
(c)
функция тождества, или функция выделения
аргумента: для каждых
функция
определяемая посредством
Эти функции вычислимы, и на их основе построим более сложные вычислимые функции — с помощью преобразований, которые называются операторами.
4.7. Операторы
а) Оператор суперпозиции (подстановки). В основе этого оператора лежит способ вычисления, который состоит в том, что если мы умеем вычислять функции f и g, то мы сумеем вычислить функцию h = f(g).
Пусть
f
—
m-местная
функция,
—
n-местные
частичные функции на множестве N.
Оператор
S,
ставящий в соответствие функциям f
и
—
n-местную
функцию h,
которая удовлетворяет тождеству
называется оператором суперпозиции (подстановки). При этом определенная всюду функция h = S(f, g1,...) является суперпозицией функций f и .
б) Оператор примитивной рекурсии. В основе этого оператора лежит широко распространенный способ вычисления функции натурального аргумента, состоящий в том, что задается f(0) и так называемая рекуррентная формула f(n + 1) = h(f(n)), позволяющая вычислить f(n + 1), если известно f(n). С помощью этой формулы последовательно вычисляются f(1), f(2) и т.д. Такой процесс последовательного вычисления значений функции называется рекурсией.
Пусть заданы какие-либо числовые частичные функции: n-местная g и (п + 2)-местная h. (п + 1)-местная частичная функция f возникает из функций g и h с помощью оператора примитивной рекурсии, если она может быть задана схемой примитивной рекурсии:
Совокупность этих равенств для любых функций g и h однозначно определяет значения функции f. Таким образом, для каждых двух частичных числовых функций g от п переменных и h от (п + 2) переменных существует одна и только одна функция f от (п + 1) переменной, возникающая в результате примитивной рекурсии. Оператор примитивной рекурсии будем обозначать через f = R(g, h).
Итак, схема примитивной рекурсии образует некоторый, индуктивный процесс построения функции h, при котором на нулевом шаге используется функция g, а на каждом последующем шаге — значение функции f от аргументов , номер у предыдущего шага и значение функции h, вычисленного на предыдущем шаге. Заметим, что оператор примитивной рекурсии можно применять по любым переменным, входящим в функции f, g и h, но всегда нужно указывать, по каким переменным этот оператор проводится.
в) Оператор минимизации. Существует третья важная операция, порождающая новые вычислимые функции, а именно неограниченная минимизация, или просто минимизация.
Пусть f(x,y) — функция, и мы хотим определить функцию g(x), положив g(x) = наименьшее у такое, что f(x, у) = 0. При этом из вычислимости / должна следовать вычислимость g. Для этого введем следующее определение оператора минимизации μ, который дает вычислимые функции из вычислимых функций.
Для каждой функции f(x, у)
μу(...) читается как «наименьший у, такой, что...».
Этот оператор называют иногда μ-оператором.
Сформулируем следующую теорему: Пусть f(x, у) вычислима; тогда вычислима и функция g(x) = μy (f(x, у) = 0).
