АиСД осень 2012 лекция 2

8
Алгоритмы и структуры данных Зайцев Валентин Евгеньевич

Upload: technopark

Post on 12-Apr-2017

219 views

Category:

Documents


0 download

TRANSCRIPT

Алгоритмы и структуры

данных Зайцев Валентин

Евгеньевич

АиСД: фундаментальное алгоритмическое введение 10

Необходимость формального определения алгоритма. Расплывчатость неформального определения. Примеры: дифференцирование многочлена, завязывание шнурков. Наличие алгоритмически неразрешимых математических задач. Необходимость формального определения для алгоритмических исследований. Алгоритмические модели.

Рекурсивные функции. Алгоритмы -- вычисления и числовые функции. Лямбда-исчисление Чёрча. Интерпретируемый алгоритмический язык LISP. Примеры систем, реализованных на языке LISP: Emacs, AutoCAD. Функциональное программирование сегодня: F# и др.

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

АиСД: фундаментальное алгоритмическое введение 11

Алгоритмическая модель Маркова. Алгоритмы как преобразования слов в произвольных алфавитах. Алгоритмический язык Рефал. Пример: инкремент числа (НАМ, Рефал).

Тезис Тьюринга-Чёрча. Выразимость интуитивных алгоритмов средствами алгоритмических моделей. Правдоподобное доказательство тезиса. Эквивалентность алгоритмических моделей.

Машины Тьюринга. Неформальное и математически строгое определение. Ситуации и конфигурации. Примеры: песочные часы, копирование слова. Демонстрация.

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

АиСД: фундаментальное алгоритмическое введение 12

Моделирование машин Тьюринга. Определение. Моделирование как бинарное отношение алгоритмической эквивалентности. Противопоставление эквивалентности обычных программ.

Эквивалентность машин и диаграмм Тьюринга. Конструктивное доказательство. Противопоставление языкам программирования. Значение диаграмм для разработки алгоритмов.

Нормальные алгоритмы Маркова. Задание с помощью набора правил-продукций. Применение НАМ к входному сообщению. Примеры: кодирование по Цезарю, натуральная арифметика. Демонстрация.

Анализ алгоритмической модели Тьюринга. Теоремы Шеннона о взаимосвязи числа состояний машины Тьюринга и мощности рабочего алфавита. Их значение для практики.

АиСД: фундаментальное алгоритмическое введение 13

Вычислимые функции. Числовые функции. Функции на множестве слов. Функции, задаваемые машинами Тьюринга. Нормированная вычислимость. Теорема о нормированной вычислимости. Следствие о полубесконечности ленты.

Композиции алгоритмов. Теоремы о сочетаниях алгоритмов: композиция, ветвление, цикл. Диаграммное доказательство. Схемы машин Тьюринга. Нисходящее конструирование. Эквивалентность схем и диаграмм. Теорема Бойма-Джакопини-Миллса. Следствие о факультативности go to.

Универсальная машина Тьюринга. УМТ как абсолютно универсальная вычислительная машина, автоматически выполняющая алгоритмы по их линейным текстовым описаниям. Линейная запись схем машин Тьюринга. Примеры языковой нотации. Критика алгоритмической модели Тьюринга.

АиСД: фундаментальное алгоритмическое введение 14

Домашнее задание №2 «Алгоритмические модели».

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

Реализовать диаграмму Тьюринга в среде диаграммера CASE-системы.

Составить программу на языке C, выполняющую нормальный алгоритм Маркова, заданный набором правил-продукций во входном текстовом файле.

АиСД: фундаментальное алгоритмическое введение 15

Лабораторная работа №1 «Алгоритмические модели».

Машины Тьюринга в четвёрках, диаграммы Тьюринга, нормальные алгоритмы Маркова.

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

Используются интерпретаторы и диаграммеры.

Индивидуальные варианты заданий разной сложности.

Конец лекции [email protected]