ОПД.В.1 Дополнительные главы дискретной математики

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Мурманский государственный гуманитарный университет»
(ФГБОУ ВПО «МГГУ»)
УТВЕРЖДАЮ:
проректор по учебной работе
________________ И.А.Архип
«____»____________200___ г.
УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС
ДИСЦИПЛИНЫ
ОПД.В.1.1 ДОПОЛНИТЕЛЬНЫЕ ГЛАВЫ ДИСКРЕТНОЙ МАТЕМАТИКИ
Основная образовательная программа подготовки специалиста по специальности
010200 (010501) «Прикладная математика и информатика»
Утверждено на заседании кафедры
математики и математических методов
в экономике факультета
физико-математического образования,
информатики и программирования
(протокол № 6 от 27 февраля 2013 г.)
Зав. кафедрой _______________О.М. Мартынов
1.1 Автор программы: кандидат технических наук, доцент Ланина Н.Р.
1.2 Рецензент: доктор физико-математических наук, профессор Маренич Е.Е., кандидат физико-математических наук, доцент Верещагин Б.М.
1.3 Пояснительная записка:
Целью изучения курса дискретной математики является математическая подготовка
студентов на уровне, необходимом и достаточном для:
 усвоения материала специальных дисциплин;
 практической работы по специальности;
 формирования умения исследовать математические модели, обрабатывать и анализировать экспериментальные данные.
Основными задачами изучения данной дисциплины являются:
 формирование у студентов математической культуры и развитие логического
мышления;
 формирование целостной системы знаний о теории производящих функций и рекуррентных уравнений, а также об основах теории алгоритмов;
 обучение составлению математических моделей и основным методам решения задач теории графов и алгебры логики;
 обучение решению прикладных задач математическими методами;
 развитие способности творчески подходить к решению профессиональных задач.
В результате изучения курса студенты
должны знать: об основных понятиях и утверждениях, входящих в содержание дисциплины, методах решения задач теории производящих функций и рекуррентных уравнений, об вычислимых функциях и неразрешимых алгоритмических проблемах.
должны уметь:
 применять производящие функции для вычисления сумм и решения задач комбинаторики;
 строить математические модели задач, решаемых с помощью рекуррентных уравнений;
 конструировать машину Тьюринга, вычисляющую заданную функцию;
 доказывать примитивную рекурсивность функций;
 использовать пакеты прикладных программ для решения задач дискретной математики с помощью новых информационных технологий.
1.4. Курс входит в раздел дисциплин регионального вузовского компонента.
1.5. Объем дисциплины и виды учебной работы.
№
п/п
Шифр и наименование специальности
1
010501 «Прикладная математика и
информатика»
Курс
Семестр
Трудоемкость
2
3
110
Виды учебной работы в часах
Всего
ЛК
ПР/ ЛБ
Сам.
аудит.
СМ
работа
66
36
30
–
44
Вид итогового контроля
(форма отчетности)
экзамен
3
1.6 Содержание дисциплины.
1.6.1 Разделы дисциплины и виды занятий (в часах). Примерное распределение учебного
времени:
№
п/п
Наименование раздела, темы
1
Производящие функции и их применение
Рекуррентные уравнения
Теория алгоритмов
ИТОГО
2
3
Количество часов
для специальности 010200 «Прикладная
математика и информатика»
Всего
ЛК
ПР
ЛБ
Сам.
ауд.
раб.
38
12
10
–
16
38
34
110
12
12
36
10
10
30
–
–
–
16
12
44
1.6.2 Содержание разделов дисциплины.
Производящие функции и их применение
Преобразование Паскаля. Треугольник Паскаля. Бином Ньютона. Формальные степенные ряды (ФСР). Алгебра отношений. Биномиальная алгебра. Композиция ФСР. Обратимость ФСР Интегрирование ФСР. Дифференцирование ФСР. Производящая функция (ПФ).
Экспоненциальная ПФ. Основной принцип теории ПФ. Простейшие ПФ. Операции над ПФ:
линейные, изменение масштаба, сдвиг начала, подобие, свертка. Применение ПФ к решению
перечислительных задач: сочетания, сочетания с повторениями, размещения, размещения с
повторениями, композиции, разбиения.
Рекуррентные уравнения
Задача Фибоначчи. Определение рекуррентного уравнения (РУ). Линейные однородные РУ с постоянными коэффициентами. Характеристическое уравнение. Линейные неоднородные РУ с постоянными коэффициентами. Пути решения линейных РУ с переменными
коэффициентами.
Теория алгоритмов
Определение машины Тьюринга. Примеры машин Тьюринга. Функция, вычислимая
по Тьюрингу. Эквивалентные машины Тьюринга. Универсальная машина. Тезис Чёрча —
Тьюринга. Неразрешимые алгоритмические проблемы. Примитивно-рекурсивные функции.
Примитивно-рекурсивные предикаты и операторы. Функции Аккермана. Общерекурсивные
и частично-рекурсивные функции.
1.6.3 Темы для самостоятельного изучения.
№ п/п
Наименование раздела
дисциплины.
Тема.
Форма самостоятельной работы
2
Производящие функции и
их применение
Рекуррентные уравнения
3
Теория алгоритмов
Контрольная работа № 1
Контрольная работа № 1
Контрольная работа № 2
1
Форма контроля
выполнения
самостоятельной
работы
Проверка контрольной работы
Проверка контрольной работы
Проверка контрольной работы
Количество
часов
16
16
12
4
1.7 Методические рекомендации по организации изучения дисциплины.
1.7.1 Тематика и планы практических занятий по изученному материалу
Практические занятия по теме «Производящие функции и их применение»
ПР № 1. Треугольник Паскаля. Бином Ньютона.
ПР № 2. Суммирование и его свойства. Вычисление сумм.
ПР № 3. Операции над формальными степенными рядами.
ПР № 4. Использование таблицы простейших производящих функций: нахождение
производящих функций данных числовых последовательностей, восстановление числовой
последовательности по данной производящей функции.
ПР № 5. Применение производящих функций для вычисления сумм и решения комбинаторных задач.
Литература
1. Иванов Б.Н. Дискретная математика. Алгоритмы и программы: Учеб. пособие. - М.:
Лаборатория базовых знаний, 2001. - 288 с.
2. Сборник упражнений по курсу “Дискретная математика” для практических и индивидуальных занятий по специальности 220400. /Сост. Н.Р.Ланина. Мурманск: Изд-во МГТУ,
2000. - 31 с.
Практические занятия по теме «Рекуррентные уравнения»
ПР № 6. Решение однородных линейных рекуррентных уравнений.
ПР № 7. Решение неоднородных линейных рекуррентных уравнений.
ПР № 8. Решение текстовых задач, сводимых к рекуррентным уравнениям.
ПР № 9. Контрольная работа № 1.
ПР № 10. Обсуждение результатов контрольной работы. Работа над ошибками.
Литература
1. Иванов Б.Н. Дискретная математика. Алгоритмы и программы: Учеб. пособие. - М.:
Лаборатория базовых знаний, 2001. - 288 с.
Практические занятия по теме «Теория алгоритмов»
ПР № 6. Машины Тьюринга.
ПР № 7. Конструирование машин Тьюринга.
ПР № 8. Примитивно-рекурсивные функции. Доказательство примитивной рекурсивности.
ПР № 14. Контрольная работа № 2.
ПР № 15. Обсуждение результатов контрольной работы. Работа над ошибками.
Литература
1. Иванов Б.Н. Дискретная математика. Алгоритмы и программы: Учеб. пособие. - М.:
Лаборатория базовых знаний, 2001. - 288 с.
2. Лавров И.А., Максимова Л.Л. Задачи по теории множеств, математической логике и
теории алгоритмов. - М.: ФИЗМАТЛИТ, 2001. - 256 с.
1.8 Учебно-методическое обеспечение дисциплины.
1.8.1 Рекомендуемая литература:
Основная литература.
лекции
1. Мальцев А.И. Алгоритмы и рекурсивные функции. - М.: Наука, 1986. - 368 с.
5
2. Матросов В.А., Стеценко В.А. Лекции по дискретной математике. - М.: МПГУ,
1997.
3. Сачков В.Н. Введение в комбинаторные методы дискретной математики. М.: Наука,
1982. - 384 с.
4. Яблонский С.В. Введение в дискретную математику: Учеб. пособие для вузов. М.:
Высш. шк., 2001. - 384 с.
практические занятия
5. Иванов Б.Н. Дискретная математика. Алгоритмы и программы: Учеб. пособие. - М.:
Лаборатория базовых знаний, 2001. - 288 с.
6. Лавров И.А., Максимова Л.Л. Задачи по теории множеств, математической логике и
теории алгоритмов. - М.: ФИЗМАТЛИТ, 2001. - 256 с.
7. Сборник упражнений по курсу “Дискретная математика” для практических и индивидуальных занятий по специальности 220400. /Сост. Н.Р.Ланина. Мурманск: Изд-во МГТУ,
2000. - 31 с.
Дополнительная литература
лекции
1. Грин Д., Кнут Д. Математические методы анализа алгоритмов. - М.: Мир, 1987. 120 с.
2. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. Теория и практика. - М.: Мир, 1980. - 476 с.
практические занятия
3. Нефедов В.Н., Осипова В.А. Курс дискретной математики. М.: Издательство МАИ,
1992. - 264 с.
1.9 Материально-техническое обеспечение дисциплины.
1.9.1 Электронный конспект лекций
1.10 Примерные зачетные тестовые задания.
Контрольная работа №1. «Производящие функции и рекуррентные уравнения»
Пример одного варианта
1. Даны последовательности: 2, 3, 6, 11, 18, 27, 38, 51, ... и 6, 36, 216, 1296, ...
а) Составить их ПФ a(x), b(x) и вычислить коэффициент при x3 в произведении
a(x)  b(x);
б) Составить их ЭПФ ae(x), be(x) и вычислить коэффициент при x2 в произведении
ae(x)  be(x).
2. По данной ПФ восстановить числовую последовательность:
a*(x) = (2x2 + 13x + 27) / (4 + x)3
3. Решить уравнение:
f(n+4) = 2 f(n+3) + 12 f(n+2) + 14 f(n+1) + 5 f(n)
при заданных начальных условиях: f(0) = 4, f(1) = 1; f(2) = 34; f(3) = 107.
4. Решить уравнение:
f(n+2) = 7 f(n+1) + 18 f(n) + ( 44n  8) 2n;
при заданных начальных условиях: f(0) = 11, f(1) = 0.
6
Контрольная работа №2 «Теория алгоритмов»

1
q1
 L q2
1 E q0
q2
 E q5
 E q3
q3
 L q4
1 E q0
q4
1 E q5
1 L q4
q5
 E q0
1 L q6
q6
 E q0
 E q7
q7
 R q8
1 E q0
q8
1 E q9
1 R q8
q9
 E q0
1 L q10
q10
 E q0
 E q11
q11
 L q12
1 E q0
q12
1 E q13
1 L q12
q13
 E q0
1 E q0
Пример одного варианта
1. Изображая на каждом такте работы машины Тьюринга получающуюся конфигурацию, определите, в какое слово
перерабатывает машина каждое из следующих слов (в начальный момент времени машина находится в состоянии q1 и обозревает крайнюю правую ячейку, в которой записан пустой
символ , в следующей слева ячейке уже записан символ 1):
а) 111111,
б) 111111111,
в) 1111111111.
2. Доказать, что функция f(x) = x! примитивнорекурсивна..
1.11 Примерный перечень вопросов к зачету (экзамену).
Производящие функции и их применение
1. Алгебра отношений. Биномиальная алгебра. Доказательство того факта, что обе алгебры являются целостными кольцами
2. Формальные степенные ряды (ФСР). Композиция ФСР. Условие, при котором осуществима композиция (с доказательством)
3. Формальные степенные ряды (ФСР). Обратимость ФСР. Условие существования
обратного ряда (с доказательством)
4. Формальные степенные ряды (ФСР). Интегрирование и дифференцирование ФСР (с
доказательством любых двух свойств).
5. Производящая функция (ПФ). Экспоненциальная ПФ. Основной принцип теории
ПФ.
6. Операции над ПФ: линейные, изменение масштаба, сдвиг начала, подобие, свёртка
(с доказательством).
7. Применение ПФ к решению перечислительных задач: сочетания, сочетания с повторениями, размещения, размещения с повторениями.
8. Применение ПФ к решению перечислительных задач: композиции, разбиения.
Рекуррентные уравнения
9. Рекуррентные уравнения. Основные определения. Задача Фибоначчи.
10. Линейные рекуррентные уравнения с постоянными коэффициентами. Теорема о
виде общего решения (с доказательством).
11. Однородные линейные рекуррентные уравнения с постоянными коэффициентами.
Теорема об общем решении (с доказательством).
12. Пути решения нелинейных рекуррентных уравнений.
7
Теория алгоритмов
13. Определение машины Тьюринга, ее четыре составные части: лента, читающая головка, алфавиты и множество команд.
14. Конструирование машин Тьюринга на примере машины, стирающей последний
символ исходного слова и машины, дописывающей три единицы к исходному слову.
15. Проблема остановки машины Тьюринга (с доказательством).
16. Тезис Черча-Тьюринга, его научный “статус” и применение в теории алгоритмов.
17. Проблема распознавания нетривиального инвариантного свойства машины
Тьюринга (с доказательством).
18. Эквивалентные машины Тьюринга. Примеры эквивалентных машин.
19. Оператор суперпозиции. Оператор примитивной рекурсии. Определение примитивно-рекурсивной функции.
20. Примеры построения примитивно-рекурсивных функций.
21. Примитивно-рекурсивные операторы. Ограниченный оператор минимизации.
Оператор обращения.
22. Функции Аккермана и их свойства.
23. Доказательство того факта, что функция Аккермана не является примитивнорекурсивной.
24. Общерекурсивные и частично-рекурсивные функции.
1.12 Комплект экзаменационных билетов.
Билет № 1.
1. Теорема о целостных кольцах.
2. Функция Аккермана и её свойства.
Билет № 2.
1. Композиция формальных степенных рядов. Условие существования композиции.
2. Неразрешимая алгоритмическая проблема  проблема распознавания нетривиального инвариантного свойства.
Билет № 3.
1. Обратимость формальных степенных рядов. Условие существования обратного ряда.
2. Теорема о том, что функция Аккермана не является примитивно-рекурсивной.
Билет № 4.
1. Вывод формулы дифференцирования произведения формальных степенных рядов.
2. Ограниченный и неограниченный оператор минимизации. Оператор обращения.
Частично-рекурсивные и общерекурсивные функции.
Билет № 5.
1. Шесть операций над производящими функциями, соответствующих операциями
над числовыми последовательностями.
2. Неразрешимая алгоритмическая проблема  проблема остановки.
Билет № 6.
1. Производящие функции числа сочетаний, сочетаний с повторениями. Число сочетаний с повторениями без ограничения на кратность элементов.
2. Схема примитивной рекурсии. Примитивно-рекурсивные функции: определение,
примеры (с доказательством примитивной рекурсивности).
8
Билет № 7.
1. Экспоненциальные производящие функции числа размещений, размещений с повторениями. Число размещений с повторениями без ограничения на кратность элементов.
2. Теорема о том, что функция Аккермана не является примитивно-рекурсивной.
Билет № 8.
1. Производящие функции числа композиций (на m частей, на произвольное количество частей).
2. Функция Аккермана и её свойства.
Билет № 9.
1. Производящие функции числа разбиений на m частей. Число решений в целых неотрицательных числах уравнения x1 + 2x2 + 3x3 + ... + mxm = k.
2. Неразрешимая алгоритмическая проблема  проблема распознавания нетривиального инвариантного свойства.
Билет № 10.
1. Теорема об общем виде решения линейного рекуррентного соотношения с постоянными коэффициентами.
2. Машина Тьюринга. Примеры машин Тьюринга. Функция, вычислимая по Тьюрингу. Тезис Чёрча-Тьюринга.
Билет № 11.
k
1. Лемма о нулях многочлена Pm(x) =  i (ki)m xki.
i 0
2. Ограниченный и неограниченный оператор минимизации. Оператор обращения.
Частично-рекурсивные и общерекурсивные функции.
Билет № 12.
1. Основная теорема об линейных однородных рекуррентных соотношениях: 1  2
(если an  решение ... , то ее производящая функция представима в виде ...).
2. Неразрешимая алгоритмическая проблема  проблема остановки.
Билет № 13.
1. Основная теорема об линейных однородных рекуррентных соотношениях: 2  3
(если производящая функция представима в виде ... , то an представима в виде ...).
2. Схема примитивной рекурсии. Примитивно-рекурсивные функции: определение,
примеры (с доказательством примитивной рекурсивности).
Билет № 14.
1. Основная теорема об линейных однородных рекуррентных соотношениях: 3  1
(если an представима в виде ... , то an  решение ... ).
2. Машина Тьюринга. Примеры машин Тьюринга. Функция, вычислимая по Тьюрингу. Тезис Чёрча-Тьюринга.
9
1.13 Примерная тематика рефератов.
Треугольник Паскаля и его свойства.
Последовательность Фибоначчи и её свойства.
Универсальная машина Тьюринга и способ ее построения.
1.14 Примерная тематика курсовых работ.
Свойства интегралов для формальных степенных рядов.
Решение рекуррентных уравнений путём сведения их к дифференциальным уравнениям.
Подходы к решению нелинейных рекуррентных уравнений.
Примитивная рекурсивность функции, перечисляющей по порядку числа Фибоначчи.
1.15. Примерная тематика квалификационных (дипломных) работ.
не предусмотрено учебным планом по данной дисциплине.
1.16. Методика(и) исследования (если есть) - нет.
1.17. Бально-рейтинговая система, используемая преподавателем для оценивания знаний студентов по данной дисциплине.
Используется пятибалльная система оценивания знаний студентов.
РАЗДЕЛ 2. Методические указания по изучению дисциплины (или ее разделов) и контрольные задания для студентов заочной формы обучения.
Нет заочной формы обучения по данной дисциплине.
РАЗДЕЛ 3. Содержательный компонент теоретического материала.
Примерное содержание лекционного материала.
ГЛАВА I. ПРОИЗВОДЯЩАЯ ФУНКЦИЯ
§ 1. Треугольник Паскаля. Бином Ньютона
Рассмотрим строку чисел: d0, d1,..., dn (n=0,1,2,...).
Образуем из неё новую строку: s0, s1,..., sn, sn+1 (n=0,1,2,...)
по правилу
s0  d 0 ,

sk  d k 1  d k ,(1  k  n)

sn1  d n.
(1.8)
Преобразование (1.8) называют преобразованием Паскаля.
Пример. Если исходная строка имеет вид 5,0,-5, то строка, полученная из неё по закону Паскаля, будет выглядеть так: 5, 5,-5,-5, а следующая за ней: 5,10,0,-10,-5.
Строка чисел d0, d1, dn (n=0,1,2,...) называется симметричной, если dk=dn-k (0kn).
Например, строки 7,9,-1,9,7 и 3,0,6,6,0,3 являются симметричными, а строки 7,9,-1,9,-7 и
3,0,6,6,3,0 симметричными не являются.
Свойства преобразования Паскаля
10
1. Если строка  получена из строки  с помощью преобразования (1.8), то сумма
членов строки  равна удвоенной сумме членов строки .

Пусть строка  имеет вид d0, d1,..., dn, а строка  получена по формуле (1.8) и
имеет вид: s0, s1, sn, sn+1. Тогда
s0+s1+...+ sn+sn+1= d0+(d0+d1)+(d1+d2)+...+(dn-1+ dn)+ dn=2(d0+d1+d2+...+dn-1+dn). 
Если строка  получена из симметричной строки  с помощью преобразования (1.8),
то строка  также является симметричной.

Пусть строка  : d0, d1,..., dn, - симметричная. Тогда
s0=d0=dn=sn+1.
(*)
Кроме того, при 1kn
sk=dk -1+dk=dn-(k -1)+dn-k=dn-k +1+dn-k=sn-k +1=s(n+1)-k .
(**)

Рассмотрим теперь строку, состоящую из одного числа, - 1. Назовём эту строку нулевой строкой Паскаля. Начиная с этой строки, будем строить треугольник Паскаля, в котором
каждая последующая строка получается из предыдущей с помощью преобразования (1.8).
Так как при переходе к каждой следующей строке число членов этой строки увеличивается
на единицу, то в n-й строке будет n+1 число.
Ниже приведены несколько начальных строк треугольника Паскаля:
Строка 0
1
Строка 1
1 1
Строка 2
1 2 1
Строка 3
1 3 3 1
Строка 4
1 4 6 4 1
Строка 5
1 5 10 10 5 1
...
...
Нумерация в треугольнике Паскаля осуществляется с нулевой строки, а в строке - с
нулевого элемента. Обозначим число, стоящее на m-м месте в n-й строке, через
мер,
Tnm , напри-
T00  1, T42  6 .
Свойства треугольника Паскаля
n
1. Сумма чисел n-й строки равна 2n:
 Tnk = 2n. Это следует из первого свойства пре-
k 0
образования Паскаля с учётом того, что сумма чисел в нулевой строке треугольника равна 1.
n k
2. Все строки треугольника Паскаля симметричны: Tn  Tn . Это следует из второго свойства преобразования Паскаля и симметричности нулевой строки треугольника.
k
Докажем, что

Tnm равно числу сочетаний из n элементов по m:
n!
Tnm  Cnm 
m! (n  m)!
При n=0, m=0
C00  T00 = 1;
при m = 0 Cn  Tn = 1; при m = n Cn  Tn = 1.
Кроме того,
0
0
n
n
Cnk  Cnk 1  Cnk1
(1.9)
11
Таким образом,
0
C00
есть нулевая строка треугольника Паскаля, а
n 1
1
0
1
n
n+1-я строка Cn 1 , Cn 1 , ... , Cn 1 получается из n-й строки Cn , Cn , ... , Cn по закону
0
1
m
Паскаля. Это значит, что при любом m=0,1,2,... строка Cm , Cm , ... , Cm совпадает с m-й
Tnm  Cnm .
строкой треугольника Паскаля и

Бином Ньютона
Рассмотрим степени суммы (a+b):
(a+b)0=1;
(a+b)1=1a +1b;
(a+b)2=1a2+2ab+1b2;
(a+b)3=1a3+3a2b+3ab2+1b3.
Легко заметить, что коэффициенты при a и b в правых частях этих равенств для mй степени (m=0,1,2,3) совпадают с числами в m-й строке треугольника Паскаля.
Докажем, что (a+b)n можно вычислить по формуле
(a+b)n = Cn0 an + Cn1 an−1b + Cn2 an−2b2 + … + Cnn−1 a bn−1 + Cnn bn =
n

Cnk an−kbk,
k 0
(1.10)
которая называется формулой бинома Ньютона или просто биномом Ньютона.

Доказательство проведём методом математической индукции.
Выше было показано, что при n=0,1,2,3 формула (1.10) верна.
Предположим, что она верна при n=m :
m
m
(a+b) =
Cm0
m
a +
Cm1
m−1
a
b +
Cm2
b +…+
m−2 2
a
Cmm−1
m−1
ab
+
Cmm
m
b =

Cmk am−kbk
k 0
и докажем, что она будет верна и при n = m+1.
В самом деле,
m

(a+b)m+1 = (a+b) (a+b)m = (a+b)
Cmk am−kbk =
k 0
m
=
m

Cmk
m−k+1
a
k 0
k
b +

m−k k+1
a
b
k 0

k 1
=

Cmk
m−k+1 k
a
k 0
m
= Cm0 am+1 +
m 1
m
Cmk
b +

Cmk−1 am−k+1 bk =
k 1
m
Cmk am−k+1 bk +

Cmk−1 am−k+1 bk + Cmm bm+1 =
k 1
m
= am+1 +

(Cmk + Cmk−1 )am−k+1 bk + bm+1 =
k 1
m 1
m
= Cm+10 am+1 +

k 1
Cm+1k am−k+1 bk + Cm+1 m+1 bm+1 =

Cm+1k am+1−k bk . 
k 0
§ 2. Формальный степенной ряд (ФСР)
Производящей функцией числовой последовательности an наз. степенной ряд вида:
12


а(x) =
аn xn.
n 0
Экспоненциальной производящей функцией числовой последовательности an наз. степенной ряд вида:


а (x) =
e
( аn / n!) xn.
n 0
Если радиус сходимости радов в правых частях данных формул нулевой, то оперировать с ними можно, рассматривая их как формальные объекты в рамках формального исчисления − алгебры формальных степенных рядов.
Аксиомы
равенства



(
аn x =
n
n 0

bn xn )  (аn = bn) для n = 0, 1, 2, …,

( bn / n!) xn)  (аn = bn) для n = 0, 1, 2, …;
n 0


(

( аn / n!) xn =
n 0
n 0
суммы





аn x +
n
n 0
n
bn x =
n 0


(аn + bn) xn ,
n 0


( аn / n!) xn +
n 0



( bn / n!) xn =
n 0
[ (аn + bn) / n!] xn;
n 0
произведения


аn x 
n
n 0





bn x =
n 0
( аn / n!) xn 
n 0
n
kn x , где kn =
n
n 0




n
( bn / n!) xn =
n 0


аi bn-i,
i 0
n
( dn / n!) xn, где dn =
n 0

Cni аi bn-i;
i 0
умножения на скаляр



n 0

аn x =
n

n 0
 аn x , 
n



( аn / n!) x =
n
n 0

( аn / n!) xn для  R.
n 0
Вычитание двух ФСР определим, как сложение первого ряда со вторым, помноженным на (−1).
Ноль-ряд − тот, у которого аn = 0 для n = 0, 1, 2, …; единица-ряд − тот, у которого а0 =
1, аn = 0 для n = 1, 2, …

Пусть A − множество всех ФСР вида

n 0
е
аn x , A − множество всех ФСР вида
n


(
n 0
аn / n!) xn. Алгебра (А, +, , −, 0, 1) наз. алгеброй отношений; алгебра (Aе, +, , −, 0, 1) наз. биномиальной алгеброй.
Теорема. Биномиальная алгебра и алгебра отношений являются целостными кольцами.
13
Композиция ФСР



Теорема. Если а0 = 0, то выражение:
bn (
n 0

аk xk) n является формальным сте-
k 0
пенным рядом.
Обратимость ФСР

Ряд



bn xn называется обратным к ряду
n 0
аn xn, если их произведение равно 1.
n 0

Теорема. Ряд, обратный к ряду

аn xn существует, тогда и только тогда, когда а0 
n 0
0.
Чтобы найти обратный ряд, надо

1. составить вспомогательный ряд g(x) = 1 − (1/ а0)

аn xn;
n 0

2. обратный ряд найти по формуле: (

аn xn)−1 = (1/ а0) (1 + g(x) + g2(x) +… ).
n 0
Деление двух ФСР определим, как умножение первого ряда на ряд, обратный ко второму (если обратный существует).
Аксиомы
дифференцирования
d
dx



аn xn =
n 0

d
dx
(n+1) аn+1 xn,
n 0



( аn / n!) xn =
n 0

( аn+1 / n!) xn .
n 0
интегрирования

( 
n 0

аn x ) dx =
n


( аn−1 / n) x ,
n
n 1
( 

( аn / n!) x ) =
n
n 0

( аn−1 / n!) xn .
n 1
Для ФСР выполняются все элементарные свойства производных.
§ 3. Операции над производящими функциями
Основной принцип теории производящих функций: пусть имеется некоторое равенство, содержащее степенные ряды, которое выполняется, если считать ряды сходящимися в
некоторой окрестности нуля. Принято считать, что это равенство остаётся верным, если его
рассматривать как соотношение между ФСР (лишь бы операции, участвующие в равенстве,
имели смысл для ФСР).
Операции над производящими функциями
1. Линейные. Пусть ,   R.
( c(n) =  a(n) +  b(n) )  ( c(x) =  a(x) +  b(x), ce(x) =  ae(x) +  be(x) ).
2. Изменение масштаба.
( b(n) = n a(n) )  ( b(x) = x
d
d e
a(x), be (x) = x
a (x) ).
dx
dx
14
3. Сдвиг начала.
0, n  k ,
 b(x) = a(x) xk, be(x) = … ae(x) dx (k раз).
a(n  k ), n  k.
а) b(n) = 
 b(x) = [ a(x) −
б) b(n) = a(n+k)
k 1

−k
аi x ] x , b (x) =
i
e
i0
dk
dx
4. Подобие. Пусть   R.
( b(n) = n a(n) )  ( b(x) = a(x), be(x) = ae(x) ).
5. Свёртка.
n
( kn =

аi bn-i )
 ( k(x) = a(x)  b(x) ).
i 0
Таблица простейших производящих функций
№ п/п
1
2
3
4
5
6
7
8
аn
1
n
1 / n!
 n / n!
Cn
C n n+  −1
 n C n n+  −1
n
а(x)
1 / (1−x)
1 / (1−x)
ex
ex
(1+x) 
(1−x) −
(1−x) −
x / (1−x)2
аe(x)
ex
ex
−
−
−
−
−
x ex
k
ae (x).
15
§ 4. Производящие функции числа основных комбинаторных объектов
4.1. Сочетания
Пусть М = {e1, e2, … em}.
Рассмотрим произведение: (1+ e1x) (1+ e2x) … (1+ em x) = 1 + x (e1+ e2 + … + em) +
2
+ x (e1e2 + e1e3 + … + em−1 em) + … + xm e1 e2 … em.
Каждое слагаемое коэффициента при xk соответствует одному сочетанию.
Положим e1 = e2 = …= em = 1, получим:
(1+x) m = Cm0 + Cm1 x + Cm2 x2 + … + Cmm xm.
4.2. Сочетания с повторениями
Пусть М = {e1, e2, … em}.
Количество вхождений объекта в комбинацию называется кратностью.
Пусть кратность объекта ei может составлять k1(ei) или k2(ei) или …
Рассмотрим произведение:
(xk1 (e1) + xk2 (e1) + … ) (xk1 (e2) + xk2 (e2) + … ) …(xk1 (em) + xk2 (em) + … ).
После раскрытия скобок и приведения подобных коэффициент при xk равен числу
требуемых сочетаний с повторениями.
Теорема. Число сочетаний с повторениями из m по k без всяких ограничений на кратность элементов в данном сочетании составляет C k m+ k −1.
4.3. Размещения
Составим экспоненциальную производящую функцию последовательности a(k) = Akm:
A0m + (A1m / 1!) x + (A2m / 2!) x2 + … = Cm0 + Cm1 x + Cm2 x2 + …= (1+x) m.
4.4. Размещения с повторениями
Пусть  − такая выборка из М = {e1, e2, … em}, что объект e1 входит в  t1 раз, e2 входит
в  t2 раз,… em входит в  tm раз, причём t1 + t2 + … + tm = k. Тогда  называется k–выборкой
состава t1, t2, … , tm .
Обозначим:
P (t1, t2, … , tm) = k! / ( t1! t2! … tm ! ).
Пусть кратность объекта ei может составлять k1(ei) или k2(ei) или …
Составим экспоненциальную производящую функцию:
(xk1 (e1) / k1(e1)! + xk2 (e1) / k2(e1)! + … ) 
 (xk1 (e2) / k1(e2)! + xk2 (e2) / k2(e1)! + … ) 
…
 (xk1 (em) / k1(em)! + xk2 (em) / k1(em)! + … ).
Предположим, что скобки раскрыли. Проанализируем состав одного слагаемого в коэффициенте при xk, соответствующего выборке (k i (e1), k i (e2), …, k i (em)):
1
[ x k i1
(e1)
m
2
/ k i (e1)! ]  [x k i 2 (e2) / k i (e2)! ]  …  [x k i m
1
2
(em)
/ k i (em)! ] =
m
= xk / [k i (e1)! k i (e2)! … k i (em)!] * (k! / k!) =
1
m
2
= P (k i (e1), k i (e2), … k i (em))  xk / k!.
1
2
m
Теорема. Число k–выборок без ограничения на количество повторений составляет mk .
m
4.5. Композиции числа k – это суммы вида:

zi = k, где m, k, zi  N, причём суммы,
i 1
отличающиеся порядком слагаемых, считаются различными.
16
Обозначим
zk – количество композиций числа k на m частей;
zk – количество композиций числа k на произвольное количество частей.
(m)
zk(m) равно числу способов разместить m–1 разделитель в k–1 ячейках между k единиm 1
цами, т.е. C k 1 .
Доопределим z(x) = 0, если k < m.
m 1
k
Пусть ak = C m  k 1 = C m  k 1 . Тогда a(x) = 1/ (1–x)m .
Очевидно, что
0, k  m,
ak  m , k  m.

zk(m) = 
z(m)(x) = a(x) xm = xm / (1–x)m .
k
Перейдём к определению zk: zk =

k
zk(m) =
m 1

m 1
C km11 = 2k−1.
Пусть bk = 2k. Тогда b(x) = 1/ (1–2x).
Очевидно, что
0, k  0,
bk 1 , k  0.
zk = 

z(x) = b(x) x = x / (1–2x) .
m
4.5. Разбиения числа k – это суммы вида:

zi = k, где m, k, zi  N, причём суммы,
i 1
отличающиеся порядком слагаемых, считаются одинаковыми.
Обозначим
(m)
rk – количество разбиений числа k на m частей;
R(m,k) – количество разбиений числа k на части, максимальная из которых не превышает m.
Лемма. Число решений уравнения 1 x1 + 2 x2 + … m  xm = k в целых неотрицательных
числах равно R(m,k).
Теорема. Количество разбиений числа k на m частей равно количеству разбиений
числа k на части, максимальная из которых равна m, т.е. rk (m) = R(m,k) – R(m–1,k).
Теорема. Пусть R(m,x) – производящая функция последовательности R(m,k). Тогда
R(m,x) = (1+x+x2+…) (1+x2+x4+…) (1+x m +x2 m +…) = (1/ (1– x)) (1/ (1– x2)) …(1/ (1– xm)).
ГЛАВА II. РЕКУРРЕНТНЫЕ УРАВНЕНИЯ (РУ)
§ 1. Основные определения
Задача Фибоначчи.
Пара кроликов приносит 1 раз в 1 месяц приплод − девочку и мальчика. Через 1 месяц
после рождения крольчата вырастают и через 2 месяца после рождения приносят приплод.
Сколько пар кроликов набралось к концу года, если в начале года была 1 пара (в течение года кролики не умирали, воспроизводство не прекращалось)?
Составим математическую модель задачи. Обозначим
f(n+1) − количество пар кроликов по истечении (n+1) месяца с начала года. Тогда через месяц количество пар кроликов составит:
f(n+2) = f(n+ 1) + f(n), причём f(0) = 1, f(1) = 2.
17
Решением этой задачи является последовательность Фибоначчи: 1, 2, 3, 5, 8, 13, 21,
…, f(12) = 377, …
Чтобы получить выражение для f(n) в симметричном виде, к этой последовательности
слева добавляют единицу: 1, 1, 2, 3, 5, 8, 13,…, т.е. считают, что f(0) = f(1) = 1.
Общий вид РУ:
f(n+k) = F(n, f(n+k−1), …, f(n)),
(1.1)
где
k − порядок РУ, f(n) − неизвестная числовая последовательность, F − функция от
(k+1)-й переменной.
Последовательность a(n) называется решением РУ (1.1), если при подстановке её в
(1.1) вместо f(n) получается истинное равенство при n=0,1,2,...
В общем случае РУ имеет бесконечное множество решений. Чтобы однозначно определить решение РУ (1.1), следует задать k начальных условий:
f(0) = 0, f(1) = 1, …, f(k−1) = k−1.
Пусть C1, C2,…,Ck − независимые числовые параметры.
Последовательность Ф(C1, C2,…,Ck, n) называется общим решением РУ (1.1), если
 при любом выборе параметров C1, C2,…,Ck последовательность является решением
(1.1),
 для любого решения a(n) можно так подобрать значения параметров C1*, C2*,…,Ck*,
что равенство a(n) = Ф(C1*, C2*,…,Ck*, n) выполняется при n=0,1,2,...
Решение, полученное из общего решения при фиксированном значении параметров,
называется частным решением РУ (1.1).
§ 2. Линейные РУ с постоянными коэффициентами
РУ вида
f(n+k) = 1 f(n+k−1) + 2 f(n+k−2) + … + k f(n) + (n), где k > 0,
(2.1)
называется линейным РУ с постоянными коэффициентами;
РУ вида
f(n+k) = 1 f(n+k−1) + 2 f(n+k−2) + … + k f(n), где k > 0,
(2.2)
называется линейным однородным РУ с постоянными коэффициентами.
Последовательности, являющиеся решением РУ (2.2), называются возвратными.
Теорема 2.1. Общее решение РУ (2.1) можно представить в виде суммы общего решения однородного РУ (2.2) и какого-нибудь частного решения РУ (2.1).
Лемма 2.1. Если а(n) и b(n) − решения однородного РУ (2.2), то для ,   R последовательность  а(n) +  b(n) − тоже решение однородного РУ (2.2).
n
Лемма 2.2. Для m  N выражение C j  n 1 является многочленом от n степени j−1.
Пусть 0, 1, …, k − некоторые числа, причём 0  0. Составим многочлен:
k
Pm (x) =

i (k − i)m xk − i,
i 1
где m  {0, 1, 2, …, k}.
Лемма 2.3. Если   0 − корень кратности r (1  r  k)многочлена P0 (x), то
(2.3)
18
P0 () = P1 () = … = Pr−1 () = 0, а Pr ()  0.
Уравнение
zk − 1 zk−1 − 2 zk−2 − … − k = 0
называется характеристическим уравнением для однородного РУ (2.2)
(2.4)
Теорема 2.2. о линейных однородных РУ. Пусть а(n) − числовая последовательность,
причём аi, i  C (множеству комплексных чисел), k  0. Тогда равносильны следующие
три утверждения:
1. последовательность а(n) − решение однородного РУ (2.2);
2. производящую функцию последовательности а(n) можно представить в виде:
а(x) = P(x) / Q(x),
2
k
где Q(x) = 1 − 1 x − 2 x − … − k x ,
P(x) − многочлен степени не выше k−1;
3. последовательность а(n) можно представить в виде:
s
а(n) =

Ri (n) in ,
i 1
где 1, 2, …, s − различные корни характеристического уравнения соответственно кратности r1, r2, …, rs, а Ri (n) − многочлен степени не выше ri − 1 (i = 1, 2, …, s).
Перейдём к решению уравнения (2.1).
Пусть (n) = Rm (n) n, где Rm (n) − многочлен аргумента n степени m, n  0.
В этом случае частное решение уравнения (2.1) можно подобрать в виде:
1. Qm (n) n, если  не является корнем характеристического уравнения (2.4);
2. Qm (n) n nr, если  − корень характеристического уравнения (2.4) кратности r.
Коэффициенты многочлена Qm (n) определяются путём подстановки решения Qm (n) n
(Qm (n) n nr) в исходное уравнение.
ГЛАВА III . ЭЛЕМЕНТЫ ТЕОРИИ АЛГОРИТМОВ
Под алгоритмом в самом широком смысле понимают точное и строгое описание последовательности операций, позволяющей за конечное число шагов получить решение задачи.
Свойства алгоритмов
1. Дискретность: в начальный момент времени задается исходная конечная система
величин (СВ), а в каждый следующий момент СВ получается по определенному закону (программе) из СВ, имевшихся в предыдущий момент времени.
2. Детерминированность: СВ, получаемых в какой-то (не начальный) момент t, однозначно определяется СВ, получаемых в предшествующие моменты t.
3. Элементарность шагов: закон получения последующей СВ из предшествующей
должен быть простым и локальным.
4. Направленность (результативность): остановка после конечного числа шагов (зависящего от данных). Если способ получения последующей величины из какой-нибудь заданной не дает результата, то должно быть указано, что надо считать результатом алгоритма.
5. Массовость: начальная СВ может выбираться из потенциально -го множества.
Понятие алгоритма, определяемое требованиями 1-5, не строгое: в формулировках
этих требований встречаются слова “способ”, “величина”, “простой”, “локальный”, точный
смысл которых не установлен. Это понятие называется непосредственным или интуитивным определением алгоритма.
19
§ 1. Определение машины Тьюринга
Обычно в алгоритмических проблемах математики речь идет не об алгоритмах, а о
вычислимости некоторых специальным образом построенных функций. Понятие вычислимой функции является вторичным по отношению к понятию алгоритма: в теории алгоритмов
принято сначала уточнить непосредственно само понятие алгоритма и затем при его помощи
точно определить класс вычислимых функций.
Это и было сделано Постом и Тьюрингом независимо друг от друга и почти одновременно. Основная мысль Поста и Тьюринга заключалась в том, что алгоритмические процессы - это процессы, которые может совершать подходяще устроенная “машина”. В соответствии с этой мыслью ими были описаны в точных математических терминах довольно
узкие классы машин, но на этих машинах оказалось возможным осуществить или имитировать все алгоритмические процессы, которые фактически когда-либо описывались
математиками.
Машины, введенные Постом и Тьюрингом, отличались не очень существенно и в
дальнейшем и те, и другие стали называться машинами Тьюринга.
Попытаемся сформулировать математически точное определение алгоритма. В
настоящее t существует много вариантов этого определения. Все они представляют собой
довольно сложные конструкции и по форме нередко различаются между собой. Однако все
эти конструкции равносильны между собой. Одна из них получила особенно широкое распространение ввиду своей наглядности и удобства. В честь автора ее назвали “машиной
Тьюринга”.
Машина Тьюринга есть совокупность следующих четырех компонент:
1. Бесконечная в обе стороны лента, разделенная на ячейки. На ленте выбрано
направление, называемое направлением слева направо.
2. Читающая головка, которая в каждый момент работы машины находится в некоторой ячейке ленты  или, как обычно говорят, обозревает эту ячейку.
3. Два конечных алфавита  внешний А={a0, a1,..., an} (n0) и внутренний Q={q0, q1,...,
qt} (t1), называемый также множеством состояний.
Элементы a0,...,an называются внешними символами машины, элементы q0, q1,...,qt 
внутренними состояниями или просто состояниями. В каждый момент работы машина
находится в некотором сост. qj и в каждой ячейке ленты записан некоторый внешний символ
ai.
Символ a0 называется пустым символом. Пустой символ служит для того, чтобы
можно было рассматривать ленту, у которой в некоторых ячейках ничего не записано, и в то
же время формально считать, что в каждой ячейке всегда записан какой-то символ. Таким
образом, a0 означает, что ячейка пуста. Вместо a0 будем употреблять греческую букву .
Состояние q0 называется заключительным состоянием, а состояние q1  начальным
состоянием; q1и q0 указывают соответственно начало и конец процесса вычисления.
4. Программа машины  конечное множество слов специального вида, называемых
командами. Каждая команда имеет вид:
qi аj  ak D ql ,
где
  спец. символ, не входящий ни в A, ни в Q; используется для наглядности;
аj, ak  внешние символы;
qi, ql  внутренние состояния; при этом qi  не заключительное (оказавшись в заключительном состоянии, машина должна закончить работу);
Сдвиг D (displacement) — одна из трех букв L (влево), R (вправо), E (на месте).
Часть команды, стоящую слева от стрелки, назовем левой частью, а справа от стрелки
 правой частью. Программа должна удовлетворять следующему условию: если левые части
двух входящих в программу команд совпадают, то совпадают и правые; это условие обеспечивает выполнение свойства детерминированности.
20
Каждая команда представляет собой предписание, в соответствии с которым выполняется очередной шаг вычисления: если машина находится в состоянии qi и головка обозревает ячейку с символом аj, то после команды
qi аj  ak D ql
 в обозреваемой ячейке символ аj стирается и вместо него записывается аk;
 головка сдвигается на 1 ячейку влево при D=L, вправо при D=R, остается на месте при
D=E;
 машина переходит в состояние ql.
Если окажется, что машина находится в состоянии qi и головка обозревает ячейку, в
которой записан символ аj, а программа вообще не содержит команды с левой частью qi аj,
то вычисление прекращается.
Примеры.
1. Машина с алфавитом А={, a1=1, a2=2,}, состояниями {q1, q0} и системой команд
(1) q1 1  1 R q1
%сдвинуться вправо
(2) q1 2  1 R q1
%заменить 2 на 1 и сдвинуться вправо
(3) q1    E q0
%встретив пустую ячейку, остановиться
заменит в исходном слове все двойки на единицы.
2. Машина с алфавитом А={, 1}, состояниями {q1, q0} и системой команд
(1) q1 1  1 R q1
%сдвинуться вправо
(2) q1   1 R q1
%заменить пустой символ на единицу
из любой начальной конфигурации будет работать , заполняя 1-ми всю ленту вправо от
начальной точки.
Исходными данными машины Тьюринга будем считать записанные на ленте слова в
алфавите исходных данных Аисх (Аисх А) и векторы Vисх из таких слов.
Для любого вектора Vисх машина Тьюринга либо работает бесконечно, либо перерабатывает его в совокупность слов в алфавите, который назовем алфавитом результатов и обозначим Арез ; Аисх и Арез могут пересекаться и даже совпадать. В общем случае,
А=АисхАрез{}.
Рассмотрим машину Тьюринга U, которая обладает следующим свойством: если записать на ее ленте программу произвольной машины Тьюринга М и произвольное слово во
внешнем алфавите этой машины, она переработает это слово так же, как переработала бы его
машина М. Такую машину называют универсальной. Доказано, что машина U существует.
§ 2. Функция, вычислимая по Тьюрингу
Пусть f  функция, отображающая множество векторов Vисх над Аисх в множество векторов Vрез над Арез. Машина Тьюринга правильно вычисляет функцию f, если:
1. для любых v и w, таких, что f(v)=w, выполняется: q1 v  w q0 ;
T
2. для любого v, такого, что f(v) не определена, машина Т, запущенная в начальной
конфигурации q1 v, работает бесконечно.
Если для f существует машина Т, которая ее правильно вычисляет, функция f называется правильно вычислимой по Тьюрингу.
С другой стороны, всякой правильно вычисляющей МТ, т.е. машине, которая, начав
со стандартной начальной конфигурации q1 , может остановиться только в стандартной заключительной ситуации q0, можно поставить в соответствие вычисляемую ею функцию.
Определения, связанные с вычислением функций, заданных на словарных векторах,
даны с явным “запасом общности” и имеют в виду переработку нечисловых объектов. В
дальнейшем будут рассматриваться числовые функции: f: Nk  N или f: Nk  B = {0, 1} (k 
N).
21
§ 3. Тезис Чёрча — Тьюринга
Построение машин Тьюринга для вычисления конкретных функций  это, в сущности, программирование. Правда, в отличие от программы для ЭВМ программа МТ считается
частью самой машины. Главное же отличие МТ от реальных ЭВМ (если отвлечься от ограниченности объема памяти и времени работы последних)  крайняя простота элементарных
шагов; эта простота позволяет легко строить “трансляторы” с языков реальных машин на
язык машины Тьюринга. Хотя Тьюринг придумал свои машины за несколько лет до появления первых ЭВМ, машины Тьюринга вполне можно считать общей абстрактной схемой вычислительной машины с программным управлением.
Справедливо утверждение, называемое обычно тезисом Чёрча-Тьюринга: для всякой
функции, которую можно каким-либо способом вычислить, можно построить вычисляющую ее машину Тьюринга.
Тезис Чёрча  Тьюринга не является математической теоремой или аксиомой, потому
что участвующее в его формулировке понятие “каким-либо способом вычислить” не есть
точное математическое понятие. По своему статусу этот тезис похож скорее на законы физики, представляющие собой обычно утверждения о том, что или иное явление природы описывается некоторой математической конструкцией (например, ДУ)  с той разницей, что
речь идет не о явлении природы, а об одном из видов человеческой деятельности  вычислении.
Тезисом Чёрча  Тьюринга часто пользуются для сокращения доказательств теорем
теории алгоритмов: если по ходу рассуждения нужно установить, что некоторая функция
вычислима по Тьюрингу, довольствуются указанием “неформальной” вычислительной процедуры и построение машины Тьюринга опускают.
§ 4. Неразрешимые алгоритмические проблемы
Задачи о нахождении алгоритмов для вычисления функций (в частности, предикатов)
называются алгоритмическими проблемами; если алгоритма для вычисления той или иной
функции не существует, то соответствующая алгоритмическая проблема неразрешима.
Пример. Задача решения диофантовых уравнений: найти алгоритм, позволяющий для
любого уравнения вида f(x1, x2, ..., xn)=0, где f(x1, x2, ..., xn)  многочлен с целыми коэффициентами от неизвестных x1, x2, ..., xn (n  N), узнать, имеет ли оно целочисленные решения.
Для многих частных типов диофантовых уравнений были найдены алгоритмы, позволяющие их решать.
Познакомимся с примерами невычислимых предикатов, или, иначе, нераспознаваемых свойств и отношений  т.е. таких свойств и отношений, для которых не существует распознающих их алгоритмов.
В числе требований, предъявляемых к алгоритмам, упоминалось требование результативности. Наиболее радикальной формулировкой здесь было бы требование, чтобы по любому алгоритму А и данным  можно было определить, приведет ли работа А при исходных
данных  к результату или нет. Иначе говоря, нужно построить предикат В, такой, что
В(А,)=И, если А() дает результат, и В(А,)=Л в противном случае.
В силу Тезиса Тьюринга эту задачу можно сформулировать как задачу о построении
машины Тьюринга: построить машину М0, такую, что для любой машины Тьюринга М и
любых исходных данных  для машины М выполняются условия:
М0 возвращает «И», если машина М() останавливается, и
М0 возвращает «Л», если машина М() не останавливается.
Эта задача называется проблемой остановки.
Теорема 1. Не существует машины Тьюринга М0, решающей проблему остановки для
произвольной машины Тьюринга М.
22

Допустим, что машина М0 существует. С помощью этой машины построим другую
машину М1, которая действует следующим образом:
М1 работает вечно, если машина М() останавливается, и
(*)
М1 возвращает «Л», если машина М() не останавливается (как и М0).
(**)
Пусть q0  заключительное состояние машины М0,
q’ и q” не являются состоянием машины М0,
q”  заключительное состояние машины М1.
Чтобы получить машину М1, просто добавим к М0 еще три команды:
(1) q0 ... ... Е q’
%перейти в сост. q’
(2) q’И  И E q’
%если И, то попадаем в бесконечный цикл:
(3) q’Л  Л L q”
%если Л, то сдвинуться влево и перейти в заключительное сост.
Попробуем применить М1 к себе самой. Для этого подставим М1 в (*) и (**) вместо М:
М1 работает вечно, если машина М1() останавливается, и
М1 возвращает «Л», если машина М1() не останавливается.
Таким образом, мы получили, что машина М1 одновременно и останавливается, и работает вечно, чего быть не может.

Неразрешимость проблемы остановки можно интерпретировать как отсутствие общего алгоритма для отладки программ, т.е. алгоритма, который по тексту любой программы
и данным для нее определял бы, зациклится ли программа на этих данных или нет. Такая интерпретация не противоречит тому эмпирическому факту, что большинство программ, в
конце концов, удается отладить, т.е. установить наличие зацикливания, найти его причину и
устранить ее.
Две машины Тьюринга с одинаковым алфавитом Аисх называются эквивалентными,
если они вычисляют одну и ту же функцию.
Пример 1*. Эквивалентными являются все машины М с одинаковым алфавитом Аисх,
бесконечно работающие на любом векторе Vисх над Аисх, т.к. все они вычисляют одну и ту же
нигде не определенную (пустую) функцию.
Пример 2. Если машина Тьюринга М содержит команды qi aj  aj’ E qi’, qi’ aj’  aj’’D
qi’’, то, заменив эти две команды командой qi aj  aj’’D qi’’, получим машину М’, эквивалентную машине М. Путем таких преобразований можно в машине М убрать все команды,
содержащие Е, для случая, когда qi’  не заключительное состояние; при этом может сократиться число состояний (некоторые qi’ не войдут в правые части новых команд и станут недостижимыми из q1). Если qi’  заключительное состояние, то, введя новое заключительное
состояние qn+1 и заменив команду qi aj  aj’ E qi’ на m+1 команду
qi aj  aj’ R qi’,
qi’a1  a1 L qn+1 ,..., qi’am  am L qn+1,...,
(m  число букв в А), получим машину, также эквивалентную М.
Значит, для любой машины Тьюринга существует ~-ая ей машина, не содержащая в
командах Е; поэтому можно рассматривать машины, головки которых на каждом шаге движутся.
Свойство машин Тьюринга называется инвариантным, если любые две эквивалентные машины либо обе обладают этим свойством, либо обе не обладают.
Свойство машин Тьюринга называется нетривиальным, если существуют как машины, обладающие этим свойством, так и не обладающие.
Теорема 2 (теорема Райса [Rice 1953]). Ни для какого нетривиального инвариантного
свойства машин Тьюринга не существует алгоритма, позволяющего для любой машины
Тьюринга узнать, обладает ли она этим свойством.

Пусть   произвольное нетривиальное инвариантное свойство машин Тьюринга.
Рассмотрим машины М, не применимые ни к какому слову; все они, очевидно, эквивалентны между собой (см. пример*). Ввиду инвариантности свойства  оно либо выполня-
23
ется для всех таких машин, либо не выполняется ни для одной из них. Пусть для определенности имеет место второй факт (в противном случае вместо свойства  следует взять его отрицание).
Пусть, кроме того, М  некоторая машина, обладающая свойством  (такая машина
существует ввиду нетривиальности ).
Рассмотрим теперь произвольную машину Тьюринга М. По ней без труда можно построить другую машину М’, работающую следующим образом:
I этап. Если в начальной ситуации на ее ленте записано слово х, она
... x ...
ставит справа от него разделительный знак, за ним записывает слово y=Vисх
... x*y ...
(компоненты Vисх принадлежат алфавиту Аисх машины М), и далее, “не тро... x*M(y) ...
гая” х, перерабатывает y по программе машины М.
Этот этап вычислений успешно закончится , когда М останавливается.
II этап. Все, что правее разделительного знака, а также он сам, сти... x*M(y) ...
рается, а затем оставшееся слово х перерабатывается по программе машины
... x...
М.
... M(x) ...
Пусть М останавливается  М’(x) = M(x)  М’ эквивалентна М 
М’ обладает свойством . (*)
Пусть М не останавливается  М’ не останавливается  М’ эквивалентна М  М’
не обладает свойством . (**)
Из (*) и (**) следует, что (М’ обладает свойством )  (М останавливается)
Если бы существовал алгоритм, распознающий , из него можно было бы получить
алгоритм, решающий проблему остановки для произвольной машины М (он состоял бы в
том, чтобы построить по М соответствующую машину М’ и применить к этой последней алгоритм, распознающий ). 
Следствие. Не существует алгоритма, позволяющего для любых двух машин Тьюринга узнать, эквивалентны ли они.

Фиксируем произвольную МТ М и обозначаем через М свойство МТ Т быть эквивалентной машине М. Это свойство, очевидно, инвариантно и нетривиально. Но алгоритм, распознающий эквивалентность двух произвольных машин, позволял бы распознавать для любой машины, обладает ли она свойством М, что невозможно в силу теоремы 2. 
§ 5. Примитивно-рекурсивные функции
Если функцию можно вычислить, то можно построить вычисляющую ее машину
Тьюринга. Однако не всякую функцию можно вычислить.
Пример. Для предикат Р(М,), истинного тогда и только тогда, когда машина
Тьюринга М останавливается при исходных данных , алгоритма его вычисления не существует.
В этом разделе мы займемся построением вычислимых функций, т.е. тех, для которых
алгоритмы их вычисления существуют.
Прежде всего, к вычислимым функциям относятся 0 и все натуральные числа: 1, 2,...
Однако в прямом включении бесконечного множества констант в базис нет необходимости.
Достаточно одной константы 0 и функции следования f(x)=x+1 (иногда ее называют x’), чтобы получить весь натуральный ряд.
Кроме того, в базис включим семейство {Imn} функций тождества (или введения
фиктивных переменных):
Imn(x1, ..., xn)= xm (m<=n).
Мощным средством получения новых функций является суперпозиция. Оператором
суперпозиции Smn называется подстановка в функцию от m переменных m функций от n одних и тех же переменных. Эта подстановка дает новую функцию от n переменных:
Smn(h, g1, ..., gm)=h(g1(x1, ..., xn), ..., gm(x1, ..., xn))= f(x1, ..., xn).
Это определение порождает семейство операторов суперпозиции {Smn}.
24
Таким образом, если заданы функции Imn и операторы Smn, то можно считать заданными всевозможные операторы подстановки функций в функции, а также переименования,
перестановки и отождествления переменных.
Еще одно семейство операторов, которое здесь понадобится, — это операторы примитивной рекурсии. Оператор примитивной рекурсии Rn определяет (n+1)-местную функцию f
через n-местную функцию g и (n+2)-местную функцию h следующим образом:
f(x1, ..., xn, 0)=g(x1, ..., xn);
(1)
f(x1, ..., xn, y+1)= h( x1, ..., xn, y, f(x1, ..., xn, y ) ).
(2)
Пара равенств (1) и (2) называется схемой примитивной рекурсии. Тот факт, что
функция f определена этой схемой, выражается равенством
f(x1, ..., xn, y )=Rn(g, h).
В случае, когда n=0, т.е. f является одноместной функцией, схема примитивной рекурсии принимает более простой вид:
f(0) = с;
(1*)
f(y+1) = h(y, f(y ) ),
(2*)
где с — константа.
Существенным в операторе примитивной рекурсии является то, что независимо от
числа переменных в f рекурсия ведется только по одной переменной y; остальные n переменных x1, ..., xn на момент применения схемы примитивной рекурсии зафиксированы и играют
роль параметров.
Функция называется примитивно-рекурсивной, если она может быть получена из константы 0, функции x’ и функции Imn с помощью конечного числа применений операторов суперпозиции и примитивной рекурсии.
Этому определению можно придать более формальный индуктивный вид.
1. Функции 0, x’ и Imn для всех натуральных n, m, где m<=n, являются примитивнорекурсивными.
2. Если g1(x1, ..., xn), ..., gm(x1, ..., xn), h(x1, ..., xm) — примитивно-рекурсивные функции,
то Smn(h, g1, ..., gm) — примитивно-рекурсивные функции для любых натуральных n, m.
3. Если g(x1, ..., xn) и h(x1, ..., xn, y, z) — примитивно-рекурсивные функции, то Rn(g, h)
— примитивно-рекурсивная функция.
4. Других примитивно-рекурсивных функций нет.
Из такого индуктивного описания нетрудно извлечь процедуру, порождающую все
примитивно-рекурсивные функции.
Примеры примитивно-рекурсивных функций.
1. Сложение f+(x, y)=x+y примитивно-рекурсивно:
f+(x, 0)=x=I11(x);
f+(x, y+1)= f+(x, y)+1= (f+(x, y))’.
Таким образом, f+(x, y)= R1( I11(x), h(x, y, z) ), где h(x, y, z)=z’=z+1.
2. Умножение f(x, y)=xy примитивно-рекурсивно:
f(x, 0)=0;
f(x, y+1)= f(x, y)+x= f+(x, f(x, y)).
3. Возведение в степень fexp(x, y)=x y примитивно-рекурсивно:
f(x, 0)=1;
fexp(x, y+1)= x y x= f(x, fexp(x, y)).
4. Вычитание. Примитивно-рекурсивными являются следующие функции:
4.1. функция f(x)=x — 1, определяемая схемой:
25
f(0)=0 — 1=0;
f(y+1)=y;
4.2. функция f(x)=x — y, определяемая схемой:
f(x, 0)=x;
f(x, y+1)= x — (y+1) = (x — y) —1 = f(x, y) —1.
5. Нахождение наибольшего и наименьшего из двух чисел:
5.1. min(x, y)= x — (x — y); (при x<y скобка = 0)
5.2. max(x, y)= y + (x — y). (при x<y скобка = 0)
6. Из приведенных выше примеров легко получается примитивная рекурсивность логических функций. Действительно, если x, y  {0,1}, то
x =1— x;
xy= max(x, y);
x&y= min(x, y).
Из функциональной полноты этой системы функций следует примитивная рекурсивность
всех логических функций.
§ 6. Примитивно-рекурсивные операторы
Оператор называется примитивно-рекурсивным (ПР-оператором), если он сохраняет
примитивную рекурсивность функций, т.е. если результат его применения к примитивнорекурсивным функциям дает снова примитивно-рекурсивную функцию.
Пример. Операторы Smn и Rn являются ПР-операторами по определению.
Рассмотрим примитивно-рекурсивный оператор, играющий важную роль в теории рекурсивных функций, — ограниченный оператор наименьшего числа (-оператор), называемый также ограниченным оператором минимизации, который применяется к предикатам и
определяется так:
y yz P(x1, ..., xn, y) = наименьшему yz, такому, что P(x1, ..., xn, y) истинно (если такой y существует); в противном случае y yz P(x1, ..., xn, y) = z.
Пример. Пусть предикат P(x1, x2, y) принимает значение И, если x1  y  x2. Тогда
y yz P(x1, x2, y) = x1, если x1  x2 и ограничитель z x1 и
y yz P(x1, x2, y) = z, если x1 > x2 или z < x1.
Параметр z в ограниченном -операторе дает гарантию окончания вычислений, поскольку этот параметр оценивает сверху число вычислений предиката Р. Возможность оценить сверху количество вычислений является существенной особенностью примитивнорекурсивных функций.
В самом деле, если f(x1, ..., xn, k )=Rn(g, h), то для вычисления этой функции понадобится k+1 вычислений по схеме (1)-(2): одно вычисление функции g и k вычислений функции
h. Правда, каждое из них может, в свою очередь, состоять из некоторого количества вычислений функций, входящих в определение g и h, но в силу конечности общего числа операторов Smn и Rn, использованных для построения f из базисных функций 0, x’ и Imn, для любого k
можно оценить количество элементарных действий (т.е. вычислений базисных функций), необходимых для вычисления f(x1, ..., xn, k ).
В применении к одноместным функциям -оператор иногда называют оператором
обращения. Это название связано с тем, что -оператор является удобным средством для построения обратных функций. Действительно, функция g(x) = y (f(y)=х) (т.е. g(x) - это
наименьший y, такой, что f(y)=х) является обратной к функции f(х).
Пример. С помощью ограниченного -оператора можно определить деление (точнее,
функцию [z / x] - частное от деления z на x), как функцию, обратную умножению:
[z / x]= g(x) = y yz ( х(y+1)>z ).
В описании этой ф-и используется не предикат равенства (как в определении обратной функции), а предикат “>”. Это связано с тем, что целая часть от деления — функция, “не
26
совсем обратная” умножению; точнее, обратная ему только в тех точках, где z делится нацело на x.
§ 7. Функции Аккермана
Возникает вопрос: все ли вычислимые функции можно описать как примитивнорекурсивные? Чтобы показать, что ответ на этот вопрос является отрицательным, построим
пример вычислимой функции, не являющейся примитивно-рекурсивной. Идея примера в
том, чтобы, построив последовательность функций, каждая из которых растет существенно
быстрее предыдущей, сконструировать с ее помощью функцию, которая растет быстрее любой примитивно-рекурсивной функции.
Начнем с построения последовательности функций 0, 1, 2. Положим
0(а, x)=a+x;
1(а, x)=ax;
2(а, x)=ax.
Эти функции связаны между собой следующими рекурсивными соотношениями:
1(а, 1)=a; 1(а, x+1)=а+ax=0(а, 1(а, x));
2(а, 1)=a; 2(а, x+1)=а ax=1(а, 2(а, x)).
Продолжим эту последовательность, положив по определению (n>=1).
n+1(а, 0)=1;
n+1(а, 1)=a;
(5.6)
n+1(а, x+1)= n(а, n+1(а, x)).
Эта схема имеет вид примитивной рекурсии, следовательно, все функции n примитивно-рекурсивные. Растут они крайне быстро; например,
a
3(а, 1)=a; 3(а, 2)= 2(а, а)=aа;
3(а, 3)= 2(а, aа)= a a ...
Зафиксируем теперь значение а: пусть а=2. Получим последовательность одноместных фнкций 0(2, x), 1(2, x)... Определим теперь функцию В(n, x), которая перечисляет эту
последовательность: В(n, x)= n(2, x), т.е. В(0, x)= 0(2, x)=2+x; В(1, x)= 1(2, x)=2x и т.д., а
также диагональную функцию А(x)= В(x, х).
[3, гл. III, § 5]
Функции В(n, x) называются функциями Аккермана, а функция А(x) — диагональной
функцией Аккермана.
[2, § 5.3]
Из соотношений (5.6) следует, что
В(0, x) = 0(2, x) = 2+x;
0, n  0;
В(n+1, 0) = n+1(2, 0) = sg n = 
(5.7)
1, n  0;
В(n+1, x+1) = n+1(2, x) = n(2, n+1(2, x)) = В( n, В(n+1, x) ).
Эти соотношения позволяют вычислить значения функций В(n, x) и, следовательно,
А(x), причем для вычисления функции в данной точке нужно обратиться к значению функции в предшествующей точке — совсем как в схеме примитивной рекурсии. Однако здесь
рекурсия ведется сразу по двум переменным (такая рекурсия называется двойной, двукратной, или рекурсией 2-й ступени), и это существенно усложняет характер упорядочения точек,
а следовательно, и понятие предшествования точек также усложняется.
Примеры.
1. В(3,3) = В( 2, В(3,2) ), а так как В(3,2) = 3(2, 2)= 2(2, 2)=22=4, то вычислению
В(3,3) должно предшествовать вычисление В(2,4).
2. В(3,4) = В( 2, В(3,3) ), а так как В(3,3) = 3(2, 3)= 2(2, 4)=16, то вычислению В(3,4)
должно предшествовать вычисление В(2,16).
Важно отметить, что это упорядочение не определено заранее, как в схеме примитивной рекурсии, где n всегда предшествует n+1, а выясняется в ходе вычислений; поэтому схему двойной рекурсии (в отличие от рассмотренной ранее одномерной рекурсии) не всегда
удается свести к схеме примитивной рекурсии.
27
[3, гл. III, § 5]
Свойства функции В(n, x)
1. В(n, x)  2x
(n2; x=1,2...)
x

Так как В(2, x) = 2 , то для n=2 это соотношение верно. Далее применяем индукцию по
n. Пусть для некоторого n=k2 соотношение (1) истинно при всех значениях х1. Согласно
(5.7) и (5.6) имеем В(k+1, 1) = k+1(2, 1) = 2  21.
Пусть теперь для какого-то х1 выполняется неравенство В(k+1, x)  2x. Тогда
x
В(k+1, x+1) = В( k, В(k+1, x) )  2 В(k+1, x)  2 2  2x+1.
На последнем этапе доказательства мы воспользовались тем, что 2m  m+1для всех
натуральных m.

2. В(n, x+1) > В(n, x)
(n, x=1,2...)

При n=1: В(1, x+1) = 1(2, x+1) = 2x+2, В(1, x) = 1(2, x) = 2x,
2x+2>2x.
Пусть для некоторого n=k1 соотношение (2) истинно. В силу (5.7) и св-ва (1)
В(k+1, x+1) = В( k, В(k+1, x) )  2 В(k+1, x) > В(k+1, x).
На последнем этапе доказательства мы воспользовались тем, что 2m > m для всех
натуральных m.

3. В(n+1, x)  В(n, x+1)
(n  1, x  3)

В силу (5.7) и св-в (1) и (2)
В(n+1, x) = В( n, В(n+1, x-1) )  В( n, 2x-1)  В(n, x+1).
На последнем этапе доказательства мы воспользовались тем, что 2m-1  m+1 для всех
натуральных m  3.

4. В(n+1, x) > В(n, x)
(n  1, x  3)
В(n+1, x)  ***св-во(3)*** В(n, x+1) > ***св-во(2)*** В(n, x)

[2, § 5.3]
Теорема. Диагональная функция Аккермана А(x) растет быстрее, чем любая примитивно-рекурсивная функция, и, следовательно, не является примитивно-рекурсивной.

Чтобы доказать эту теорему, надо показать, что для любой одноместной примитивнорекурсивной функции f(х) найдется такое n, что для любого х  n выполняется неравенство
А(x)> f(х).
Этап I. Функция f(x1, ..., xn) называется В-мажорируемой, если существует такое число
mN{0}, что для любых x1, ..., xn, удовлетворяющих условию max(x1, ..., xn)>1, выполняется
неравенство: f(x1, ..., xn) < B( m, max(x1, ..., xn) ). На первом этапе доказательства покажем, что
все примитивно-рекурсивные функции В-мажорируемы.
а) Для простейших функций 0, х+1, Imn их В-мажорируемость очевидна.
б) Рассмотрим оператор суперпозиции Smn, причем для простоты выкладок ограничимся случаем n=1, m=2, т.е. функцией f(x)= h( g1(x), g2(x) ).
(1)
Пусть функции h, g1, g2 В-мажорируемы с числами mh, m1 и m2 соответственно. Выберем в качестве m максимальное из чисел mh, m1 и m2. Тогда по определению Вмажорируемости и свойствам функции В(n, x)
h(x1, x2) < B( m, max(x1, x2) );
g1(x) < B(m, x) < B(m+1, x);
g2(x) < B(m, x) < B(m+1, x).
и, следовательно, с учетом (5.7) и св-ва (3)
f(x)= h( g1(x), g2(x) ) < B( m, max(g1(x), g2(x)) ) < B( m, B(m+1, x) ) = B(m+1, x+1)  B(m+2, x),
т.е.
28
f(x) B-мажорирума.
в) Рассмотрим теперь оператор примитивной рекурсии, ограничившись для простоты
схемой 1*-2*:
f(0)=с;
(1*)
f(х+1)= h(х, f(х ) ).
(2*)
Пусть функция h B-мажорируема, т.е. h(x1, x2) < B( mh, max(x1, x2) ) при max(x1, x2)>1.
Докажем индукцией по х, что f(x) B-мажорируема.
Учитывая условие в определении В-мажорируемости, индукцию надо начинать с х=2.
Пусть f(2)=с2. Из свойств функции В(n, x) следует, что В(x+1,2) > В(x,2); поэтому найдется
такая величина m2, что В(m2,2) > с2 = f(2). Положим m = max(m2, mh)+1. Очевидно, что f(2) <
В(m, 2).
Пусть теперь f(k) < В(m, k). Тогда f(k+1)= h(k, f(k ) ) < B( mh, max(k, f(k )) ).
Если max(k, f(k ))=k, то
f(k+1) < B( mh, k ) (***(mh < m) + св-во (4)***) < B( m, k ) (*** св-во (2)***) < B( m, k+1).
Если же max(k, f(k ))= f(k ), то
f(k+1) < B( mh, f(k ) ) < *** предположение + св-во (2)***
< B( mh, В(m, k) ) < ***(mh  m-1) + св-во (4)***
 B( m-1, В(m, k) ) = В(m, k+1).
Из пп. “а”-”в” следует, что все примитивно-рекурсивные функции В-мажорируемы.
Этап II. Пусть f(x) - примитивно-рекурсивная функция. Тогда она В-мажорируема, т.е.
для некоторого m и х  2 выполняется неравенство: f(x) < B(m, x); поэтому
А(m+x) = В(m+x, m+x) > В(m, m+x) > f(m+x),
т.е. А(y) > f(y), начиная по крайней мере с y=m+x=m+2. 
29
§ 8. Общерекурсивные и частично-рекурсивные функции
Функция Аккермана А(x) является примером вычислимой, но не примитивнорекурсивной функции. Этот пример говорит о том, что средства построения вычислимых
функций нуждаются в расширении.
Функция называется частично-рекурсивной, если она может быть построена из простейших функций 0, x’ и Imn с помощью конечного числа применений суперпозиции, примитивной рекурсии и неограниченного -оператора. (Так как в дальнейшем будет упоминаться
только неограниченный -оператор, прилагательное “неограниченный” будем опускать).
По определению -оператор применяется к предикатам. Поскольку в теории рекурсивных функций истинность предиката Р(х) всегда связана со справедливостью некоторого
равенства и, наоборот, всякое равенство является предикатом от содержащихся в нем переменных, то -оператору можно придать стандартную форму, например,
f(x1, ..., xn) = y (g(x1, ..., xn-1, y) = xn) или f(x1, ..., xn) = y (g(x1, ..., xn-1, xn, y) =0).
Будучи применен к вычислимой функции, -оператор снова дает вычислимую функцию (т.е. сохраняет вычислимость).

Действительно, для вычисления функции f(x1, ..., xn) = y (g(x1, ..., xn-1, xn, y) =0) на
наборе x1, ..., xn существует следующая простая процедура: вычисляем g на наборах (x1, ...,xn,
0), (x1, ...,xn, 1), ... до тех пор, пока не получим значение НОЛЬ.

Понятно, что такая процедура может и не привести к результату; это произойдет в
случае, когда на данном наборе x1, ..., xn уравнение g(x1, ..., xn-1, xn, y) = 0 не имеет решения. В
таком случае функция f(x1, ..., xn) считается неопределенной.
Пример. Обратная к х+1 функция х-1 = y (y+1=х) не определена при х=0.
Механизм возникновения неопределенности здесь такой же, как и при вычислениях
на машине Тьюринга: в случае неопределенности процесс вычисления не останавливается.
Таким образом, среди рекурсивных функций появляются не полностью определенные,
т.е. частичные функции; операторы над частичными функциями порождают новые частичные функции. При этом характер неопределенности может оказаться довольно сложным, а
именно: для данного набора значений x1, ..., xn не найдется способа установить, определена
ли функция f на этом наборе, и придется продолжать процесс вычисления неопределенное
время, не зная, остановится он или нет.
В случае, когда функция g, к которой применяется -оператор, сама является частичной, функция f(x1, ..., xn) = y (g(x1, ..., xn-1, xn, y) = 0) вычисляется с учетом следующего условия: если для y = 0, 1,..., i-1: g(x1, ..., xn-1, xn, y)  0, а g(x1, ..., xn-1, xn, i) не определена, то и f(x1,
..., xn) не определена.
Пример. Функция f(x) = y ( 4/(y-2)-x=0 ) при х=4 не определена (хотя уравнение 4/(y2)-x=0 имеет решение y=3), т.к. функция 4/(y-2)-x=0 не определена при y=2.
Частично-рекурсивная функция называется общерекурсивной, если она всюду определена. Из сказанного ранее о неопределенности видно, что не всегда частично-рекурсивную
функцию можно эффективным образом доопределить до общерекурсивной.
Связь рекурсивных функций с машинами Тьюринга
Вспомним тезис Чёрча-Тьюринга: для всякой функции, которую можно каким-либо
способом вычислить, можно построить вычисляющую ее машину Тьюринга. С другой стороны, всякая функция, вычислимая некоторым алгоритмом, частично-рекурсивна.
Из сопоставления двух тезисов вытекает утверждение: функция вычислима машиной
Тьюринга тогда и только тогда, когда она частично-рекурсивна. (без док-ва)
30
РАЗДЕЛ 4. Словарь терминов (глоссарий)
Производящие функции и их применение
Алгебра
биномиальная
отношений
Композиция
Ньютона
бином
Паскаля
преобразование
треугольник
Разбиение
Размещение
с повторениями
Сочетание
с повторениями
Формальный степенной ряд
Функция
производящая
экспоненциальная производящая
Рекуррентные уравнения
Решение
общее
частное
Уравнение
однородное
рекуррентное
с постоянными коэффициентами
характеристическое
Условие
начальное
Фибоначчи
задача
Теория алгоритмов
Алгоритм
Оператор
неограниченный минимизации
ограниченный минимизации
примитивной рекурсии
суперпозиции
Проблема
алгоритмическая
неразрешимая
остановки
распознавания нетривиального инвариантного свойства
Свойство
инвариантное
нетривиальное
31
Тьюринга
машина
Функция
Аккермана
вычислимая по Тьюрингу
общерекурсивная
примитивно-рекурсивная
частично-рекурсивная
Чёрча-Тьюринга
тезис
РАЗДЕЛ 5. Практикум по решению задач (практических ситуаций) по темам лекций
(одна из составляющих частей итоговой государственной аттестации)
Производящие функции и их применение
Таблица простейших производящих функций
№ п/п
1
2
3
4
5
6
7
8
аn
1
n
1 / n!
 n / n!
Cn
C n n+  −1
 n C n n+  −1
n
а(x)
1 / (1−x)
1 / (1−x)
ex
ex
(1+x) 
(1−x) −
(1−x) −
x / (1−x)2
аe(x)
ex
ex
−
−
−
−
−
x ex
Задание 1.1. Используя бином Ньютона, вычислить: (2- 3 )6.
Решение. В формулу
(a+b)n =
n

Cnk an−kbk
k 0
подставим: a = 2, b = − 3 ; n = 6, получим:
(2 − 3 )6 = C60 26 + C61 25 (− 3 ) + C62 24 (− 3 )2 + C63 23 (− 3 )3 + C64 22 (− 3 )4 +
+ C65 21 (− 3 )5 + C66 (− 3 )6 = 64 – 192 3 + 720 – 480 3 + 540 – 108 3 + 27 =
= 1351 – 780 3 .
Ответ: 1351 – 780 3 .
Задание 1.2. Не раскрывая скобок, определить коэффициент при x9 в многочлене:
(1+ x)9 + (1+ x)10 + … + (1+ x)14.
Решение. Искомый коэффициент равен: C99 + C109 + C119 + C129 + C139 + C149. Упростим
это выражение, используя равенство: Cnk + Cnk−1 = Cn+1 k, а также тот факт, что C99 = 1 =
C1010:
(C1010 + C109) + C119 + C129 + C139 + C149 = (C1110 + C119) + C129 + C139 + C149 =
= (C1210 + C129) + C139 + C149 = (C1310 + C139) + C149 = (C1410 + C149) = C1510 = 3003.
Ответ:3003.
32
Задание 1.3. Даны числовые последовательности: a(n) = 2n+1 и b(n) = n + 5. Составить
производящие функции a(x) и b(x) этих последовательностей. В произведении a(x)b(x) найти
коэффициент при x5.
Решение.
Так как a(n) = 2n+1 = 22n, то, воспользовавшись таблицей, найдём: a(x) = 2 / (1−2x),
так как b(n) = n + 5, то b(x) = x / (1−x)2 + 5 / (1−x).
Коэффициент при x5 равен
5
k5 =

аi b5-i = а0 b5 + а1 b4 + а2 b3 + а3 b2 + а4 b1 + а5 b0 = 210 + 49 + 88 + 167 + 326 + 645
i 0
= 744.
Задание 1.4. Даны числовые последовательности: a(n) = 3n − 5 и b(n) = n2. Составить
экспоненциальные производящие функции этих последовательностей. В произведении
ae(x)be(x) найти коэффициент при x4.
Решение.
Так как a(n) = 3n − 5, то, воспользовавшись таблицей, найдём: ae(x) = e3x − 5ex.
так как b(n) = nn, то, по свойству «изменение масштаба», имеем:
be(x) = x
d
d
[ЭПФ(n)] = x
[x ex] = x ex (1+x).
dx
dx
Коэффициент при x4 равен
4
d4 / 4! = (1/4!)  C4i аi b4-i = (1/4!) [C40а0 b4 + C41а1 b3 + C42а2 b2 + C43а3 b1 + C44а4 b0] = (1/4!)
i 0
[1(−4)16 + 4(−2)9 + 644 + 4221 + 0] = 48 / 24 = 2.
Задание 1.5. Найти формальный степенной ряд, обратный к данному ряду:


аn xn = 2 + x3.
n 0
Решение.
Cоставим вспомогательный ряд:

g(x) = 1 − (1/а0)

аn xn = 1 − (1/2) (2 + x3) = − x3 / 2.
n 0

Обратный ряд найти по формуле: (

аn xn)−1 = (1/ а0) (1 + g(x) + g2(x) +…) =
n 0
= (1/2) (1 − x / 2 + x / 4 − x / 8 …) =
3
6
9

 (1)
n
n0
x 3n
.
2 n 1
Задание 1.6. Выполнить дифференцирование формального степенного ряда:


Cn xn.
n 0
Решение. Воспользовавшись формулой:
d
dx


n 0

Cn xn =

n 0
d
dx



аn xn =
n 0

(n+1) Cn+1 xn =

n 0
(n+1)

(n+1) аn+1 xn, найдём:
n 0
!
xn =
(n  1)!(  n  1)!
33
!
 n n 
x =  Cn ( − n) xn .

n!(  n  1)!   n
n 0


n 0
Задание 1.7. Найти числовую последовательность, производящей функцией которой
является функция вида:
a(x) =
 104 x 2  107 x  131
(3  2 x) (4  5 x)
2
.
Решение.
Разложим данную правильную дробь в сумму простейших дробей:
a(x) = 10 / (3-2x) + 5 / (3-2x)2 − 1 / (4+5x).
Приведём каждую из простейших дробей к табличному виду:
10 / (3-2x) =
10
1
5
1
1
1
; 5 / (3-2x)2 = 
; 1 / (4+5x) = 
.

4 (1  ( 5 x))
3 1 2 x
9 (1  2 x) 2
4
3
3
Воспользовавшись таблицей производящих функций, восстановим числовую последовательность:
n
n
n
n
n
10  2  5  2  n
1  5   2  10 5
1  5
a(n) =
  +   C n+ 2−1 +    =   [ + (n+ 1)] +    .
3 3 9 3
4  4 3 3 9
4  4
Задачи для самостоятельного решения
Задание 1.8. Даны числовые последовательности: an = n2 + 7 и bn = 6n−3.
а) Составить их производящие функции a(x), b(x) и вычислить коэффициент при x3 в произведении a(x)  b(x);
б) Составить их экспоненциальные производящие функции ae(x), be(x) и вычислить коэффициент при x2 в произведении ae(x)  be(x).
Задание 1.9. Найти числовую последовательность, производящей функцией которой
является функция вида: a(x) = (2x2 − 23x) / (5 − x)3.
Рекуррентные уравнения
Задание 2.1. Доказать, что арифметическая прогрессия an = a0 + dn, n = 0, 1, 2, …, является возвратной последовательностью.
Доказательство.
Так как 2an+1 = 2(a0 + d(n+1)) = (a0 + dn) + (a0 + dn + 2d) = an + an+2 , то последовательность an − решение линейного однородного рекуррентного уравнения с постоянными коэффициентами: an+2 = 2an+1 − an, а значит, она является возвратной.
Задание 2.2. Найти общее решение уравнения: f(n+3) + 3 f(n+2) + 3 f(n+1) + f(n) = 0.
Решение. Составим характеристическое уравнение и решим его:
x3 + 3 x2 + 3 x + 1 = 0 ; (x + 1) 3 = 0; это уравнение имеет корень −1 кратности 3.
Тогда, в соответствии с основной теоремой об однородных уравнениях, общее решение
данного уравнения имеет вид:
Ответ: a(n) = (C1 + C2 n + C3 n2)  (−1)n.
Задание 2.3. Найти решение уравнения:
34
f(n+4) = 12 f(n+3) − 22 f(n+2) − 84 f(n+1) − 49 f(n)
при заданных начальных условиях: f(0) = 8, f(1) = −14; f(2) = 4; f(3) = 342.
Решение. Составим характеристическое уравнение и решим его:
x4 − 12x3 + 22 x2 + 84 x + 49 = 0 .
Разложив левую часть на множители, получим: (x + 1) 2 (x − 7) 2 = 0; это уравнение имеет два
различных корня: корень −1 кратности 2 и корень 7 кратности 2.
Тогда, в соответствии с основной теоремой об однородных уравнениях, общее решение
данного уравнения имеет вид: a(n) = (C1 + C2 n)  (−1)n + (C3 + C4 n)  7n.
Для нахождения постоянных C1, C2, C3, C4 воспользуемся начальными условиями:
8 = f(0) = C1 + C3;
−14 = f(1) = (C1 + C2)  (−1) + (C3 + C4)  7;
4= f(2) = (C1 + 2C2)  (−1)2 + (C3 + 2C4)  72;
342= f(3) = (C1 + 3C2)  (−1)3 + (C3 + 3C4)  73.
В результате получена система четырёх уравнений с четырьмя неизвестными:
C1  C3  8
 C  C  7C  7C  14
 1
2
3
4

C1  2C 2  49C3  98C 4  4
 C1  3C 2  343C3  1029 C 4  342
Решая её, найдём: C1 = 10, C2 = −3, C3 = −2, C4 = 1.
Подставляя найденные значения в общее решение, окончательно получим…
Ответ: a(n) = (10 − 3n)  (−1)n + (n −2)  7n.
Задание 2.4. Найти частное решение уравнения:
f(n+2) = 2 f(n+1) + 8 f(n) + (96n − 32)  4n.
Решение.
1. Составим соответствующее однородное уравнение:
f(n+2) = 2 f(n+1) + 8 f(n).
Выпишем для него характеристическое уравнение и найдём его корни:
x2 − 2 x − 8 = 0; x1 = 4 кратности 1, x2 = −2 кратности 1.
2. В нашем случае (n) = R1 (n) n = (96n − 32)  4n, т.е.  = 4; это значение совпало с
одним из корней характеристического уравнения, имеющим кратность r = 1.
Частное решение ищем в виде: aч(n) = (An + B)  4n  nr = (An2 + Bn)  4n.
Постоянные A и B определяем путём подстановки частного решения в исходное уравнение:
[A(n+2)2 + B(n+2)]  4n+2 = 2[A(n+1)2 + B(n+1)]  4n+1 + 8[An2 + Bn]  4n + (96n − 32)  4n.
Разделив обе части уравнения на множитель 4n  0 и раскрыв скобки, получим:
2
16An + 64An + 64A + 16Bn+32B = 8An2 + 16An + 8A + 8Bn+8B+ 8An2 + 8Bn + 9 n − 32.
После приведения подобных уравнение примет вид:
48 An + 56A + 24B = 96n − 32.
Приравнивая коэффициенты при одинаковых степенях n, найдём:
n1: 48 A = 96, откуда A =2;
n0: 56A + 24B = − 32, откуда B = −6.
Осталось подставить найденные значения в частное решение.
Ответ: aч(n) = (2n2 − 6n)  4n.
Задание 2.5. Найти решение уравнения:
f(n+2) = 4 f(n+1) − 4 f(n) + 2n
при заданных начальных условиях: f(0) = 1, f(1) = 4.
Решение.
35
1. Составим соответствующее однородное уравнение:
f(n+2) = 4 f(n+1) − 4 f(n).
Выпишем для него характеристическое уравнение и найдём его корни:
x2 − 4 x + 4 = 0; x = 2 кратности 2.
Общее решение однородного уравнения имеет вид: a0(n) = (C1 + C2 n)  2n.
2. В нашем случае (n) = R0 (n) n = 2n, т.е.  = 2; это значение совпало с корнем характеристического уравнения, имеющим кратность r = 2.
Частное решение ищем в виде: aч(n) = A  2n  nr = An2  2n.
Постоянную A определяем путём подстановки частного решения в исходное уравнение:
A(n+2)2  2n+2 = 4A(n+1)2  2n+1 − 4 An2  2n + 2n.
Разделив обе части уравнения на множитель 2n  0 и раскрыв скобки, получим:
4An2 + 16An + 16A = 8An2 + 16An + 8A − 4An2 + 1.
После приведения подобных уравнение примет вид:
8A =1, откуда A = 1/8.
3. Общее решение ищем в виде:
a(n) = a0(n) + aч(n) = (C1 + C2 n)  2n + (1/8) n2  2n.
Для нахождения постоянных C1, C2 воспользуемся начальными условиями:
1 = f(0) = C1;
4 = f(1) = (C1 + C2)  2 + (1/8)  2, C2 = 7/8.
Окончательно имеем:
a(n) = (1 + (7/8) n)  2n + (1/8) n2  2n = (1 + (7/8) n + (1/8) n2)  2n
Ответ: a(n) = (1 + (7/8) n + (1/8) n2)  2n.
Задачи для самостоятельного решения
Задание 2.6. Найти решение уравнения:
f(n+3) +10f(n+2) +32f(n+1) + 32f(n) = 0
при заданных начальных условиях: f(0) = 1, f(1) = −1; f(2) = 0.
Задание 2.7. Найти решение уравнения:
f(n+2) + 2f(n+1) − 8f(n) = n2
при заданных начальных условиях: f(0) = 3, f(1) = 1.
Теория алгоритмов
Задание 3.1. Построить машину Тьюринга, которая к каждому слову x в алфавите А
приписывает справа символ а1, т.е. перерабатывает “x” в “x а1”.
Решение. Программа должна работать так: находясь в начальном состоянии, машина
двигает головку вправо, ничего не изменяя на ленте до тех пор, пока головка не дойдет до
конца исходной цепочки; затем она справа от исходной цепочки пишет “а 1” и останавливается.
%Оставаясь в начальном состоянии и не меняя ai , сдвигаемся вправо:
(1) q1 ai  ai Rq1 (i=1,...,n)
%Находясь в начальном состоянии и дойдя до пустого символа , заменяем его на a1 и останавливаемся
(2) q1   a1 Еq0
Задание 3.2. Построить машину Тьюринга, которая у каждого слова длины  3 в алфавите А стирает три последних символа, а слова меньшей длины перерабатывает в пустое
слово.
Решение.
36
% Оставаясь в начальном состоянии и не меняя ai , сдвигаемся вправо:
(1) q1 ai  ai Rq1 (i=1,...,n)
% Дойдя в начальном состоянии до пустого символа , сдвигаемся влево,
% перейдя во II состтояние
(2) q1    Lq2
% Находясь во II состоянии, меняем ai на пустой символ, сдвигаемся влево и
% переходим в III состояние
(3) q2 ai   Lq3 (i=1,...,n)
% Находясь в III состоянии, меняем ai на пустой символ, сдвигаемся влево и
% переходим в IV состояние
(4) q3 ai   Lq4 (i=1,...,n)
% Находясь в четвертом состоянии, меняем ai на пустой символ и останавливаемся
(5) q4 ai   Lq5 (i=1,...,n)
% Находясь в любом из сост. со II по IV и попав на пустой символ, останавливаемся
(6) qh    Eq0 (h=2,3,4)
Задание 3.3. Доказать, что не существует алгоритма, позволяющего для любых двух
машин Тьюринга узнать, эквивалентны ли они.
Доказательство. Фиксируем произвольную МТ М и обозначаем через М свойство
МТ Т быть эквивалентной машине М. Это свойство инвариантно (т.к. любые две эквивалентные машины либо обе обладают этим свойством, либо обе не обладают) и нетривиально (т.к.
существуют как машины, обладающие этим свойством, так и не обладающие). Но алгоритм,
распознающий эквивалентность двух произвольных машин, позволял бы распознавать для
любой машины, обладает ли она свойством М, что невозможно в силу теоремы Райса.
Задание 3.4. Доказать, что функция f(x) = x! примитивно рекурсивна.
Доказательство.
f(0)= 0! = 1, но 1 = g(0), где g (x) = x + 1 − функция следования;
f(y+1) = (y+1)  y! = g (y)  f(y), т.е. f(y+1) = h(g(y), f(y)), где h(x, y) = x  y.
Таким образом, функция f(x) получена с помощью оператора примитивной рекурсии
из примитивно-рекурсивных функций, а, следовательно, является примитивно-рекурсивной.
Задание 3.5. Какая функция получается из функций g (x) = x и h(x, y, z) = zx с помощью схемы примитивной рекурсии?
Решение. Схема примитивной рекурсии для искомой функции f(x, y) имеет вид:
f(x, 0) = g(x) = x;
(1)
x
f(x, y+1) = h(x, y, f(x, y) ) = f(x, y) .
(2)
Выпишем значения функции f(x, y) для y = 1, 2, 3:
x

при y =1 : f(x, 1) = f(x, 0)x = x ;

при y =2 : f(x, 2) = f(x, 1)x = x
 
x x
= x
x2
;
x
 x2 
x3
 при y =3 : f(x, 3) = f(x, 2) =  x  = x …


x
xy
Можно предположить, что искомая функция имеет вид: f(x, y) = x (*). С помощью
метода математической индукции докажем, что наше предположение верно:
 при y = 1, 2, 3 формула (*) верна;


предположим, что она верна при y = k: f(x, k) = x
докажем, что она будет верна при y = k + 1:
xk
;
37
x
 xk 
xk x
x k 1
f(x, k + 1) = f(x, k) =  x  = x
= x
− что и требовалось доказать.


x
Ответ: f(x, y) = x
xy
.
Задачи для самостоятельного решения
Задание 3.6. Машина Тьюринга определяется функциональной схемой, приведенной в
таблице.

1
*
q1
L q2
E q0
q2
1R q3
1L q2
*L q2
q3
1R
q
*R
q3
L q1
3
Определите, в какое слово перерабатывает машина каждое из следующих слов, если
она находится в начальном состоянии q1 и обозревает крайнюю правую ячейку из тех, в которых записано перерабатываемое слово. После этого постарайтесь усмотреть общую закономерность в работе машины:
а) 111*111; б) 1111*11;
в) 111*1 ; г) 1*11; д) 11*111; е) 11111*; ж) *1111.
Задание 3.7. Доказать, что функция f(x) = x!
0, x  0
sg ( x)  
1, x  0
примитивно рекурсивна.
Раздел 6. Изменения в рабочей программе, которые произошли после утверждения программы.
Характер изменений в
программе
Номер и дата протокола заседания кафедры, на котором
было принято данное решение
Подпись заведующего
кафедрой, утверждающего внесенное изменение
Подпись декана факультета (проректора по
учебной работе), утверждающего данное изменение
Раздел 7. Учебные занятия по дисциплине ведут:
Ф.И.О., ученое звание и степень преподавателя
кандидат тех. наук,
доцент Ланина Н.Р.
кандидат тех. наук,
доцент Ланина Н.Р.
Учебный
год
Факультет
Специальность
2007-2008
ПМПЭ
2010-2011
ФМОИП
010200 Прикладная математика и информатика
010200 Прикладная математика и информатика
Download