Дискретная математика: теория алгоритмов и сложность вычислений

Содержание

Слайд 5

Внутренние потребности теоретической математики (математическая логика, алгебра, геометрия и анализ).
Создание быстродействующих электронных

Внутренние потребности теоретической математики (математическая логика, алгебра, геометрия и анализ). Создание быстродействующих
вычислительных и управляющих машин.
Связь с рядом областей лингвистики, экономики, физиологии мозга и психологии, философии, естествознания.

Слайд 6

Определение алгоритма через понятие вычислительной машины (машины Тьюринга, предложено Тьюрингом в 1937г.

Определение алгоритма через понятие вычислительной машины (машины Тьюринга, предложено Тьюрингом в 1937г.
и машины Поста в то же время);
Определение алгоритма через процедуру переработки слов по заданным правилам (нормальные алгоритмы, предложены Марковым в 1956г.);
Определение алгоритма через рекурсивную функцию (предложено Клини и Геделем в 1936г.).

Слайд 7

слово “алгоритм” является производным от имени среднеазиатского ученого Аль Хорезми, уроженца Хивы,

слово “алгоритм” является производным от имени среднеазиатского ученого Аль Хорезми, уроженца Хивы,
жившего в IX веке нашей эры.

Алгоритм – это точное предписание о выполнении в некотором порядке системы операций, определяющих процесс перехода от исходных данных к искомому результату для решения задачи данного типа.

Это понятие относится к исходным математическим понятиям, которые не могут быть определены через другие, более простые понятия.

Слайд 8

Предписание считается алгоритмом, если оно обладает следующими свойствами:

Каждый алгоритм, в общем случае,

Предписание считается алгоритмом, если оно обладает следующими свойствами: Каждый алгоритм, в общем
должен задаваться следующими параметрами:

определенностью, то есть общепонятностью и точностью, не оставляющими место произволу,
массовостью, то есть возможностью исходить из меняющихся в известных пределах значений исходных данных,
результативностью, то есть направленностью на получение искомого результата,
элементарностью шагов, на которые разбивается последовательность операций.

множеством допустимых исходных данных,
начальным состоянием,
множеством допустимых промежуточных состояний,
правилами перехода из одного состояния в другое,
множеством конечных результатов,
конечным состоянием.

Слайд 9

Есть проблемы, для которых алгоритм вообще не может существовать.

задача точного определения

Есть проблемы, для которых алгоритм вообще не может существовать. задача точного определения
понятия алгоритма

Все проблемы алгоритмически разрешимы, но для некоторых алгоритм еще не найден, поскольку еще не развиты соответствующие разделы математики.

1920е годы: две точки зрения

Всеобщий алгоритм

"А нельзя ли создать Всеобщий Алгоритм, который решал бы любую математическую задачу аксиоматической теории?"

Готфрид Вильгельм Лейбниц:
такой алгоритм будет найден!

Слайд 10

  Готфрид Вильгельм Лейбниц
1646 —1716
немецкий философ, математик, физик 

создал математический анализ - дифференциальное и интегральное исчисления;
создал комбинаторику как науку;
заложил основы математической

Готфрид Вильгельм Лейбниц 1646 —1716 немецкий философ, математик, физик создал математический анализ
логики;
описал двоичную систему счисления с цифрами 0 и 1,
в механике ввёл понятие «живой силы» (прообраз современного понятия кинетической энергии) и сформулировал закон сохранения энергии.

Слайд 11

Найти алгоритм, определяющий для любого диафантова уравнения, имеет ли оно целочисленное решение.

Найти алгоритм, определяющий для любого диафантова уравнения, имеет ли оно целочисленное решение.

Диафантово уравнение есть уравнение вида F(x,y,…,z)=0, где F(x,y,…,z) — многочлен с целыми показателями степеней и с целыми коэффициентами.
В общем случае эта проблема долго оставалась нерешенной (в 1970 г. советский математик Ю. В. Матиясевич доказал ее неразрешимость).

Неразрешимые проблемы - пример

Слайд 12

Каждый шаг алгоритма таков, что его может выполнить достаточно простое устройство (машина).

Каждый шаг алгоритма таков, что его может выполнить достаточно простое устройство (машина).

Желательно, чтобы это устройство было универсальным, т.е. чтобы на нем можно было выполнять любой алгоритм.
Механизм работы машины должен быть максимально простым по логической структуре, но настолько точным, чтобы эта структура могла служить предметом математического исследования.

Принципы построения выполняющих алгоритм машин

Слайд 13

Эмиль Леон Пост (Emil Leon Post)
1897 - 1954
 американский математик и логик

один из основателей многозначной логики (1921);
предложил абстрактную вычислительную

Эмиль Леон Пост (Emil Leon Post) 1897 - 1954 американский математик и
машину - машину Поста.

Слайд 14

Машина Поста — абстрактная вычислительная машина, состоящая из каретки (считывающей и записывающей

Машина Поста — абстрактная вычислительная машина, состоящая из каретки (считывающей и записывающей
головки) и ленты, разбитой на ячейки.
Каждая ячейка ленты может быть либо пустой («0»), или содержать метку («1»).
Программа состоит из пронумерованных строк. В каждой строке записывается одна из команд.
Каждая команда имеет следующий синтаксис:
i. K j
где i — номер команды, K — действие каретки, j — номер следующей команды (отсылка).

Слайд 15

1. → j – переместить каретку вправо на 1 ячейку и перейти

1. → j – переместить каретку вправо на 1 ячейку и перейти
к строке с номером j
2. ← j – переместить каретку влево на 1 ячейку и перейти к строке с номером j
3. 1 j – записать в текущую ячейку «1» (поставить метку) и перейти к строке с номером j
4. 0 j – записать в текущую ячейку «0» (стереть метку) и перейти к строке с номером j
5. ? i; j – если текущая ячейка содержит «0» (не отмечена), то перейти к строке i, иначе перейти к строке j
6.! – конец программы (стоп). В команде «стоп» переход на следующую строку не указывается

Слайд 16

Алан Тьюринг (Alan Mathison Turing)
1912 - 1954
Английский математик, логик.

Ввёл

Алан Тьюринг (Alan Mathison Turing) 1912 - 1954 Английский математик, логик. Ввёл
математическое понятие абстрактного эквивалента алгоритма, или вычислимой функции, получившее затем название «машины Тьюринга».
Создал теорию «логических вычисляющих машин».
Проводил исследования в области искусственного интеллекта.
Работал над расшифровкой кодов немецкой машины Энигма
Видео про Энигму https://www.youtube.com/watch?v=G2_Q9FoD-oQ

Слайд 17

Задача описания алгоритма может быть сведена к построению машины некоторого типа, которая

Задача описания алгоритма может быть сведена к построению машины некоторого типа, которая
способна воспринимать набор правил, выраженных на некотором языке, и делать то, что предписано этими правилами.

А.М.Тьюринг,

1937 год

Машина Тьюринга – абстрактная (воображаемая) "вычислительная машина" некоторого точно охарактеризованного типа, дающая пригодное для целей математического рассмотрения уточнение общего интуитивного представления об алгоритме.

Слайд 18

С помощью машины Тьюринга можно доказать существование или не существование алгоритмов решения

С помощью машины Тьюринга можно доказать существование или не существование алгоритмов решения
различных задач.

заданная система правил работы машины и класс решаемых задач должны быть согласованы так, чтобы всегда можно было “прочитать” результат работы машины.

машина должна быть полностью детерминированной (вычисления должны быть точные и общепонятные) и действовать в соответствии с заданной системой правил.

должна допускать ввод различных “начальных данных” (соответствующих различным задачам из данного класса задач).

Требования к машине Тьюринга

Слайд 19

Под одноленточной машиной Тьюринга понимают кибернетическое устройство, состоящее из следующих элементов:
бесконечной ленты,

Под одноленточной машиной Тьюринга понимают кибернетическое устройство, состоящее из следующих элементов: бесконечной
разделенной на ячейки,
управляющей головки, способной читать символы, содержащиеся в ячейках ленты, и записывать символы в эти ячейки,
выделенной ячейки памяти, содержащей символ внутреннего алфавита, задающий состояние машины Тьюринга,
механического устройства управления, обеспечивающего перемещение головки относительно ленты,
функциональной схемы — области памяти, содержащей команды (программу) машины Тьюринга (эта область доступна только для чтения).

Слайд 20

Поскольку бесконечную ленту физически смоделировать затруднительно, обычно предполагается, что она конечная, и

Поскольку бесконечную ленту физически смоделировать затруднительно, обычно предполагается, что она конечная, и
разбита на конечное число ячеек.
В процессе работы к существующим ячейкам машина может пристраивать новые ячейки, так что лента может считаться потенциально неограниченной в обе стороны.
Каждая ячейка ленты может находиться в одном из конечного множества состояний. Эти состояния мы будем обозначать символами a0, a1, …, am или другими символами. По сути это и есть символы, записанные в ячейках ленты. Совокупность таких символов называется внешним алфавитом машины, а сама лента часто называется внешней памятью машины.
Если ячейка пустая, будем считать, что в ней записан условный символ λ.
В процессе работы машины ячейки ленты могут изменять свое содержимое, но могут и не делать этого.
Все вновь пристраиваемые ячейки пристраиваются пустыми (содержат условный символ λ). Без ограничения общности ленту можно считать бесконечной лишь с одной стороны. В этом случае для удобства введем специальный символ ∂, обозначающий начало ленты. Этот символ имеет строго определенное место, его нельзя ни стирать, ни сдвигать. Тогда ленту можно считать однонаправленной (бесконечной вправо) и ее ячейки удобно просматривать слева направо.

Слайд 21

Управляющая головка – это некоторое устройство, которое может перемещаться вдоль ленты так,

Управляющая головка – это некоторое устройство, которое может перемещаться вдоль ленты так,
что в каждый рассматриваемый момент времени оно находится напротив определенной ячейки ленты.

Иногда, наоборот, считают управляющую головку неподвижной, а движущейся частью становится лента. В таком случае предполагается, что в управляющую головку вводится то одна, то другая ячейка ленты. Если какая-нибудь ячейка находится в управляющей головке, то говорят также, что машина в данный момент «воспринимает» или «обозревает» эту ячейку.

Слайд 22

Предполагается, что число возможных состояний внутренней памяти конечное и для каждой машины

Предполагается, что число возможных состояний внутренней памяти конечное и для каждой машины
фиксированное.
Состояние внутренней памяти мы будем обозначать символами S0, S1, …, Sn . Совокупность символов, обозначающих состояния внутренней памяти, называется внутренним алфавитом машины или внутренними состояниями машины.
Одно из этих состояний называется начальным, с него начинает работу любая машина, пусть это будет состояние S0. В процессе работы машина может какое-то количество шагов оставаться в состоянии S0 или возвращаться в него позднее.
Еще одно специальное состояние – заключительное. Символ, обозначающий заключительное состояние, будет называться стоп - символом. Роль стоп - символа далее будет играть символ Ω.

Внутренняя память машины – это выделенная ячейка памяти, которая в каждый рассматриваемый момент находится в некотором «состоянии».

Слайд 23

Если в какой-то момент времени внутренняя память машины приходит в заключительное состояние

Если в какой-то момент времени внутренняя память машины приходит в заключительное состояние
Ω, то дальнейших изменений в машине не происходит и машина называется остановившейся.
Может случиться, что в машине никогда не будет происходить никаких изменений и при каком-то другом внутреннем состоянии Si. Однако в этом случае мы будем говорить, что машина продолжает работать «вечно».
В большинстве случаев е останавливающиеся машины не имеют никакой ценности, так как невозможно запротоколировать факт окончания выполнения алгоритма и, соответственно, считать полученный ответ. Обычно говорят, что, если машина Т не останавливается на входном слове t, то она к этому слову неприменима.

Слайд 24

Предполагается, что машина снабжена особым механизмом, который в зависимости от символа в

Предполагается, что машина снабжена особым механизмом, который в зависимости от символа в
воспринимаемой ячейке и состояния внутренней памяти может выполнить следующие действия:
изменить состояние внутренней памяти,
одновременно изменить содержимое воспринимаемой ячейки,
сдвинуть (вправо, влево) управляющую головку в соседнюю ячейку.
В частном случае содержимое воспринимаемой ячейки и/или состояние внутренней памяти могут оставаться неизменными, а управляющая головка – неподвижной (Н).
Если управляющая головка находится в самой правой ячейке и по ходу работы машина должна сдвинуть управляющую головку в соседнюю справа (отсутствующую) ячейку, то предполагается, что, сдвигая головку, машина одновременно пристроит недостающую ячейку с пустым символом.
Аналогично работает машина и в случае, когда головка воспринимает самую левую ячейку и по ходу дела машине надо сдвинуть головку еще левее. Впрочем, далее предполагается, что лента бесконечна вправо, а ее самая левая ячейка занята специальным символом начала ленты, обозначаемым ∂.

Слайд 25

Конфигурация машины Тьюринга – совокупность, образованная содержимым текущей обозреваемой ячейки aj и

Конфигурация машины Тьюринга – совокупность, образованная содержимым текущей обозреваемой ячейки aj и
состоянием внутренней памяти Si.

Работа машины состоит в том, что она из данного «состояния» по истечении одного такта работы механического устройства переходит в следующее «состояние», затем из этого состояния по истечении такта работы переходит в новое состояние и так далее.
Т.о. если машина, имея внутреннее состояние Si и воспринимая ячейку ленты с символом aj, изменяет свое внутреннее состояние на Sq и одновременно содержимое воспринимаемой ячейки заменяет символом aγ , а управляющая головка сдвинется на одну ячейку вправо (R), то говорят, что машина выполняет команду соответственно Si aj→aγ R Sq.
Если управляющая головка сдвинется влево (L) или останется неподвижной (Н), то команды записываются соответственно:
Si aj→ aγ L Sq
Si aj→ aγ H Sq

Конфигурация м. Тьюринга

Слайд 26

Программа машины Тьюринга – совокупность команд установленного формата

Так как работа машины по

Программа машины Тьюринга – совокупность команд установленного формата Так как работа машины
условию целиком определяется состоянием в данный момент ее внутренней памяти Si и содержимым воспринимаемой ячейки aj, то для каждых Si aj (i=1, …, n; j=1, …, m), программа машины должна содержать одну и только одну команду, начинающуюся словом Si aj.
Программа машины с символами{a0, a1, …, an } и состояниями {S0, S1, …, Sm } содержит максимум n∙m команд.
При этом некоторые команды являются «мертвыми», в том случае, если ни при каких входных словах в данном алфавите невозможно наступление этой конфигурации. В грамотной, с точки зрения реализации, программе таких строк быть не должно, хотя формально их наличие ошибкой не является.

Слайд 27

видео

LEGO Turing Machine - YouTube

Машина Тьюринга была построена в металле в 1973

видео LEGO Turing Machine - YouTube Машина Тьюринга была построена в металле
в Малой Крымской Академии Наук.

видео

Сайт, посвященный машинам Тьюринга: http://aturingmachine.com/index.php

Современные физические воплощения машин Тьюринга

Слайд 28

Тезис Тьюринга – любой алгоритм можно преобразовать в машину Тьюринга.

Эту гипотезу

Тезис Тьюринга – любой алгоритм можно преобразовать в машину Тьюринга. Эту гипотезу
невозможно доказать, потому что она оперирует неформальным понятием алгоритма.
Однако обоснование гипотезы есть: все алгоритмы, придуманные в течение столетий, могут быть реализованы на машине Тьюринга.
Кроме того, эквивалентность всех формальных определений алгоритма неслучайна и говорит в пользу гипотезы.
Чтобы опровергнуть основную гипотезу необходимо придумать такой алгоритм, который невозможно было бы реализовать на машине Тьюринга, но пока такого алгоритма нет.

Слайд 29

Мальцев А.И. Алгоритмы и рекурсивные функции. М.: Наука, 1965, 1986.
М.Минский. Вычисления

Мальцев А.И. Алгоритмы и рекурсивные функции. М.: Наука, 1965, 1986. М.Минский. Вычисления
и автоматы. М.: Мир, 1971
Ахо А. Построение и анализ вычислительных алгоритмов. Пер. с англ. М.: Мир, 1979.
Ахо А. Хопкрофт Д. Структуры данных и алгоритмы. Пер. с англ. М.: Издательский дом «Вильямс», 2000.
Яблонский С.В. Введение в дискретную математику. М.: Наука, 1979; 1996.
ПападимитриуХ., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. Пер. с англ. М.: Мир, 1985.
Лавров И.А. ,Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов. М.: Наука, 1975, 1984.
Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.
Гашков С.Б., Чубариков В.Н. Аримфетика. Алгоритмы. Сложность вычислений. М.: Высшая школа, 2000.
Гуц А.К. Кардинальные и трансфинитные числа: Учебное пособие. Омск: Омск.университет, 1995.
Хаусдорф Ф. Теория множеств. Пер. с нем. М.: КомКнига, 2006.
Бурова И.Н. Парадоксы теории множеств и диалектика. М.: Наука, 1976.
Виленкин Н.Я. Рассказы о множествах. М.: Наука, 1969.
Коэн П.Дж. Теория множеств и континуум-гипотеза. Пер. с англ. М.: Мир, 1969.
Успенский В.А., А.Л. Семенов. Теория алгоритмов: основные открытия и приложения. М.: Наука, 1987.
Бурбаки Н. Теория множеств. Пер. с франц. М.: Мир, 1965.
Горбатов В.А. Фундаментальные основы дискретной математики. М.: Наука, 2000.
Горбатов В.А., Горбатов А.В., Горбатова М.В. Дискретная математика: учебник для студентов ВТУЗов. М.: АСТ: Астрель, 2006.
Кантор Г. Труды по теории множеств. М.: Наука, 1985.
Эщби У.Р. Введение в кибернетику. Пер. с англ. М.: КомКнига, 2005.
Фалевич Б.Я. Теория алгоритмов: Учебное пособие. М.: Машиностроение, 2004.
Пенроуз Р. Новый ум короля: о компьютерах, мышлении и законах физики. Пер. с англ. М.: Едиториал УРСС, 2005.
Пойя Д. Математика и правдоподобные рассуждения. Пер. с англ. М.: Издательство иностранной литературы, 1957.
Френкель А.А., Бар-Хиллел И.Основания теории множеств. Пер. с англ. М.: КомКнига, 2006.
Гельфонд А.О., Трансцендентные и алгебраические числа. М.: КомКнига, 2006.
Марков А.А., Нагорный Н.М. Теория алгорифмов. М.: ФАЗИС, 1996.