MW_0.ppt
- Количество слайдов: 30
Алгоритмы и структуры данных Математика алгоритмов Представление данных и конструирование алгоритмов Методы алгоритмизации предметных областей Федор Александрович Новиков fedornovikov@rambler. ru Ф. А. Новиков 0. Введение в предмет 1 из 28
0. Введение в предмет 1. Принципы обсуждения предмета 2. Контекст предмета 3. Структура предмета Ф. А. Новиков 0. Введение в предмет 2 из 28
0. 1. Принципы обсуждения предмета 1. 2. 3. 4. 5. Цели и задачи курса Методика изложения Используемые обозначения Запись алгоритмов Средства моделирования Ф. А. Новиков 0. Введение в предмет 3 из 28
0. 1. 1. Цели и задачи курса (1) • 1) 2) 3) 4) В результате изучения дисциплины слушатели должны знать: методы представления объектов и операций дискретной математики; методы анализа и конструирования алгоритмов; методы моделирования предметных областей и решения типовых задач; методы алгоритмизации предметных областей. Ф. А. Новиков 0. Введение в предмет 4 из 28
0. 1. 1. Цели и задачи курса (2) • В результате изучения дисциплины слушатели должны уметь: 1) выбирать в соответствии с математической моделью задачи алгоритм и структуру данных и реализовывать их; 2) проводить инженерный анализ алгоритмов и представления данных; 3) конструировать модели предметных областей и прикладных программ Ф. А. Новиков 0. Введение в предмет 5 из 28
0. 1. 1. Цели и задачи курса (3) • В результате изучения дисциплины слушатели должны понимать: 1) степень ограниченности своих знаний и область применимости своих умений; 2) место и значение моделей, алгоритмов и структур данных в разработке прикладного программного обеспечения; 3) важность непрерывного самообразования и самосовершенствования. Ф. А. Новиков 0. Введение в предмет 6 из 28
0. 1. 2. Методика изложения (1) • 1) 2) 3) Три уровня понимания: приятное чувство, способность повторить, исправление ошибок. Явное выделение в слайдах: что необходимо понять (подчеркнуто) что нужно запомнить (выделено красным) над чем стоит подумать (выделено «цветом морской волны» ) Ф. А. Новиков 0. Введение в предмет 7 из 28
0. 1. 2. Методика изложения (2) • Остаточные знания и умения: 1) вопросы по ходу (по каждой теме) – устно, без проверки; 2) упражнения в классе (каждый день) – у доски и на компьютере; 3) домашние задания (иногда) – письменно, проверка с замечаниями; 4) тестирование остаточных знаний – (в конце), письменно, проверка с оценкой. Ф. А. Новиков 0. Введение в предмет 8 из 28
0. 1. 3. Используемые обозначения (1) • 1) 2) 3) Следующие обозначения считаются известными: алгебра и математический анализ (элементарные) язык исчисления предикатов первого порядка стандартные обозначения теории множеств Ф. А. Новиков 0. Введение в предмет 9 из 28
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) • Язык записи алгоритмов – для конструирования, анализа и понимания • Свободный синтаксис – если невозможно прочесть, то трудно понять • Читабельность – привычная (а не лучшая) парадигма • Программы в формулах = { 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 … end if • for … do циклы по множеству и со счетчиком … end for • while … do циклы по условию … end while • и другие, если нужно … Ф. А. Новиков 0. Введение в предмет 12 из 28
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) • Выбор произвольного элемента в множестве (или иной структуре) – 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. Введение в предмет 16 из 9
0. 2. Контекст предмета 1. Феномен программирования 2. Три ипостаси программирования 3. Представление данных Ф. А. Новиков 0. Введение в предмет 17 из 28
0. 2. 1. Феномен программирования (1) • К сожалению, до сих пор: 1) программы ненадёжны, – – «Апполон» – 11 млн строк без ошибок 5 – 25 ошибок на 1 тыс строк - норма 2) программисты неуправляемы, – – Том де Марко «Сделать в срок» «клоуны» 3) программирование рискованно. – 50% проектов превышение сроков и/или перерасход бюджета и/или низкое качество Ф. А. Новиков 0. Введение в предмет 18 из 28
0. 2. 1. Феномен программирования (2) • Технология программирования (software engineering): 1) процесс разработки (на уровне организации) *x% 2) организация команды (на уровне проекта) *3 x% 3) дисциплина программирования (на уровне работника) *10 x% Ф. А. Новиков 0. Введение в предмет 19 из 28
0. 2. 1. Феномен программирования (3) • Дисциплина программирования: 1. «в малом» – уровень системы программирования, 2. «в среднем» – уровень алгоритмов и структур данных, 3. «в большом» – уровень образцов проектирования. Ф. А. Новиков 0. Введение в предмет 20 из 28
0. 2. 1. Аналогия с шахматами Шахматы Программирование Дебютный репертуар Представления типовых объектов математических моделей Стратегическая оценка позиции Приёмы конструирования алгоритмов Тактическая изобретательность Классические алгоритмы Расчёт вариантов Дискретная математика + математическая логика + теория алгоритмов Ф. А. Новиков 0. Введение в предмет 21 из 28
0. 2. 2. Три ипостаси программирования • Наука программирования – неразвита, влияние на практику пока мало • Искусство программирования – наилучшее собрание шедевров – Кнут • Ремесло программирования – – – – Кнут штучный (не серийный) характер продукции отсутствие сертифицированной технологии производства отсутствие специализации, кооперации и разделения труда высокая доля живого и низкая доля овеществленного труда отсутствие стандартной системы измерений (метрологии) использование индивидуальных инструментов и приемов претензия на личную интеллектуальную собственность Ф. А. Новиков 0. Введение в предмет 22 из 28
0. 2. 3. Представление данных • Программы = алгоритмы + структуры данных • Программирование = выбор структур + конструирование алгоритмов • Выбор специфицируется интерфейсом • У интерфейса две стороны: Вирт – что предоставляет интерфейс (атрибуты и операции), – как его используют (изменяемость атрибутов, протокол вызовов операций, частота вызова операций) • Представление данных определяется конкретными значениями параметров обеих сторон интерфейса Ф. А. Новиков 0. Введение в предмет 23 из 28
0. 2. 3. Уровни абстракции • Три (или больше) уровня абстракции: • … • предметная область • математические объекты (множества, отношения, функции, графы, …) • абстрактные типы данных (векторы, коллекции, стеки, кучи, …) • базовые структуры данных (числа, массивы, записи, указатели, …) • аппаратный уровень (биты, байты, регистры, адреса, …) • … Ф. А. Новиков 0. Введение в предмет 24 из 28
0. 2. 3. Отношения между уровнями не (всегда) функциональны! Ф. А. Новиков 0. Введение в предмет 25 из 28
0. 3. Структура предмета 1. Анализ и синтез алгоритмов 2. Общие свойства алгоритмов 3. Три измерения предмета Ф. А. Новиков 0. Введение в предмет 26 из 28
0. 3. 1. Анализ и синтез алгоритмов • Программы бывают: плохие, хорошие, работающие. • Дейкстра считал , что эти классы не пересекаются Дейкстра • Анализируя хорошие программы, можно научиться конструировать работающие • Анализ алгоритма = выявление свойств – какие свойства, чем мерить, как записывать • Конструирование алгоритма = применение метода – какие методы, чем проверять, как записывать Ф. А. Новиков 0. Введение в предмет 27 из 28
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. Необозримость темы • Математические языки и модели – Множества и отношения – Графы, сети, деревья – Логические исчисления. . . … 10 • Методы конструирования алгоритмов – Разделяй и властвуй – Жадные алгоритмы – Динамическое программирование. . . … 10 • Конструкции языков программирования – Массивы – Записи – Указатели. . . … 10 • Всего 103 возможных комбинаций – В энциклопедии 102 комбинаций – В обычном курсе 10 – 1% достаточно для понимания Ф. А. Новиков 0. Введение в предмет 29 из 28
0. 3. 3. Три измерения предмета Ф. А. Новиков 0. Введение в предмет 30 из 28


