
- •Введение
- •1. Основные сведения из формальной логики
- •1.1. Введение в формальную логику
- •1.2. Формы познания человеком окружающего мира
- •1.3. Формы абстрактного мышления
- •«Все s есть p»,
- •«Если s есть p, то s есть p1».
- •1.4. Содержательное описание основных законов классической формальной логики и границы их применимости
- •1.5. Способы правильных умозаключений, обусловленных основными законами формальной логики.
- •1.6. Правильные способы рассуждений, основанные на теории силлогизмов
- •Вопросы для самоконтроля
- •2. Элементы теории множеств
- •2.1. Понятие множества. Способы задания множеств
- •Упражнения
- •2.2. Части множеств
- •2.2.1. Понятие подмножества
- •2.2.2. Множество-степень
- •2.2.3. Понятие о верхней и нижней гранях множеств
- •2.3. Операции над множествами.
- •2.4. Основные свойства операций над множествами
- •2.5. Отношения на множествах
- •2.5.1. Операции над отношениями
- •2.5.2. Основные свойства отношений
- •2.6. Функции как отношения на множествах
- •2.7. Отношения эквивалентности
- •2.8. Отношения порядка
- •Упражнения
- •Парадоксы теории множеств
- •Вопросы для самоконтроля
- •1. Алгебра логики
- •Понятие о простом и сложном высказывании
- •Упражнения
- •Логические операции над высказываниями
- •Упражнения
- •Упражнения
- •1.4. Аксиомы и законы алгебры логики
- •1.4.1. Правила склеивания для элементарных конъюнкций и дизъюнкций
- •Дизъюнкций
- •1.4.3. Правило развёртывания
- •Все ке для двух высказываний
- •Развёртывание элементарной дизъюнкции
- •Упражнения
- •1.5. Функции алгебры логики. Нормальные формы логических функций
- •Общая запись любой логической функции в сндф имеет вид
- •Пример. По заданной таблице истинности составить сндф функций
- •Снкф для выше приведенной таблицы истинности будут иметь вид
- •Упражнения
- •1.6.Минимизация логических функций
- •1.6.1. Расчетный метод минимизации
- •1.6.2. Табличный метод минимизации
- •1.6.3. Расчетно-табличный метод минимизации (метод Квайна)
- •Упражнения
- •1.7. Некоторые применения алгебры логики
- •Упражнения
- •Вопросы для самоконтроля
- •2. Исчисление высказываний
- •2.1. Понятие формулы исчисления высказываний
- •Упражнения
- •2.2. Аксиомы и простейшие правила вывода
- •Система аксиом исчисления высказываний
- •Тогда правило подстановка схематически запишется так
- •2.3. Определение доказуемой формулы
- •Рассмотрим примеры получения доказуемых формул.
- •2.4. Производные правила вывода
- •Упражнения
- •2.5. Определение формулы, выводимой из совокупности формул н
- •2.6. Понятие вывода
- •2.7. Основные правила выводимости
- •2.8. Доказательство некоторых законов логики
- •2.9. Проблемы аксиоматического исчисления высказываний
- •Вопросы для самоконтроля
- •3. Логика предикатов
- •3.1. Понятие предиката
- •3.2. Логические операции над предикатами
- •Упражнения
- •Кванторные операции
- •Упражнения
- •Определение формулы логики предикатов
- •3.5. Равносильные формулы логики предикатов
- •Упражнения
- •3.6. Предварённая нормальная форма
- •Выполнимость и общезначимость формул
- •Упражнения
- •Применение языка логики предикатов в математике и технике
- •Вопросы для самоконтроля
- •4. Основные положения теории алгоритмов
- •4.1. Интуитивное понятие алгоритма
- •4.2. Уточнение понятия алгоритма
- •4.3. Частично-рекурсивные и общерекурсивные функции
- •Упражнения
- •4.4. Машины Тьюринга
- •Упражнения
- •4.5. Понятие о нормальных алгоритмах Маркова
- •4.6. Алгоритмически неразрешимые проблемы
- •4.7. Сложность алгоритмов
- •Вопросы для самоконтроля
- •Ответы и решения
- •Раздел 1
- •Подраздел 1.3
- •Раздел 2
- •Раздел 3.
- •Раздел 4
- •Библиографический список
- •Список сокращений
- •Содержание
4.3. Частично-рекурсивные и общерекурсивные функции
Простейшими эффективно вычислимыми функциями принято считать следующие три числовые функции:
1)
;
2)
;
3)
.
Иногда данные функции называют соответственно: оператор сдвига, оператор аннулирования и оператор проектирования. Все эти три функции всюду определены и интуитивно вычислимы.
Для построения частично-рекурсивных функций вводится три основных операции над простейшими функциями. Рассмотрим каждую из них.
1. Операция суперпозиции функций (составление из двух и более функций одной сложной функции, или, то же самое, что подстановка функции в функцию).
Пусть даны функции
и
.
Рассмотрим функцию
,
определяемую равенством
Говорят, что
функция
получена из функций
и
их суперпозицией.
Очевидно, что если
все функции
и
всюду определены, то всюду определена
и функция
.
Функция
будет не всюду определенной, если хотя
бы одна из функций
не всюду определена или если можно найти
такие значения аргументов
,
при которых функция
не всюду определена.
Приведем примеры
построения постоянных функций, принимающих
значения 1 и 2, путем применения операции
суперпозиции к простейшим числовым
функциям
и
.
Запишем функцию
в виде
Пусть
,
а
тогда
Пусть
,
а
,
.
Пусть функция
связывает функции
и
как функцию от функции, тогда будем
иметь
.
Так как простейшие
функции являются всюду определенными
и интуитивно вычислимыми, то, очевидно,
функции
и
тоже будут всюду определенными интуитивно
вычислимыми.
2. Операция
(схема) примитивной рекурсии.
Центральное место в построении
частично-рекурсивных функций занимает
операция, или так называемая схема
примитивной рекурсии (СПР). Она задается
следующим образом. Пусть имеются две
функции
и
.
Из этих функций составим новую функцию,
удовлетворяющую следующим равенствам:
(1)
Нетрудно заметить,
что функция
зависит от
аргумента, функция
− от
аргументов, а функция
– от
аргумента. Говорят, что если функция
получена из функций
и
и удовлетворяет системе равенств (1), то
она получена по схеме примитивной
рекурсии.
Очевидно, что если
функции
и
интуитивно вычислимы, то интуитивно
вычислимой будет и функция
.
Действительно, пусть
.
Тогда последовательно находим
;
;
и т.д. Тем самым рекурсивно получаем значения функции .
В частности, если
функция
зависит только от двух аргументов, т.е.
имеет вид
,
то СПР будет иметь вид
(2)
Если же функция зависит всего лишь от одного аргумента, то СПР будет иметь вид
,
(3)
где a – любое постоянное число.
Ранее мы уже
определили частично-рекурсивную функцию
как функцию, которая получается за
конечное число шагов из простейших
функций
,
и
с помощью операции суперпозиции, СПР и
операции минимизации. Если же функция
получается из тех же простейших функций,
и
с помощью только операции суперпозиции
и СПР (т.е. без применения операции
минимизации, рассмотрение которой нам
еще предстоит), то такую функцию называют
примитивно
рекурсивной.
Операция суперпозиции и СПР, примененные
ко всюду определенным функциям, дают
снова всюду определенные функции.
Поэтому все примитивно-рекурсивные
функции всюду определены.
Если функция частично-рекурсивна и всюду определена, то она называется общерекурсивной.
Рассмотрим примеры приведения некоторых функций к примитивно рекурсивной форме с последующим вычислением значений этих функций.
Пример.1.
Пусть функция
задана равенствами [перемена мест
аргументов в обозначении функции роли
не играет, поэтому можем писать как
,
так и
]:
(4)
Очевидно, что в
этой системе равенств
Но второе равенство системы (4) еще не
дает основания считать, что система
этих двух равенств представляет СПР,
поскольку по определению правая часть
второго равенства должна зависеть от
трех (в данном случае) аргументов. Поэтому
левую часть второго равенства, зависящую
от двух аргументов
,
приведем к виду, зависящему от трех
аргументов
,
т.е. нам надо получить
в явном виде.
По определению
примитивной рекурсии
,
тогда на основании второго равенства
нашей системы будем иметь
.
Сделаем замену
,
тогда
но функцию
от двух аргументов мы можем обозначить
любой дугой буквой, например,
.
Тогда получим
.
Таким образом,
исходную функцию
заданную двумя равенствами, мы свели к
СПР, заданной также двумя равенствами:
(5)
Вычислим
при
,
используя полученную СПР соответствующее
число раз (фактически используя алгоритм
в строгом смысле его понимания).
Из первого равенства
системы (5), изменяя x
от 0 до 2, получим
Из второго равенства
системы (5) и из того, что
последовательно можно записать:
Представляет
интерес вопрос определения аналитического
вида функции
соответствующей СПР (5). Для этого
воспользуемся сначала вторым равенством
системы (5) и последовательно запишем
.
Проделав эту
операцию
раз, мы
придем в конце концов к выражению
.
Но учитывая первое равенство системы
(4)
,
окончательно будем иметь
.
Отсюда видим, что обычную операцию
сложения можно свести к алгоритмическому
процессу (к схеме примитивной рекурсии)
вычисления суммы двух чисел. Действительно,
используя СПР в рассматриваемом примере,
мы получили
.
То же самое мы получим из аналитического
выражения при тех же численных значениях
аргументов
.
3.
Операция минимизации (μ-оператор).
Пусть дана
некоторая функция
.
Зафиксируем значение
и найдем значение
,
при котором
.
В частном случае может
.
Сложнее решается задача отыскания для
данной функции
и фиксированного
наименьшего из тех значений
при котором
.
Очевидно, что результат решения задачи
зависит от
поэтому
наименьшее значение y,
при котором
,
есть функция от x,
т.е.
.
Эту функцию принято обозначать
,
и при этом говорят, что для перехода
от функции
к функции
применяется μ-оператор.
Читается эта запись так: “наименьшее
y
такое, что
”.
Для функции переменных μ- оператор определяется аналогично
.
Получать функцию из функции путем применения μ-оператора можно по следующему алгоритму.
1. Вычислим
.
Если
,
то полагаем
.
Если
,
то увеличиваем
на 1 и
переходим к следующему шагу.
2. Вычислим
.
Если
,
то полагаем
.
Если же
,
то увеличиваем
на 1 и переходим к шагу 2.
Этот процесс будет
продолжаться до тех пор, пока не найдется
значение
,
при котором окажется
.
Найденное значение
и будет минимальным. Но может оказаться,
что ни при каких значениях
функция
,
и процесс будет продолжаться бесконечно
долго. В этом случае считают функцию
неопределенной. Возможны и другие
случаи, когда процесс будет продолжаться
бесконечно долго. Это будет тогда, когда
значение функции
не определено, а также когда значения
функции
для
определены, но отличны от
,
а значение
не определено.
Пример 2.
Функцию
представим с помощью μ-оператора:
.
Пользуясь представлением функции
в виде μ-оператора,
вычислим, например, ее значение при
,
т.е. найдем то значение
при котором
.
Для этого, зафиксировав
,
будем последовательно изменять значения
:
Таким образом,