МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Мурманский государственный гуманитарный университет» (ФГБОУ ВПО «МГГУ») УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС ДИСЦИПЛИНЫ ФТД.4 ПРИКЛАДНАЯ МАТЕМАТИКА ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ПОДГОТОВКИ СПЕЦИАЛИСТА ПО СПЕЦИАЛЬНОСТИ (специальностям) 080116 МАТЕМАТИЧЕСКИЕ МЕТОДЫ В ЭКОНОМИКЕ (код и наименование специальности/тей) Утверждено на заседании кафедры математики и математических методов в экономике факультета физико-математического образования, информатики и программирования (протокол № 6 от 27 февраля 2013 г.) Зав. кафедрой _______________О.М. Мартынов Раздел 1. Программа учебной дисциплины. Структура программы учебной дисциплины 1. 1 Автор программы: старший преподаватель, Большакова Н.С. 1.2 Рецензенты: кандидат физико-математических наук, доцент Мостовской А.П., кандидат ф.-м. н., доцент Маренич А.С. 1.3 Пояснительная записка: Цели: закрепить и обобщить имеющееся у студентов интуитивное понятие алгоритма. Уточнить понятия вычислимости и перечислимости. Изучить класс частично рекурсивных функций, который вместе с тезисом Черча дает одно из возможных решений задачи об уточнении понятия алгоритма. А также рассмотреть некоторую идеализированную вычислительную машину – машину Тьюринга, как еще один из способов формализации понятия вычислимости и алгоритма. Рассмотреть нормальные алгоритмы Маркова, как уточнение понятия алгоритма. Ознакомить с первыми теориями написания алгоритмов для ЭВМ. Задачи: предлагаемый курс имеет естественные межпредметные связи с курсами математической логики, дискретной математики, информатики. Успешное усвоение теории алгоритмов - залог более лёгкого и глубокого изучения этих курсов. Требования к уровню освоения содержания дисциплины (должны знать, должны уметь): должны знать: понятия и утверждения, входящие в содержание дисциплины, доказательства теорем. должны уметь: решать задачи по разделам курса, применять теоретический материал, творчески подходить к решению профессиональных задач, ориентироваться в нестандартных условиях и ситуациях, анализировать возникающие проблемы. 1.4 Извлечение из ГОС ВПО 1.5 Объем дисциплины и виды учебной работы (для всех специальностей, на которых читается данная дисциплина): № п/п Шифр и наименование специальности 080116 «Математические методы в экономике» Курс Се мес тр 4 7 Виды учебной работы в часах Трудоемкость Всего аудит. ЛК ПР/ СМ ЛБ 62 30 14 16 - Сам. работ а 32 Вид итогового контроля (форма отчетности) 1.6 Содержание дисциплины. 1.6.1. Разделы дисциплины и виды занятий (в часах). Примерное распределение учебного времени: 6,25 Экзамен 30 10 Зачет 7,5 коллоквиум 14 16 4 2 самостоятель ная работа практические занятия 74,4 5 Форма отчета контрольные работы §1. Вычислимость, разрешимость и перечислимость 1. Необходимость уточнения понятия алгоритм 2. Перечислимые и разрешимые Количество часов лекции Наименование раздела темы всего № - множества 3. Перечислимость и 4 6 10 вычислимость 4. Перечислимое неразрешимое множество §2. Машины Тьюринга 6 8 12 1. Определение машины Тьюринга 2. Конструирование машин Тьюринга 3. Основная гипотеза теории алгоритмов §3. Другие уточнения понятия алгоритма 1. Марковские алгоритмы 2. Рекурсивные функции 3. Эквивалентность различных теорий алгоритмов 4. Пример невычислимой функции Проблема распознавания самоприменимости 1.6.2. Содержание разделов дисциплины. §1. Вычислимость, разрешимость и перечислимость 1. Необходимость уточнения понятия алгоритм Алгоритмы в математике, примеры. Основные черты алгоритмов. Необходимость уточнения понятия алгоритма. Классические алгоритмически неразрешимые задачи. 2. Перечислимые и разрешимые множества Понятие вычислимой функции. Разрешимые множества. Перечислимые множества. Теорема о пересечении и объединения перечислимых множеств. Перечислимые и разрешимые множества. Теорема Поста. 3. Перечислимость и вычислимость Теорема о вычислимой функции. Образ и прообраз вычислимой функции. Теорема о б образе и прообразе. Теорема о разрешимом множестве. 4. Перечислимое неразрешимое множество Эффективное перечисление всех упорядоченных пар натуральных чисел, диагональный метод. Теорема о существовании перечислимого, но не разрешимого множества. §2. Машины Тьюринга 1. Определение машины Тьюринга Определение машины Тьюринга. Начальное и заключительное состояние машины Тьюринга. Программа машины Тьюринга. Внутренний и внешний алфавит машины Тьюринга. Конфигурация машины Тьюринга. 2. Конструирование машин Тьюринга Применение машины Тьюринга к словам. Создание машин Тьюринга. 3. Основная гипотеза теории алгоритмов Вычислимая по Тьюрингу функция. Тезис Тьюринга. Машины Тьюринга и ЭВМ. §3. Другие уточнения понятия алгоритма 1. Марковские алгоритмы Марковские подстановки. Алфавит. Расширение алфавита. Слово. Пустое слово. Подслово. Нормальный алгоритм. Применение нормального алгоритма к словам. Нормально вычислимые функции. Принцип нормализации Маркова. 2. Рекурсивные функции Построение класса рекурсивных функций. Функция следования, нуль-функция, функции-проекторы. Оператор суперпозиции. Оператор примитивной рекурсии. Оператор минимизации. Определения рекурсивной и общерекурсивной функции. Тезис Черча. 3. Эквивалентность различных теорий алгоритмов Теорема (эквивалентность классов вычислимых функций). 4. Пример невычислимой функции Нумерация машин Тьюринга. Теорема о невычислимой функции. 5. Проблема распознавания самоприменимости Определение самоприменимой машины Тьюринга. Теорема о распознавании самоприменимых машин Тьюринга. 1.6.3. Темы для самостоятельного изучения. № п/п Наименование раздела дисциплины. Тема. Форма самостоятельной работы Колво часов §1. Вычислимость, разрешимость и перечислимость 1. Необходимость уточнения понятия алгоритм 2.Перечислимые и разрешимые множества 3.Перечислимость и вычислимость 4.Перечислимое неразрешимое множество §2. Машины Тьюринга 1.Определение машины Тьюринга 2.Конструирование машин Тьюринга 3.Основная гипотеза теории алгоритмов §3. Другие уточнения понятия алгоритма 1.Марковские алгоритмы 2.Рекурсивные функции 3.Эквивалентность различных теорий алгоритмов 4.Пример невычислимой функции 5.Проблема распознавания самоприминимости вопросы для 30 самостоятельного изучения, - домашние работы контрольная работа Форма контроля выполнения самостоятельной работы - проверка домашних работ, - проверка контрольной работы, - доп. вопросы на зачете 1.7. Методические рекомендации по организации изучения дисциплины. 1.7.1. Тематика и планы аудиторной работы студентов по изученному материалу: Практические занятия. Практическое занятие по теме «Описание и работа машины Тьюринга» (2 часа). Описание машины Тьюринга. Работа машины Тьюринга. Процесс подстановки в машине Тьюринга. Вычислимые по Тьюрингу функции. Синтез машин Тьюринга. Литература: 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Практическое занятие по теме «Конструирование машин Тьюринга» (4 часа). Конструирование машин Тьюринга. Правильно вычислимые по Тьюрингу функции. Литература: 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Практическое занятие по теме «Нормальные алгоритмы» (4 часа). Применение к словам Марковских подстановок. Нормально вычислимые функции. Конструирование нормальных алгоритмов. Литература: 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Практическое занятие по теме «Основные вычислимые операторы» (4 часа) Суперпозиция частичных функций. Понятие рекурсии. Оператор примитивной рекурсии. Простейшие функции выбора, нуль-функция и функция следования. Примитивно рекурсивные функции. Операция минимизации. Понятие частично рекурсивной функции, свойства, исходные функции. Литература: 1.Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2.Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3.Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 4.Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 5.Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Практическое занятие «Контрольная работа» (2 часа) Литература: 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 1.8 Учебно-методическое обеспечение дисциплины. 1.8.1. Рекомендуемая литература: Основная 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Дополнительная 1. Криницкий Н.А. Алгоритмы вокруг нас. – М., 1984. 2. Марков А.А. Нагорный Н.М. Теория алгоритмов.– М., 1984. 3. Носов В. А. Основы теории алгоритмов и анализа их сложности. – М., 1992. 1.9 Материально-техническое обеспечение дисциплины. 1.9.1. Перечень используемых технических средств: компьютеры, лаборатории вычислительной математики, аудитории №11, №13. 1.9.2. Перечень используемых пособий - электронная библиотека кабинетов №11, №13. 1.9.3.Перечень видео- и аудиоматериалов программного обеспечения. Математические пакеты Maple, Mathematica 5, С++. 1.10 Примерные зачетные тестовые задания. Вариант 1. 1. Сконструируйте нормальный алгоритм, вычисляющий функцию f ( x) x 7 , пользуясь при этом трехэлементным расширением B A {a, b, c} алфавита A {0,1, 2,3, 4,5,6,7,8,9} . Примените к словам: 993, 880. 2. Постройте протокол работы машины Тьюринга, заданной сокращенной таблицей и внешним алфавитом A {0, a, b, c, d} , примененной к слову aaab , если машина обозревает крайнюю левую ячейку. a b c d 0 q1 q4сП q5dП П П q6Л q2 q3 q3 Л Л q6Л q3 Л Л q1П q1П q4 П П П q2cЛ q5 П П П q2dП q6 aЛ bЛ q0П Описать, что делает машина. 3. Найдите рекурсивные формулы для трехместной функции f ( x, y, z) xz 2 yx , если рекурсия проводится по переменной z . Вариант 2. 1. Сконструируйте нормальный алгоритм, вычисляющий функцию f ( x) x 7 , пользуясь при этом трехэлементным расширением B A {a, b, c} алфавита A {0,1, 2,3, 4,5,6,7,8,9} . Примените к словам: 900, 813. 2. Постройте протокол работы машины Тьюринга, заданной сокращенной таблицей и внешним алфавитом A {0,*, a, b, c, d} , примененной к слову aaab * , если машина обозревает крайнюю левую ячейку. q1 a b q2сП q3dП c d 0 q0 * q6Л q2 П П q4П q3 П П q5П q4 аП q5аП q6аЛ q5 q4bП bП q6bЛ q6 Л Л q1аП q1bП q0 Л Описать, что делает машина. 3. Найдите рекурсивные формулы для трехместной функции f ( x, y, z) z3 x y 2 x , если рекурсия проводится по переменной y . 1.11 Примерный перечень вопросов к зачету (экзамену). 1.Необходимость уточнения понятия алгоритм 2.Перечислимые и разрешимые множества 3.Перечислимость и вычислимость 4.Перечислимое неразрешимое множество 5.Определение машины Тьюринга 6.Конструирование машин Тьюринга 7.Основная гипотеза теории алгоритмов 8.Марковские алгоритмы 9.Рекурсивные функции 10.Эквивалентность различных теорий алгоритмов 11.Пример невычислимой функции 12.Проблема распознавания самоприминимости 1.12 Комплект экзаменационных билетов. (нет) 1.13 Примерная тематика рефератов. 1. Машины Тьюринга. 2. .Марковские алгоритмы 3. Рекурсивные функции Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. 1.15 Примерная тематика квалификационных (дипломных) работ. 1. Машины Тьюринга. 2. Марковские алгоритмы 3. Рекурсивные функции Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. 1.16 Методика(и) исследования (если есть). нет 1.17 Бально-рейтинговая система, используемая преподавателем для оценивания знаний студентов по данной дисциплине. Каждый раздел дисциплины может быть сдан отдельно. За контрольную работу ставится оценка, ведется работа над ошибками. Раздел 2. Методические указания по изучению дисциплины (или ее разделов) и контрольные задания для студентов заочной формы обучения. (нет заочной формы обучения). Раздел 3. Содержательный компонент теоретического материала. Лекция №1. Вычислимость, разрешимость и перечислимость Алгоритмы в математике, примеры. Основные черты алгоритмов. Необходимость уточнения понятия алгоритма. Классические алгоритмически неразрешимые задачи. Понятие вычислимой функции. Разрешимые множества. Перечислимые множества. Теорема о пересечении и объединения перечислимых множеств. Перечислимые и разрешимые множества. Теорема Поста. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Лекция № 2. Вычислимость, разрешимость и перечислимость Теорема о вычислимой функции. Образ и прообраз вычислимой функции. Теорема о б образе и прообразе. Теорема о разрешимом множестве.Эффективное перечисление всех упорядоченных пар натуральных чисел, диагональный метод. Теорема о существовании перечислимого, но не разрешимого множества. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Лекция № 3. Машины Тьюринга Определение машины Тьюринга. Начальное и заключительное состояние машины Тьюринга. Программа машины Тьюринга. Внутренний и внешний алфавит машины Тьюринга. Конфигурация машины Тьюринга. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Лекция № 4. Машины Тьюринга Конструирование машин ТьюрингаПрименение машины Тьюринга к словам. Создание машин Тьюринга. Основная гипотеза теории алгоритмов. Вычислимая по Тьюрингу функция. Тезис Тьюринга. Машины Тьюринга и ЭВМ. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Лекция № 5. Марковские алгоритмы. Марковские подстановки. Алфавит. Расширение алфавита. Слово. Пустое слово. Подслово. Нормальный алгоритм. Применение нормального алгоритма к словам. Нормально вычислимые функции. Принцип нормализации Маркова. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Лекция № 6. Рекурсивные функции Построение класса рекурсивных функций. Функция следования, нуль-функция, функции-проекторы. Оператор суперпозиции. Оператор примитивной рекурсии. Оператор минимизации. Определения рекурсивной и общерекурсивной функции. Тезис Черча. Эквивалентность различных теорий алгоритмов. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Лекция № 7. Алгоритмически неразрешимые проблемы Пример невычислимой функции. Нумерация машин Тьюринга. Теорема о невычислимой функции. Определение самоприменимой машины Тьюринга. Теорема о распознавании самоприменимых машин Тьюринга. Литература. 1. Мальцев А. И. Алгоритмы и рекурсивные функции.– М.,1986. 2. Варпаховский Ф.Л. Элементы теории алгоритмов. – М., 1970. 3. Успенский В.А. Лекции о вычислимых функциях. – М., 1960. 4. Игошин В.И. Математическая логика и теория алгоритмов. – Саратов,1991. 5. Игошин В.И. Задачи и упражнения по математической логике и теории алгоритмов. – М.,2007. 6. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. / Пер. с англ. М., 1983. 7. Лавров И.А. Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов.– М., 1975. Раздел 4. Словарь терминов (глоссарий). §1. Вычислимость, разрешимость и перечислимость Алгоритм - четкая система инструкций, определяющая дискретный детерминированный процесс, ведущий от варьируемых начальных данных (входов) к искомому результату (выходу), если таковой существует, через конечное число тактов работы алгоритма; если же искомого результата не существует, то вычислительный процесс либо никогда не оканчивается, либо попадает в тупик. Два алгоритма называют эквивалентными, если:а) совпадение допустимых значений алгоритмов; в) получение одинаковых результатов, при одинаковых исходных значениях Изменение алгоритма, в результате которого снова получается алгоритм эквивалентный исходному алгоритму, называется эквивалентным преобразованием алгоритма. Корректность алгоритма состоит в том, что созданный для решения определенной задачи алгоритм должен для всех исходных данных, для которых эта задача может быть решена, получать решение и ни для каких исходных данных не давать неправильного результата. Множество натуральных чисел M называется разрешимым, если существует алгоритм, который по любому натуральному n определяет, принадлежит ли оно множеству M . Множество натуральных чисел M называется перечислимым, если M либо пусто, либо перечисляется некоторым алгоритмом, т.е. существует алгоритм для порождения всех его элементов и только их. Последовательность преобразований для заданного элемента, позволяющая достичь заданной цели преобразований за конечное число шагов, называется эффективным процессом. Функция f ( x1 ,..., xn ) называется вычислимой, если существует алгоритм, позволяющий вычислять ее значения для тех наборов аргументов, для которых она определена, и работающий вечно, если функция для данного набора значений аргументов не определена. Характеристической функцией множества M называется функция M , заданная на множестве M и принимающая значения в двухэлементном множестве {0,1} , определяемая следующим образом: 0, если ( x1 ,..., xn ) M ; 1, если ( x1 ,..., xn ) M . M ( x1 ,..., xn ) §2. Машины Тьюринга Алфавитом называется любое непустое множество. Его элементы называются буквами, а любые последовательности букв - словами в данном алфавите. Для удобства рассуждений допускаются пустые слова, не имеющие в своем составе ни одной буквы. Пустое слово будем обозначать . Слова будем обозначать латинскими буквами: P, Q, R,... (или этими же буквами с индексами). В каждый момент времени машина способна находиться в одном состоянии из конечного числа внутренних состояний, совокупность которых Q {q0 , q1 ,..., qm } называется внутренним алфавитом. Среди состояний выделяются два начальное q1 и заключительное, или состояние остановки, q0 . Находясь в состоянии q1 , машина начинает работать. Попав в состояние q0 , машина останавливается. Внешний алфавит A {a0 , a1 ,..., an } - это конечный алфавит символов, которые подаются на вход машины Тьюринга (МТ) и выдаются на ее выходе. Среди букв внешнего алфавита A имеется «пустая буква» a0 и она записана в пустую ячейку ленты. Лента предполагается неограниченной в обе стороны, но в каждый момент времени на ней записано конечное число непустых букв. Каждая команда T (i, j ) (i 1, 2,..., m; j 1, 2,..., n) представляет собой выражение одного из следующих видов: qi a j qk al E, qi a j qk al R, qi a j qk al L , где 0 k m , 0 l n . В выражениях первого вида символ E будем часто опускать. Конфигурация называется конечной, если все ячейки ленты, за исключением конечного числа, пусты. Конфигурация называется заключительной, если состояние, в котором находится машина, заключительное. Композиция - последовательное подключение одной машины к другой. Пусть 1 и 2 - две произвольные машины Тьюринга над одним и тем же входным алфавитом A {a0 , a1 ,..., an } , множества состояний Q1 {q0 , q1 ,..., qm } и Q2 {q0 , q1 ,..., qm } которых не пересекаются. Построим машину , которую и будем называть последовательным подключением машины 2 к 1 . Для этого из таблиц 1 и 2 машин 2 и 1 построим новую таблицу . В ней первая половина совпадает с таблицей 1 , за исключением состояния остановки считаем, что q0 q1 , а вторая половина совпадает с 2 . Машины и * , соответствующие программам и * , называть двойственными машинами. Легко видеть, что двойственные машины и * в некотором смысле функционируют симметричным образом. Непустое слово в алфавите A {a0 , a1 ,..., an } воспринимается машиной в стандартном положении, если оно записано в последовательных ячейках ленты, все другие ячейки пусты, и машина обозревает крайнюю справа ячейку из тех, в которых записано слово . Под k -oй конфигурацией понимается слово в алфавите A , записанное на ленту к началу k -го шага, с указанием, какая ячейка обозревается в этот шаг и в каком состоянии находится машина. Пусть - произвольная программа. Обозначим через * программу, которая получается из , если всюду в заменить в командах R на L и L на R. Программа * называется двойственной к . Сконструировать машину Тьюринга - значит написать (составить) ее программу. В этом процессе два этапа: сначала создать алгоритм вычисления значений функции, а затем записать его на языке машины Тьюринга (запрограммировать). Стандартное положение называется начальным (заключительным), если машина, воспринимающая слово в стандартном положении, находится в начальном состоянии q1 (в состоянии остановки q0 ). Слово перерабатывается машиной в слово , если от слова , воспринимаемого в начальном стандартном положении, машина после выполнения конечного числа команд приходит к слову , воспринимаемому в положении остановки. Тезис Тьюринга-Черча (основная гипотеза теории алгоритмов). Для нахождения значений функции, заданной в некотором алфавите, тогда и только тогда существует какой-нибудь алгоритм, когда функция является вычислимой по Тьюрингу, то есть когда она может вычисляться на подходящей машине Тьюринга. Функция называется вычислимой по Тьюрингу, если существует машина Тьюринга, вычисляющая ее. §3. Другие уточнения понятия алгоритма Алгоритмическая проблема - это проблема, в которой требуется найти единый метод (алгоритм) для решения бесконечной серии однотипных единичных задач. Такие проблемы называют также массовыми проблемами. Алфавитом называется любое непустое множество. Его элементы называются буквами, а любые последовательности букв - словами в данном алфавите. Для удобства рассуждений допускаются пустые слова (они не имеют в своем составе ни одной буквы). Пустое слово будем обозначать . Если A и B - два алфавита, причем A B , то алфавит B называется расширением алфавита A . Если функция всюду определена и рекурсивна, то она называется обще рекурсивной. Таким образом, всякая обще рекурсивная функция рекурсивна. Кроме того, функция, получающаяся с помощью оператора примитивной рекурсии, определена для всех значений аргументов и потому является общерекурсивной. Марковской подстановкой называется операция над словами, задаваемая с помощью упорядоченной пары слов ( P, Q) , состоящая в следующем. В заданном слове R находят первое вхождение слова P (если таковое имеется) и, не изменяя остальных частей слова R , заменяют в нем это вхождение словом Q . Полученное слово называется результатом применения марковской подстановки ( P, Q) к слову R . Если же нет вхождения P в слово R , то считается, что марковская подстановка ( P, Q) не применима к слову R . Марковские подстановки ( P, Q) записываются P Q и называются формулой подстановки ( P, Q) . Подстановка ( P, Q) называется заключительной, если после ее выполнения другие подстановки не выполняются, записывается P Q и называется формулой заключительной подстановки. Слово P называется левой частью, a Q правой частью в формуле подстановки. Принцип нормализации Маркова. Для нахождения значений функции, заданной в некотором алфавите, тогда и только тогда существует какой-нибудь алгоритм, когда функция нормально вычислима. Марковский алгоритм в алфавите A называется челночным, если в алфавит вводится специальный класс вспомогательных букв, называемых челноками, которые контролируют ход вычисления, т.е. символы расширения алфавита B не входящие в алфавит A . Нормальным алгоритмом (Маркова) в алфавите A называется правило построения последовательности Pi слов в алфавите A , исходя из данного слова P считающегося равным P0 . Пусть для некоторого i 0 слово Pi , построено, и процесс построения последовательности еще не завершился. Если в схеме нормального алгоритма нет формул, левые части которых входили бы в Pi , то Pi 1 полагают равным Pi и процесс построения последовательности считается завершившимся. Если в схеме имеются формулы с левыми частями, входящими в Pi , то в качестве Pi 1 берется результат марковской подстановки правой части первой из таких формул вместо первого вхождения ее левой части в слово Pi ; процесс построения последовательности считается завершившимся, если на данном шаге была применена формула заключительной подстановки, и продолжающимся в противном случае. Если процесс построения упомянутой последовательности обрывается, то говорят, что рассматриваемый нормальный алгоритм применим к слову P . Последний член Q последовательности называется результатом применения нормального алгоритма к слову P . Говорят, что нормальный алгоритм перерабатывает P в Q . Последовательность Pi будем записывать так: P0 P1 P2 ... Pm1 Pm , где P0 P и Pm Q . Оператор суперпозиции. Будем говорить, что m -местная функция получена из m -местной функции и n -местных функций f1 ,..., f m с помощью оператора суперпозиции, если для всех справедливо равенство: x1 , x2 ,..., xn ( x1 , x2 ,..., xn ) ( f1 ( x1 , x2 ,..., xn ),..., f m ( x1 , x2 ,..., xn )) . Оператор примитивной рекурсии. Будем говорить, что (n 1) -местная функция получается из n -местной функции f и (n 2) -местной функции g с помощью оператора примитивной рекурсии, если для любых значений x1 , x2 ,..., xn , y выполняются равенства ( x1 ,..., xn , 0) f ( x1 ,..., xn ), ( x1 ,..., xn , y 1) g ( x1 ,..., xn , y, ( x1 ,..., xn , y )). Оператор минимизации. Будем говорить, что n -местная функция получается из (n 1) -местных функций f1 и f 2 с помощью оператора минимизации, или оператора наименьшего числа, если для любых x1 , x2 ,..., xn , y равенство ( x1 , x2 ,..., xn ) y выполнено тогда и только тогда, когда значения fi ( x1 ,..., xn ,0),..., fi ( x1 ,..., xn , y 1), (i 1, 2) определены и попарно неравны: f1 ( x1 ,..., xn , 0) f 2 ( x1 ,..., xn , 0), ... f1 ( x1 ,..., xn , y 1) f 2 ( x1 ,..., xn , y 1), f1 ( x1 ,..., xn , y ) f 2 ( x1 ,..., xn , y ). Другими словами, величина ( x1 , x2 ,..., xn ) равна наименьшему значению аргумента y , при котором выполняется последнее равенство. Обозначение: ( x1 , x2 ,..., xn ) y [ f1 ( x1,..., xn , y) f2 ( x1,..., xn , y)] . Предположим, что на ленте машины Тьюринга записана ее собственная функциональная схема в алфавите машины. Если машина применима к такой конфигурация, то будем называть ее самоприменяемой, в противном случае — несамоприменяемой. Тезис Чёрча. Числовая функция тогда и только тогда алгоритмически (или машинно) вычислима, когда она рекурсивна. Упорядоченный конечный список формул подстановок в алфавите A : P1 P 2 Pr ()Q1 ()Q2 ... ()Qr - называется схемой нормального алгоритма в A . (Запись точки в скобках означает, что она может стоять в этом месте, а может отсутствовать.) Данная схема определяет алгоритм преобразования слов, называемый нормальным алгоритмом Маркова. Функция f , заданная на некотором множестве слов алфавита A , называется нормально вычислимой, если найдется такое расширение B данного алфавита ( A B) и такой нормальный алгоритм в B , что каждое слово P (в алфавите A ) из области определения функции f этот алгоритм перерабатывает в слово f ( P) . Частичная функция f называется рекурсивной, если она может быть получена из простейших функций с помощью конечного числа применений операторов суперпозиции, примитивной рекурсии и минимизации. Другими словами, f рекурсивна, если существует такая конечная последовательность g1 ,..., gn частичных функций, что g n f и каждая функция этой последовательности либо является простейшей, либо получена из предыдущих с помощью операторов суперпозиции, примитивной рекурсии и минимизации. Число k будем называть номером машины Тьюринга, если программа этой машины записывается словом k . Раздел 5. Практикум по решению задач по темам лекций. Практическое занятие по теме «Описание и работа машины Тьюринга» (2 часа). Описание машины Тьюринга. Работа машины Тьюринга. Процесс подстановки в машине Тьюринга. Вычислимые по Тьюрингу функции. Синтез машин Тьюринга. №1. Дана машина Тьюринга с внешним алфавитом A {0,1} , алфавитом внутренних состояний Q {q0 , q1 , q2 } и со следующей функциональной схемой (программой): q1 0 q2 0R, q2 0 q01, q11 q11R, q21 q21R . В какое слово переработает эта машина слово а) 101, б) 11011, в) 0011, исходя из стандартного начального положения. Решение. Будем последовательно выписывать конфигурации машины при переработке слова 101. Имеем стандартное начальное положение: q1 1 0 1 На первом шаге действует команда: q11 q11R . В результате на машине создается следующая конфигурация: q1 1 0 1 0 На втором шаге действует команда: q1 0 q2 0R и на машине создается конфигурация: q2 1 0 1 0 0 Третий шаг обусловлен командой: q2 0 q01 . В результате создается конфигурация: q0 1 0 1 0 1 Эта конфигурация является заключительной, т.к. машина оказалась в состоянии остановки q0 . Таким образом, исходное слово 101 переработано машиной в слово 10101. Полученную последовательность конфигураций можно записать более коротким способом, в виде слов в алфавите A Q : содержимое обозреваемой ячейки записано справа от состояния, в котором находится в данный момент машина, 10q11 101q1 0 1010q2 0 1010q01 . № 2. Машина Тьюринга задается внешним алфавитом A {0,1,*} , алфавитом внутренних состояний Q {q0 , q1 , q2 , q3} и программой, заданной таблицей: q1 0 1 * q2 q3 q31R q1 0 L q2 0L q2 1L q31R q0 0 q2 * L q3 * L Как эта машина перерабатывает слова а) 11*11, б) 111*11, в), 11*111, и обнаружить закономерность в ее работе. Решение. Чтобы определить по таблице, что будет делать машина, находясь, например, в состоянии q2 и наблюдая в обозреваемой ячейке символ 1, нужно найти в таблице клетку, находящуюся на пересечении столбца q2 и строки 1. В этой клетке записано q2 1L . Т.е. на следующем шаге машина останется в прежнем состоянии q2 , сохранит содержимое обозреваемой ячейки 1 и перейдет к обозрению следующей левой ячейки на ленте. Применим эту машину к слову 11*11. Вот последовательность конфигураций, возникающих в процессе работы машины (исходная конфигурация - стандартная начальная): 11*1q11 11* q210 11q2 *10 1q21*10 q211*10 q2 011*10 1q311*10 11q31*10 111q3 *10 111* q310 111*1q3 0 111* q110 111q2 *00 11q21*0 1q211*0 q2111*0 q2 0111*0 1q3111*0 11q311*0 111q31*0 1111q3 *0 1111* q3 0 1111q1 *0 1111q0 00 . Изучив работу данной машины можно заметить, данная машина Тьюринга реализует операцию сложения: в результате ее работы на ленте записано подряд столько единиц, сколько их было всего записано по обе стороны от звездочки перед началом работы машины. № 3. Дана МТ с внешним A {0,1} и внутренним Q {q0 , q1 , q2 , q3 , q4 , q5 , q6 , q7 } алфавитом и со следующей функциональной схемой (программой): 0 1 q1 q2 q3 q4 q5 q6 q7 q4 0R q6 0R q6 0R q0 1 q4 0R q0 0 q6 0R q2 1L q31L q11L q5 0 q5 0 q7 0 q7 0 Изображая на каждом такте работы машины получающей конфигурацию, определите, в какое слово перерабатывает машина каждое из следующих слов, исходя из начального стандартного положения: а) 11111; б) 111111; в) 1111; г) 1111111; д) 10111001111; е) 110111. № 4. Запишите программу (функциональную схему) машин Тьюринга из задачи: а) в виде последовательности команд; б) в виде сокращенной таблицы; в) в виде сокращенной последовательности команд. Решение. б) Сокращение достигается за счет следующих соглашений: если состояние машины после выполнения команды не меняется, то мы его второй раз не пишем в команде; если команда вписывает в ячейку ту же самую букву, что была записана там, то эту букву второй раз в команде не пишем. Сокращенная таблица, представляющая программу машины №3, имеет тогда следующий вид: q1 q2 q3 q4 q5 q6 q7 q6 R q6 R q0 1 q4 R q0 q6 R 0 q4 R q1 L q5 0 q7 0 q7 0 q3 L 0 1 q2 L № 5. Проверьте, что МТ с внешним алфавитом A {0,1} и программой: 0 1 q1 q2 q3 q4 q5 q4 R q6 R q2 L q3 L q8 R q0 q4 R q1 L q4 0 q6 q7 q8 q9 q0 1 q101 q9 0L q8 R q7 0 q9 0 q10 q0 1 q10 R каждое слово длины n в алфавите A {1} перерабатывается в слово длины r , где r остаток от деления n на 3. Проверьте действия данного алгоритма, применив их к словам: 111, 1111, 11111. Практическое занятие по теме «Конструирование машин Тьюринга» (4 часа). № 1. Построить такую машину Тьюринга, которая из n записанных подряд единиц оставляла бы на ленте n 2 единицы, также записанные подряд, если n 2 , и работала бы вечно, если n 1 или n 0 . К каким еще видам слов применима (неприменима) данная машина? Решение. В качестве внешнего алфавита возьмем двухэлементное множество A {0,1} . Количество необходимых внутренних состояний определим в процессе составления программы. Машина начинает работать из стандартного начального положения, то есть когда в состоянии q1 обозревается крайняя правая единица из n записанных на ленте. Начнем с того, что сотрем первую единицу, если она имеется, перейдем к обозрению следующей левой ячейки и сотрем там единицу, если она в этой ячейке записана. На каждом таком переходе машина должна переходить в новое внутреннее состояние, ибо в противном случае будут стерты вообще все единицы, записанные подряд. Вот команды, осуществляющие описанные действия: q11 q2 0L, q21 q3 0L . Машина находится в состоянии q3 и обозревает третью справа ячейку из тех, в которых записано данное слово. Не меняя содержимого обозреваемой ячейки, машина должна остановится, то есть перейти в заключительное состояние q0 , не зависимо от содержимого ячейки. Вот эти команды: q3 0 q0 0, q31 q01 . Теперь рассмотрим ситуации, когда на ленте записана всего одна единица или не записано ни одной. Если на ленте записана одна единица, то после первого шага (выполнив команду q11 q21L ) машина будет находиться в состоянии q2 и будет обозревать вторую справа ячейку, в которой записан 0. По условию, в таком случае машина должна работать вечно. Это можно обеспечить, например, такой командой: q2 0 q2 0R , выполняя которую шаг за шагом, машина будет двигаться по ленте неограниченно вправо. Если на ленте не записано ни одной единицы, то машина, по условию, также должна работать вечно. В этом случае в начальном состоянии q1 обозревается ячейка с содержимым 0, и вечная работа машины обеспечивается следующей командой: q1 0 q1 0R . Запишем составленную программу построенной машины Тьюринга в виде таблицы: 0 1 q1 q2 q3 q1 0 R q2 0R q0 0 q2 0L q3 0 L q0 1 Созданная нами машина Тьюринга может применяться не только к словам в алфавите A {0,1} , представляющим собой записанные подряд n единиц ( n 2 ). Она применима в этом алфавите к словам: 1011, 10011, 111011, 11011, 1100111, 1001111, 10111, 10110111, 10010111 и т. д. (исходя из стандартного начального положения). Построенная машина неприменима (то есть при подаче этих слов на вход машины она работает вечно) не только к слову «1» или к слову, состоящему из одних нулей. Она неприменима и к следующим словам: 101, 1001, 11101, 101101, 1100101101 и т. д. №2. Известно, что на ленте записано слово из n единиц 11...1; n 1 . Постройте машину Тьюринга с внешним алфавитом A {0,1} , которая отыскивала бы левую единицу этого слова, если в начальный момент головка машины обозревает одну из ячеек с буквой данного слова. №3. Сконструируйте машину Тьюринга с внешним алфавитом A {0,1} , которая каждое слово в алфавите A1 {1} перерабатывает в пустое слово, исходя из стандартного начального положения. №4. Сконструируйте машину Тьюринга с внешним алфавитом A {0,1} , которая каждое слово длиной n в алфавите A1 {1} перерабатывает в слово длиной n 1 в том же алфавите A1 {1} . № 5. На ленте машины Тьюринга записаны два набора единиц 1. Они разделены звездочкой . Составьте функциональную схему машины так, чтобы она, исходя из стандартного начального положения, выбрала больший из этих наборов, а меньший стерла. Звездочка должна быть сохранена, чтобы было видно, какой из массивов выбран. Рассмотрите примеры работы этой машины применительно к словам: а) 111 ; б) 111 ; в) 11111 ; г) 11111 ; д) 1111111 ; е) 1111111 . № 6. Какие из перечисленных функций вычислимы по Тьюрингу а) f ( x) x 2 , б) f ( x) x 1 , в) f ( x) x 2 . Проверить правильность работы этих машины Тьюринга, взяв в качестве исходных конкретные слова: 111, 1111, 111111, 1111111111. Решение. Функция f ( x) x 2 не всюду определена: областью ее определения является лишь множество всех четных чисел. Поэтому нужно сконструировать такую машину Тьюринга, которая при подаче на ее вход четного числа давала бы на выходе половину этого числа, а при подаче нечетного - работала бы неограниченно долго. В качестве внешнего алфавита возьмем двухэлементное множество A {0,1} . В этом алфавите натуральное число x изображается словом, состоящим из x единиц, стоящих на ленте в ячейках подряд. Работа машины начинается из стандартного начального положения: 01...1q110 . Сделаем начало вычислительного процесса таким: машина обозревает ячейки, двигаясь справа налево, и каждую вторую единицу превращает в 0. Если для последней единицы второй единицы не найдется, то машина продолжит движение по ленте влево неограниченно, то есть будет работать бесконечно. Такое начало обеспечивается следующими командами: q11 q21L, q21 q1 0L, q2 0 q2 0L . Если же число x единиц четно, то в результате выполнения команд создается конфигурация q1 001010...01010 , в которой число единиц равно x 2 . Остается сдвинуть единицы так, чтобы между ними не стояли нули. Для осуществления этой процедуры предлагается следующий алгоритм. Будем двигаться по ленте вправо, ничего на ней не меняя, до первой единицы и перейдем за единицу. Передвижение осуществляется с помощью следующих команд: q1 0 q3 0R, q3 0 q3 0R, q31 q41R . В результате их выполнения получим конфигурацию 001q4 010...01010 (*). Заменим 0, перед которым остановились, на 1 и продвигаемся вправо до ближайшего 0: q4 0 q51R, q51 q51R . Получим конфигурацию 00111q5 0...01010 , в которой правее обозреваемой ячейки записаны «пары» 01, 01,..., 01 . И сейчас на ленте записана одна единица лишняя. Продвинемся по ленте вправо до последней «пары» 01. Это можно сделать с помощью своеобразного цикла: q5 0 q6 0R, q61 q51R . Получим конфигурацию 001110101...010q6 00 . Двигаться дальше вправо бессмысленно. Вернемся на две ячейки назад и заменим единицу из последней «пары» 01 на ноль: q6 0 q7 0L, q7 0 q7 0L, q71 q8 0L . Получим конфигурацию 0011101001...010q8 00 . Число единиц на ленте снова равно x 2 . Продвинемся влево на одну ячейку с помощью команды q8 0 q9 0L в результате чего получим конфигурацию 0011101001...0q9100 . Теперь уничтожим самую правую единицу и продвинемся по ленте влево до следующей единицы: Получим конфигурацию q91 q101L, q10 0 q10 0L . 0011101001...0q10100 , в которой левее обозреваемой ячейки записана серия пар 10,10,...,10 (если читать справа налево). Теперь на ленте недостает одной единицы, то есть число единиц равно x 2 1 . Продвинемся по ленте влево до последней «пары» 10. Это можно сделать с помощью цикла q101 q111L, q11 0 q10 0L , выполнив который придем к следующей конфигурации: 001q11110101...0100 . Вернемся вправо к ближайшему нулю и превратим его в единицу: q111 q121R, q121 q121R, q12 0 q131R . Получим конфигурацию 001111q13101...0100 , в которой число единиц снова равно x . Если теперь перешагнем 2 вправо по ленте через обозреваемую единицу и переведем машину в состояние q4 с по- мощью команды q131 q41R , то придем к следующей конфигурации: 0011111q4 01...0100 , которая по существу аналогична конфигурации (*). В результате программа зацикливается: снова ближайший 0 превращается в 1, а самая правая 1 - в 0, затем машина возвращается к самому левому нулю, оказываясь в начале следующего цикла, и т.д. В некоторый момент конфигурация будет иметь вид 00111...1111q13 00 . Остается остановить машину. Это делается с помощью команды q13 0 q0 0L. Запишем программу машины Тьюринга в форме таблицы: q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q10 0 L q10 0 L q131R q0 0L 0 q3 0R q2 0L q3 0R q51R q6 0R q7 0L q7 0L q9 0L q51R q51R q8 0 L q10 0 L q111L q12 1R q131R q41R 1 q21L q1 0 L q41R № 7. Построить машину Тьюринга, которая находит первый левый нуль в слове в алфавите A {0,1} и удаляет две единицы, стоящие подряд, правее его, или удаляющей первую единицу справа от него и первую единицу слева от него и работающую бесконечно в противном случае. Практическое занятие по теме «Нормальные алгоритмы» (4 часа). Применение к словам Марковских подстановок. Нормально вычислимые функции. Конструирование нормальных алгоритмов. № 1. Пусть для слов в алфавите A {a, b, c, d} заданы следующие марковские подстановки: а) ab c ; б) aс d ; в) aа c ; г) abс d ; д) c ; е) ab ; ж) ab cda . Примените каждую из них к словам acabcaacaa ; ababcaacda ; acabcaсdcaa . Решение. Для применения марковской подстановки P Q данному слову важно обнаружить в данном слове первое вхождение полслова P и заменить его словом Q . а) acabcaacaa acсcaacaa ; б) acabcaacaa dabcaacaa и т.д. № 2. Примените каждую из подстановок в задании №1 максимально возможное число раз. № 3. Нормальный алгоритм в алфавите A {a, b,1} задается схемой: a 1, b 1 . Примените его к слову: a) abababa ; б) aabb ; в) aaa ; г) bbbb ; д) a11ba ; е) a1b1aa11b . Решение. а) Данный алгоритм сначала последовательно заменяет все вхождения буквы а в данном слове на букву 1, и затем также последовательно заменяет все вхождения буквы b на букву 1. Имеющиеся в слове буквы 1 оставляет без изменения. Таким образом, данное слово перерабатывается в слово, состоящее из такого количества единиц, сколько всего букв содержало данное слово. Процесс переработки данного слова выглядит так abababa 1bababa 1b1baba 1b1b1ba 1b1b1b1 111b1b1 11111b1 1111111 . К полученному слову ни одна из подстановок данной схемы уже не применима. Следовательно, работа алгоритма завершена. № 4. Нормальный алгоритм в алфавите A {a, b,1} задается схемой: a 1, b 1, 11 . Примените его к словам из предыдущей задачи. Решение. а) Алгоритм предыдущей задачи является составной частью алгоритма настоящей задачи. Поэтому вначале данное слово перерабатывается в слово, состоящее из такого количества единиц, сколько всего букв содержит данное слово. Затем в полученном слове из единиц начинают вычеркивать единицы по две штуки. В итоге либо не останется ни одной единицы (пустое слово, если исходное слово содержало четное число букв), либо остается одна единица. abababa 1bababa 1b1baba 1b1b1ba 1b1b1b1 111b1b1 11111b1 1111111 11111 111 1 . К полученному слову ни одна из подстановок данной схемы уже не применима. Следовательно, работа алгоритма завершена. № 5. Сконструируйте нормальный алгоритм в алфавите A {1} , вычисляющий следующую функцию: а) f ( x) x 1 ; 1, если число единиц делится на 3, , если число единиц не делится на 3. б) 3 (11...11) Решение. а) В алфавите A {1} схема 1 определяет нормальный алгоритм, который к каждому слову в алфавите A {1} (все такие слова суть следующие: , 1, 11, 111 и т. д.) приписывает слева 1. Алгоритм реализует функцию f ( x) x 1 . 1, если число единиц делится на 3, , если число единиц не делится на 3. б) Дана функция: 3 (11...11) Рассмотрим нормальный алгоритм в алфавите A {1} следующей схемой: 111 11 1 1 . Алгоритм работает по принципу: пока число букв 1 в слове не меньше 3, алгоритм последовательно стирает по три буквы. Если число букв меньше 3, но больше 0, то оставшиеся буквы 1 или 11 стираются заключительно; если слово пусто, оно заключительно переводится в слово 1. Например: 11111 11 , 111111 111 . № 6. Какую функцию вычисляет нормальный алгоритм: а) ; б) . № 7. Сконструируйте нормальный алгоритм, вычисляющий словарную функцию f ( w) wu , заданную на словах в алфавите A , которая к каждому слову w в алфавите A приставляет справа фиксированное слово u . Решение. В качестве алфавита для требуемого нормального алгоритма возьмем алфавит B A {*} {0,1} {*} {0,1,*} . Рассмотрим нормальный алгоритм в алфавите B со следующей схемой: *0 0*, *1 1*, * u, * . Применим данный алгоритм, например, к слову w 10011 в алфавите A . На первом шаге применяется последняя подстановка схемы, что дает слово *10011 . На каждом последующем шаге будут применяться поочередно первые две подстановки данной схемы, в результате чего символ * будет меняться местами с символами 0 и 1 до тех пор, пока не достигнет правого края данного слова: 10011* . Теперь работает заключительная подстановка * u , которая дает слово 10011u . № 8. В алфавите B A {a, b} , являющемся расширением алфавита A {0,1, 2,3, 4,5,6,7,8,9} , рассмотрим нормальный алгоритм, задаваемый схемой (читается по столбцам): 0b 1 1b 2 2b 3 3b 4 4b 5 5b 6 6b 7 7 b 8 8b 9 9b 0 b 1 a 0 0a a1 1a a 2 2a a3 3a a 4 4a a 5 5a a 6 6a a7 7a a8 8 a a9 9a 0a 0b 1a 1b 2a 2b 3a 3b 4a 4b 5a 5b 6a 6b 7 a 7b 8a 8b 9a 9b a Применив его к следующим словам, постарайтесь понять, какую функцию он вычисляет: а) 149; б) 499; в)999. Решение. Попытаемся применить алгоритм к пустому слову . На каждом шаге будет применяться самая последняя формула данной схемы. Получается бесконечный процесс: a aa aaa ... . К пустому слову данный алгоритм неприменим. Если применить теперь алгоритм к слову 499 , получим следующую последовательность слов: 499 a 499 4a99 49a9 499a 499b 49b0 4b00 500 . Таким образом, данный нормальный алгоритм реализует функцию f ( x) x 1 . № 8. Сконструируйте нормальный алгоритм в алфавите B A {a, b} , являющемся расширением алфавита A {0,1, 2,3, 4,5,6,7,8,9} , вычисляющий функцию f ( x) x 1 . № 9. В алфавите являющемся расширением алфавита B A {a, b, с} , A {0,1, 2,3, 4,5,6,7,8,9} , рассмотрим нормальный алгоритм, задаваемый схемой: 0b 2 a 0 0a 0a 0b 1b 3 a1 1a 1a 1b 2b 4 a 2 2a 2a 2b 3b 5 a3 3a 3a 3b 0с 1 1с 2 2с 3 3с 4 4с 5 4b 6 a 4 4a 4a 4b 5b 7 a5 5a 5a 5b 6b 8 a 6 6a 6a 6b 7b 9 a 7 7 a 7 a 7 b 5с 6 6с 7 7 с 8 8с 9 8b с0 a8 8a 8a 8b 9с с0 9b с1 a9 9a 9a 9b с 1 а Применив его к следующим словам, постарайтесь понять, какую функцию он вычисляет: а) 148; б) 498; в)999. Решение, а) 148 а148 1а48 14а8 148а 148b 14c0 150 . б) 498 а 498 4а98 49а8 498а 498b 49c0 4c00 500 . в) 999 а999 9а99 99а9 999а 999b 99c1 9c01 c001 1001 . Таким образом, данный нормальный алгоритм реализует функцию f ( x) x 2 . № 10. . В алфавите B A {a, b, с} , являющемся расширением алфавита A {0,1, 2,3, 4,5,6,7,8,9} , рассмотрим нормальный алгоритм, задаваемый схемой: a 0 0a 0a 0b 0b с8 a1 1a 1a 1b 1b с9 a 2 2a 2a 2b 2b 0 a3 3a 3a 3b 3b 1 a 4 4a 4a 4b 4b 2 0с с 9 1с 0 2с 1 3с 2 4с 3 5с 4 a5 5a 5a 5b 5b 3 6с 5 a 6 6a 6a 6b 6b 4 7 с 6 a 7 7 a 7 a 7 b 7b 5 8с 7 a8 8a 8a 8b 8b 6 9с 8 a9 9a 9a 9b 9b 7 а Применив его к следующим словам, постарайтесь понять, какую функцию он вычисляет: а) 100; б) 501; в)1001. № 11. Сконструируйте нормальные алгоритмы, вычисляющие функции: а) f ( x) x 6 ; б) f ( x) x 6 . Пользуйтесь при этом трехэлементным расширением B A {a, b, с} , являющемся расширением алфавита A {0,1, 2,3, 4,5,6,7,8,9} . № 12. Сконструируйте нормальный алгоритм, вычисляющий функцию f ( x) 10 x . Указание. Смотри задачу № 7. № 13. Составьте нормальный алгоритм в трехэлементном расширении B A {a, b, с} , являющемся расширением алфавита A {0,1, 2,3, 4,5,6,7,8,9} , вычисляющий функцию f ( x) 2 x . Практическое занятие по теме «Основные вычислимые операторы» (4 часа) Суперпозиция частичных функций. Понятие рекурсии. Оператор примитивной рекурсии. Простейшие функции выбора, нуль-функция и функция следования. Примитивно рекурсивные функции. Операция минимизации. Понятие частично рекурсивной функции, свойства, исходные функции. №1.Докажите, что следующие функции примитивно рекурсивны, руководствуясь непосредственно определением примитивно рекурсивной функции: а) ( x) n ; б) ( x) x n ; в) ( x, y) x y , г) ( x, y) xy . Решение, а) Покажем, что эта функция получается из простейших в результате лишь их суперпозиции, без применения оператора примитивной рекурсии. Из любого числа x можно получить фиксированное число n , нужно сначала числу x сопоставить число 0: O( x) 0 , а затем к полученному результату, т.е. к 0, с помощью функции S прибавлять по единице 1 до тех пор, пока не получится число n , т.е. необходимо применить эту функцию к числу O( x) последовательно n раз. Получим выражение: ( x) S (S (...S (O( x))...)) , доказывающее примитивную рекурсивность данной функции. в) Функция ( x, y) x y получается примитивной рекурсией из функций: f ( x) ( x,0) x 0 x 12 ( x, y) , g ( x, y, ( x, y)) ( x, y 1) x y 1 ( x, y) 1 S (33 ( x, y, ( x, y))) . № 2. Докажите, что функция, полученная суперпозицией примитивно рекурсивных функций, сама примитивно рекурсивна. Решение. В самом деле, компоненты этой функции получены из простейших функций S ( x) , O ( x) nm ( x1 , x2 ,..., xn ) с помощью конечного числа применений операторов суперпозиции и примитивной рекурсии. Чтобы получить рассматриваемую функцию, нужно добавить еще одну суперпозицию. В итоге эта функция также получается из простейших функций в результате конечного числа применений операторов суперпозиции и примитивной рекурсии, т. е. примитивно рекурсивна. № 3. Докажите, что следующие функции примитивно рекурсивны, руководствуясь определением примитивно рекурсивной функции и теоремой, установленной в предыдущей задаче: 1. ( x) x! , 2. ( x, y) x y , 0, если x 0, 1, если x 0; 3. sg ( x) 0, если x 0, 1, если x 0; 4. sg ( x) x y, если x y , 0, если x y. 5. x y Решение. 1) По определению данной функции 0! 1 , т.е. (0) 1 . Это первое равенство схемы примитивной рекурсии, где n 0 и f 1 - постоянная функция. По определению данной функции x ! , ( x 1)! 1 2 ... x ( x 1) x!( x 1) f ( x)S ( x) S ( x) f ( x) . Это равенство можно представить так: f ( x 1) p(S ( x), f ( x)) , где функция p( x, y) x y . Она представляет собой второе равенство схемы примитивной рекурсии, где g ( x) p(S ( x), f ( x)) суперпозиция функций p и S каждая из которых примитивно рекурсивна (первая - по задаче 1, г, вторая - простейшая). Значит, функция g ( x) примитивно рекурсивна (по задаче 2). Окончательно, данная функция ( x) но лучена в результате применения операторов суперпозиции и примитивной рекурсии к примитивно рекурсивным функциям 1, p, S , а значит, по определению является примитивно рекурсивной функцией. 5) Функция x 1 , получается из функции x y фиксированием второго аргумента, удовлетворяет следующим соотношениям: 0 1 0 O ( x), ( x 1) 1 x 12 ( x, y ), то есть, получена из простейших функций O( x) и 12 ( x, y) с помощью оператора примитивной рекурсии. Усеченная разность удовлетворяет равенствам: x 0 x 12 ( x, y), x ( y 1) ( x y) 1 g ( x, y, x y) для любых x, y . Таким образом, двуместная функция x y получена с помощью оператора примитивной рекурсии из простейшей функции 12 ( x, y) и функции h( x, y, z ) z 1 . № 4. Какая функция f получается из функций и g с помощью схемы примитивной рекурсии. 1. ( y) 0, g ( x, y, z) z x, 2. ( x, z) z, g ( x, y, z, t ) t x, 3. ( y, z) 0, g ( x, y, z, t ) t y 2 z, 4. ( x, y) 2x y , g ( x, y, z, t ) 2t, 5. ( y) y 2 , g ( x, y, z) z 2x 1, 6. ( y) y2 , g ( x, y, z) z 2x 2 y 1. № 5. Рассмотрим следующую функцию: d ( x, y) z [ y z x] z [s(32 ( x, y, z), 33 ( x, y, z)) 13 ( x, y, z)] . Вычислить значения d (7, 2) и d (3, 4) . Решение. Для этого нужно положить y 2 и, придавая переменной z последовательно значения 0,1, 2,3,... , каждый раз вычислять сумму y z . Как только она станет равной 7, то соответствующее значение z принять за значение d (7, 2) . Вычисляем: z 0, y z 2 0 2 7; z 1, y z 2 1 3 7; z 2, y z 2 2 4 7; z 3, y z 2 3 5 7; z 4, y z 2 4 6 7; z 5, y z 2 5 7. Таким образом, d (7, 2) 5 . Попытаемся вычислить по этому правилу d (3, 4) : z 0, y z 4 0 4 3; z 1, y z 4 1 5 3; z 2, y z 4 2 6 3; … Видим, что данный процесс будет продолжаться бесконечно. Следовательно, d (3, 4) не определено. Таким образом, d ( x, y) x y . № 6. С помощью оператора минимизации можно получить частичную функцию, выражающую частное от деления двух натуральных x y чисел: q( x, y) z [ yz x] z [ p(32 ( x, y, z ), 33 ( x, y, z)) 13 ( x, y, z)] . Вычислить значения q(6, 2) и q(7, 4) . Практическое занятие «Контрольная работа» (2 часа). Вариант 1. 1. Сконструируйте нормальный алгоритм, вычисляющий функцию f ( x) x 7 , пользуясь при этом трехэлементным расширением B A {a, b, c} алфавита A {0,1, 2,3, 4,5,6,7,8,9} . Примените к словам: 993, 880. 2. Постройте протокол работы машины Тьюринга, заданной сокращенной таблицей и внешним алфавитом A {0, a, b, c, d} , примененной к слову aaab , если машина обозревает крайнюю левую ячейку. a b c d 0 q1 q4сП q5dП П П q6Л q2 q3 q3 Л Л q6Л q3 Л Л q1П q1П q4 П П П q2cЛ q5 П П П q2dП q6 aЛ bЛ q0П Описать, что делает машина. 3. Найдите рекурсивные формулы для трехместной функции f ( x, y, z) xz 2 yx , если рекурсия проводится по переменной z . Вариант 2. 1. Сконструируйте нормальный алгоритм, вычисляющий функцию f ( x) x 7 , пользуясь при этом трехэлементным расширением B A {a, b, c} алфавита A {0,1, 2,3, 4,5,6,7,8,9} . Примените к словам: 900, 813. 2. Постройте протокол работы машины Тьюринга, заданной сокращенной таблицей и внешним алфавитом A {0,*, a, b, c, d} , примененной к слову aaab * , если машина обозревает крайнюю левую ячейку. a b c d q1 q2сП q3dП q2 П П q3 П П q4 аП q5аП q5 q4bП bП q6 Л Л q1аП q1bП Описать, что делает машина. 3. Найдите рекурсивные формулы для трехместной рекурсия проводится по переменной y . Раздел 6. Изменения в рабочей программе, утверждения программы. Характер изменений в программе Номер и дата протокола заседания кафедры, на котором было принято данное решение 0 q0 q6аЛ q6bЛ q0 * q6Л q4П q5П Л функции f ( x, y, z) z3 x y 2 x , если которые произошли после Подпись заведующего кафедрой, утверждающего внесенное изменение Раздел 7. Учебные занятия по дисциплине ведут: Подпись декана факультета (проректора по учебной работе), утверждающего данное изменение Ф.И.О., ученое звание и степень преподавателя Старший преподаватель Большакова Н.С. Ст. преподаватель Зятикова С.Н. Ст. преподаватель Зятикова С.Н. Ст. преподаватель Зятикова С.Н. Учебный год Факультет Специальность 2007-2008 ПМПЭ ММЭ 2010-2011 2011-2012 2012-2013 ФМИОП ФМИОП ФМИОП ММЭ ММЭ ММЭ