Скачать презентацию Алгоритмы и структуры данных Математика алгоритмов Представление данных Скачать презентацию Алгоритмы и структуры данных Математика алгоритмов Представление данных

MW_0.ppt

  • Количество слайдов: 30

Алгоритмы и структуры данных Математика алгоритмов Представление данных и конструирование алгоритмов Методы алгоритмизации предметных Алгоритмы и структуры данных Математика алгоритмов Представление данных и конструирование алгоритмов Методы алгоритмизации предметных областей Федор Александрович Новиков fedornovikov@rambler. ru Ф. А. Новиков 0. Введение в предмет 1 из 28

0. Введение в предмет 1. Принципы обсуждения предмета 2. Контекст предмета 3. Структура предмета 0. Введение в предмет 1. Принципы обсуждения предмета 2. Контекст предмета 3. Структура предмета Ф. А. Новиков 0. Введение в предмет 2 из 28

0. 1. Принципы обсуждения предмета 1. 2. 3. 4. 5. Цели и задачи курса 0. 1. Принципы обсуждения предмета 1. 2. 3. 4. 5. Цели и задачи курса Методика изложения Используемые обозначения Запись алгоритмов Средства моделирования Ф. А. Новиков 0. Введение в предмет 3 из 28

0. 1. 1. Цели и задачи курса (1) • 1) 2) 3) 4) В 0. 1. 1. Цели и задачи курса (1) • 1) 2) 3) 4) В результате изучения дисциплины слушатели должны знать: методы представления объектов и операций дискретной математики; методы анализа и конструирования алгоритмов; методы моделирования предметных областей и решения типовых задач; методы алгоритмизации предметных областей. Ф. А. Новиков 0. Введение в предмет 4 из 28

0. 1. 1. Цели и задачи курса (2) • В результате изучения дисциплины слушатели 0. 1. 1. Цели и задачи курса (2) • В результате изучения дисциплины слушатели должны уметь: 1) выбирать в соответствии с математической моделью задачи алгоритм и структуру данных и реализовывать их; 2) проводить инженерный анализ алгоритмов и представления данных; 3) конструировать модели предметных областей и прикладных программ Ф. А. Новиков 0. Введение в предмет 5 из 28

0. 1. 1. Цели и задачи курса (3) • В результате изучения дисциплины слушатели 0. 1. 1. Цели и задачи курса (3) • В результате изучения дисциплины слушатели должны понимать: 1) степень ограниченности своих знаний и область применимости своих умений; 2) место и значение моделей, алгоритмов и структур данных в разработке прикладного программного обеспечения; 3) важность непрерывного самообразования и самосовершенствования. Ф. А. Новиков 0. Введение в предмет 6 из 28

0. 1. 2. Методика изложения (1) • 1) 2) 3) Три уровня понимания: приятное 0. 1. 2. Методика изложения (1) • 1) 2) 3) Три уровня понимания: приятное чувство, способность повторить, исправление ошибок. Явное выделение в слайдах: что необходимо понять (подчеркнуто) что нужно запомнить (выделено красным) над чем стоит подумать (выделено «цветом морской волны» ) Ф. А. Новиков 0. Введение в предмет 7 из 28

0. 1. 2. Методика изложения (2) • Остаточные знания и умения: 1) вопросы по 0. 1. 2. Методика изложения (2) • Остаточные знания и умения: 1) вопросы по ходу (по каждой теме) – устно, без проверки; 2) упражнения в классе (каждый день) – у доски и на компьютере; 3) домашние задания (иногда) – письменно, проверка с замечаниями; 4) тестирование остаточных знаний – (в конце), письменно, проверка с оценкой. Ф. А. Новиков 0. Введение в предмет 8 из 28

0. 1. 3. Используемые обозначения (1) • 1) 2) 3) Следующие обозначения считаются известными: 0. 1. 3. Используемые обозначения (1) • 1) 2) 3) Следующие обозначения считаются известными: алгебра и математический анализ (элементарные) язык исчисления предикатов первого порядка стандартные обозначения теории множеств Ф. А. Новиков 0. Введение в предмет 9 из 28

0. 3. Используемые обозначения (2) • Для быстрой записи формул можно применять ТЕХ: 1) 0. 3. Используемые обозначения (2) • Для быстрой записи формул можно применять ТЕХ: 1) sum_{i=0}^{k} 2^i = 2^{k+1} – 1 2) A{x}{P(x)Impl E{y}{Q(x, y)}} 3) |Acup Bcup C| = |A|+|B|+|C| –|Acap B|–|Bcap C|–|Ccap A| +|Acap Bcap C| Ф. А. Новиков 0. Введение в предмет 10 из 28

0. 1. 4. Псевдокод (1) • Язык записи алгоритмов – для конструирования, анализа и 0. 1. 4. Псевдокод (1) • Язык записи алгоритмов – для конструирования, анализа и понимания • Свободный синтаксис – если невозможно прочесть, то трудно понять • Читабельность – привычная (а не лучшая) парадигма • Программы в формулах = { n | n: =0; while true do n : = n+1; yield n end while } • Формулы в программах Y: = ; for x X do Y: =Y+x end for Ф. А. Новиков 0. Введение в предмет 11 из 28

0. 1. 4. Структуры управления (2) • if … then ветвления … else … 0. 1. 4. Структуры управления (2) • if … then ветвления … else … end if • for … do циклы по множеству и со счетчиком … end for • while … do циклы по условию … end while • и другие, если нужно … Ф. А. Новиков 0. Введение в предмет 12 из 28

0. 1. 4. Конструкторы типов (3) • Множества: x : set of A – 0. 1. 4. Конструкторы типов (3) • Множества: x : set of A – Принадлежность a x, – добавление элемента x+a, удаление элемента x–a – пересечение, объединение, … • Массивы: x : array [A] of B – выборка x[i], вырезка x[i. . j] • Структуры: x : ( a : A, b : B, … ) – выборка x. a • Указатели: x : ^N – разыменование x^ неявно подразумевается – константа nil • Типовые выражения N = ( i : int; n : ^N ) • Любую часть определения типа можно извлечь из переменной Ф. А. Новиков 0. Введение в предмет 13 из 28

0. 1. 4. Специальные операторы (4) • Выбор произвольного элемента в множестве (или иной 0. 1. 4. Специальные операторы (4) • Выбор произвольного элемента в множестве (или иной структуре) – select x X • Возврат значения и управления – возврат значения: yield x – возврат управления: exit – возврат значения и управления: return x • Структурные переходы – next for x, next while B – exit for x, exit while B Ф. А. Новиков 0. Введение в предмет 14 из 28

Ф. А. Новиков 0. Введение в предмет 15 из 9 Ф. А. Новиков 0. Введение в предмет 15 из 9

Ф. А. Новиков 0. Введение в предмет 16 из 9 Ф. А. Новиков 0. Введение в предмет 16 из 9

0. 2. Контекст предмета 1. Феномен программирования 2. Три ипостаси программирования 3. Представление данных 0. 2. Контекст предмета 1. Феномен программирования 2. Три ипостаси программирования 3. Представление данных Ф. А. Новиков 0. Введение в предмет 17 из 28

0. 2. 1. Феномен программирования (1) • К сожалению, до сих пор: 1) программы 0. 2. 1. Феномен программирования (1) • К сожалению, до сих пор: 1) программы ненадёжны, – – «Апполон» – 11 млн строк без ошибок 5 – 25 ошибок на 1 тыс строк - норма 2) программисты неуправляемы, – – Том де Марко «Сделать в срок» «клоуны» 3) программирование рискованно. – 50% проектов превышение сроков и/или перерасход бюджета и/или низкое качество Ф. А. Новиков 0. Введение в предмет 18 из 28

0. 2. 1. Феномен программирования (2) • Технология программирования (software engineering): 1) процесс разработки 0. 2. 1. Феномен программирования (2) • Технология программирования (software engineering): 1) процесс разработки (на уровне организации) *x% 2) организация команды (на уровне проекта) *3 x% 3) дисциплина программирования (на уровне работника) *10 x% Ф. А. Новиков 0. Введение в предмет 19 из 28

0. 2. 1. Феномен программирования (3) • Дисциплина программирования: 1. «в малом» – уровень 0. 2. 1. Феномен программирования (3) • Дисциплина программирования: 1. «в малом» – уровень системы программирования, 2. «в среднем» – уровень алгоритмов и структур данных, 3. «в большом» – уровень образцов проектирования. Ф. А. Новиков 0. Введение в предмет 20 из 28

0. 2. 1. Аналогия с шахматами Шахматы Программирование Дебютный репертуар Представления типовых объектов математических 0. 2. 1. Аналогия с шахматами Шахматы Программирование Дебютный репертуар Представления типовых объектов математических моделей Стратегическая оценка позиции Приёмы конструирования алгоритмов Тактическая изобретательность Классические алгоритмы Расчёт вариантов Дискретная математика + математическая логика + теория алгоритмов Ф. А. Новиков 0. Введение в предмет 21 из 28

0. 2. 2. Три ипостаси программирования • Наука программирования – неразвита, влияние на практику 0. 2. 2. Три ипостаси программирования • Наука программирования – неразвита, влияние на практику пока мало • Искусство программирования – наилучшее собрание шедевров – Кнут • Ремесло программирования – – – – Кнут штучный (не серийный) характер продукции отсутствие сертифицированной технологии производства отсутствие специализации, кооперации и разделения труда высокая доля живого и низкая доля овеществленного труда отсутствие стандартной системы измерений (метрологии) использование индивидуальных инструментов и приемов претензия на личную интеллектуальную собственность Ф. А. Новиков 0. Введение в предмет 22 из 28

0. 2. 3. Представление данных • Программы = алгоритмы + структуры данных • Программирование 0. 2. 3. Представление данных • Программы = алгоритмы + структуры данных • Программирование = выбор структур + конструирование алгоритмов • Выбор специфицируется интерфейсом • У интерфейса две стороны: Вирт – что предоставляет интерфейс (атрибуты и операции), – как его используют (изменяемость атрибутов, протокол вызовов операций, частота вызова операций) • Представление данных определяется конкретными значениями параметров обеих сторон интерфейса Ф. А. Новиков 0. Введение в предмет 23 из 28

0. 2. 3. Уровни абстракции • Три (или больше) уровня абстракции: • … • 0. 2. 3. Уровни абстракции • Три (или больше) уровня абстракции: • … • предметная область • математические объекты (множества, отношения, функции, графы, …) • абстрактные типы данных (векторы, коллекции, стеки, кучи, …) • базовые структуры данных (числа, массивы, записи, указатели, …) • аппаратный уровень (биты, байты, регистры, адреса, …) • … Ф. А. Новиков 0. Введение в предмет 24 из 28

0. 2. 3. Отношения между уровнями не (всегда) функциональны! Ф. А. Новиков 0. Введение 0. 2. 3. Отношения между уровнями не (всегда) функциональны! Ф. А. Новиков 0. Введение в предмет 25 из 28

0. 3. Структура предмета 1. Анализ и синтез алгоритмов 2. Общие свойства алгоритмов 3. 0. 3. Структура предмета 1. Анализ и синтез алгоритмов 2. Общие свойства алгоритмов 3. Три измерения предмета Ф. А. Новиков 0. Введение в предмет 26 из 28

0. 3. 1. Анализ и синтез алгоритмов • Программы бывают: плохие, хорошие, работающие. • 0. 3. 1. Анализ и синтез алгоритмов • Программы бывают: плохие, хорошие, работающие. • Дейкстра считал , что эти классы не пересекаются Дейкстра • Анализируя хорошие программы, можно научиться конструировать работающие • Анализ алгоритма = выявление свойств – какие свойства, чем мерить, как записывать • Конструирование алгоритма = применение метода – какие методы, чем проверять, как записывать Ф. А. Новиков 0. Введение в предмет 27 из 28

0. 3. 2. Общие свойства алгоритмов • Тотальность (и завершаемость) – f : X 0. 3. 2. Общие свойства алгоритмов • Тотальность (и завершаемость) – f : X Y x X y Y y=f(x) – Пример. Функция sqr не тотальна. • Корректность (и состоятельность) – Предусловие P(x), постусловие Q(x, y) – Верификация = доказательство – Пример. Функция sin не корректна. Хоар • Эффективность – затраты времени и памяти как функция характерного размера задачи n • и другие: – элегантность, полезность, понятность, … Ф. А. Новиков 0. Введение в предмет 28 из 28

0. 3. 3. Необозримость темы • Математические языки и модели – Множества и отношения 0. 3. 3. Необозримость темы • Математические языки и модели – Множества и отношения – Графы, сети, деревья – Логические исчисления. . . … 10 • Методы конструирования алгоритмов – Разделяй и властвуй – Жадные алгоритмы – Динамическое программирование. . . … 10 • Конструкции языков программирования – Массивы – Записи – Указатели. . . … 10 • Всего 103 возможных комбинаций – В энциклопедии 102 комбинаций – В обычном курсе 10 – 1% достаточно для понимания Ф. А. Новиков 0. Введение в предмет 29 из 28

0. 3. 3. Три измерения предмета Ф. А. Новиков 0. Введение в предмет 30 0. 3. 3. Три измерения предмета Ф. А. Новиков 0. Введение в предмет 30 из 28