Слайд 1Введение в компьютерные науки
Лектор к.т.н. Мохов В. А.
Глава 12. Теория
вычислений
Слайд 2Глава12: Теория вычислений
12.1 Функции и их вычисление
12.2 Машины Тьюринга
12.3 Универсальные
языки программирования
12.4 Невычислимые функции
12.5 Сложность задач
12.6 Криптография с использованием
открытых ключей
Слайд 3Функции
Функция: Соответствие между количеством входных и выходных значений набора двоичных
разрядов , так чтоб на каждое возможное входное значение было
назначено выходное .
Слайд 4Функции (продолжение)
Вычисление ФУНКЦИИ: Процесс определения выходной величины функции на основе
значения ее входной величины
Невычислимая ФУНКЦИЯ: Функция, которая не может быть
вычислена по любому алгоритму
Слайд 5Рисунок 12.1 Попытка отобразить функцию, которая преобразует измерения в ярдах
в метры
Слайд 6Рисунок 12.2 Компоненты Машины Тьюринга
Слайд 7Операции Машины Тьюринга
Ввод данных на каждом шаге
Состояние
Значение по текущей позиции
ленты
Действия на каждом шаге
Запись значения в текущую позицию ленты
Чтение шагов
/запись заголовков
Смена состояния
Слайд 8Рисунок 12.3 Состояние Машины Тьюринга предназначенной для
увеличения числа
Слайд 90-
Тезис Черча-Тьюринга
Любая функция, которая может быть вычислена физическим устройством, может
быть вычислена машиной Тьюринга
Слайд 10Универсальный язык программирования
Язык, которым может быть выражено решение любой вычислимой
функции
Примеры: “Bare Bones” и самые популярные языки программирования
Слайд 110-
Язык Bare Bones
Bare Bones это простой , но универсальный язык.
Операторы
clear
name;
incr name;
decr name;
while name not 0 do; … end;
Слайд 12Рисунок 12.4 Программа для вычисления X и Y на Bare
Bones
Слайд 13Рисунок 12.5 Выполнение инструкции «copy Today to Tomorrow» на Bare
Bones
Слайд 14Проблема остановки
Учитывая кодированную версию любой программы, возвращает 1, если программа
заканчиваются автоматически, или 0, если программа не является таковой.
Слайд 15Рисунок 12.6 Тестирование программы само завершения
Слайд 16Рисунок 12.7 Доказательство неразрешимости проблемы остановки программным путем
Слайд 170-
Сложность задач
Время сложности: Количество требуемых для исполнения команд
Если не указано
иное «сложность» означает «время сложности»
Если алгоритм класса 0(lgn) более эффективен,
чем алгоритм класса 0(n), то алгоритм класса 0(n) является более сложным, чем алгоритм класса 0(lgn).
То, что задача принадлежит к классу O(f(n)), равносильно утверждению о существовании ее решения (не обязательно лучшего), сложность которого равна 0(f(n)).
Слайд 18Рисунок 12.8 Процедура MergeLists для слияний двух списков
Слайд 19Рисунок 12.9 Алгоритмы сортировки слиянием реализованный в виде процедуры MergeSort
Слайд 20Рисунок 12.10 Иерархическое представление множества задач порожденных алгоритмом сортировки методом
слияния
Слайд 21Рисунок 12.11 График основных типов математических функций
Слайд 22P против NP
Класс P: Задача в классе Q(f(n)), где f(n)
является полиномом
Класс NP: Все задачи могут быть решены в недетерминированным
алгоритмом в полиноминальное время
Недетерминированный алгоритм = “алгоритм”, шаги которого не могут быть однозначно и полностью определены состоянием процесса
Больше ли класс NP чем класс P в настоящее время неизвестно
Слайд 23Рисунок 12.12 Графическое обобщение классификации задач
Слайд 24Криптография с использованием открытых ключей
Ключ: Значение используемое для шифровке и
дешифровке сообщения
Открытый ключ: Используется для шифровки сообщений
Секретный ключ: Используется для
дешифровки сообщения
RSA: Популярный криптографический алгоритм с открытым ключом
Опирается на (предполагаемую) неподатливость проблемы разложения больших чисел на множители
Слайд 25Шифрование сообщения 10111
Шифрование ключей: n = 91 и e =
5
101112 = 2310
23e = 235 = 6,436,343
6,436,343 ÷ 91 имеет
остаток от 4
410 = 1002
Таким образом, зашифрованная версия 10111 равняется100.
Слайд 260-
Дешифровка сообщения 100
Расшифровка ключей: d = 29, n = 91
1002
= 410
4d = 429 = 288,230,376,151,711,744
288,230,376,151,711,744 ÷ 91 имеет остаток
23
2310 = 101112
Таким образом расшифрованная версия 100 является 10111.
Слайд 27Рисунок 12.13 Шифрование с использованием открытого ключа
Слайд 28Рисунок 12.14 Установка системы шифрования открытого ключа RSA