П р а

advertisement
Правительство Российской Федерации
федеральное государственное автономное образовательное учреждение
высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"
Факультет бизнес-информатики
Программа дисциплины
«Методы разработки и анализа алгоритмов»
для направления 080700.62 «Бизнес-информатика»
подготовки бакалавра
Автор программы:
Морозенко В.В., доцент, к.ф.-м.н., v.morozenko@mail.ru
Одобрена на заседании кафедры информационных технологий в бизнесе «___»______201 г.
Зав. кафедрой О.Л.Викентьева _______________________
Утверждена Учебно-методическим Советом НИУ ВШЭ - Пермь «___»_____________201 г.
Председатель ________________________ Г.Е. Володина
Пермь, 201_
Настоящая программа не может быть использована другими подразделениями
университета и другими вузами без разрешения кафедры-разработчика программы.
1.
Область применения и нормативные ссылки
Настоящая программа учебной дисциплины устанавливает минимальные требования
к знаниям и умениям студента и определяет содержание и виды учебных занятий и
отчетности.
Программа предназначена для преподавателей, ведущих данную дисциплину,
учебных ассистентов и студентов направления подготовки 231000.62 «Программная
инженерия» и 080700.62 «Бизнес-информатика», изучающих дисциплину «Методы
разработки и анализа программ».
Программа разработана в соответствии с:
 Образовательным стандартом НИУ ВШЭ по направлению подготовки
080700.62 «Бизнес-информатика» (протокол от 02.07.2010 г. № 15);
 Образовательной программой направления подготовки 080700.62 «Бизнесинформатика»;
 Рабочим учебным планом университета по направлению подготовки 080700.62
«Бизнес-информатика», утвержденным в 2012г.
2.
Цели освоения дисциплины
Целью дисциплины «Методы разработки и анализа алгоритмов» является изучение
основных приемов и методов, используемых при разработке и анализе алгоритмов для
решения сложных прикладных задач. Освоение дисциплины должно обеспечить
базовые знания, которые дадут возможность выпускнику успешно работ ать в сфере
организации процессов жизненного цикла ИС и ИКТ, аналитической поддержки
процессов принятия решений для управления предприятием, обладать универсальными
и предметно-специализированными компетенциями, способствующими его социальной
мобильности и устойчивости на рынке труда. Программа дисциплины нацелена на
формирование организованности, трудолюбия, ответственности, способности к
саморазвитию, повышению своей квалификации и мастерства.
Содержание программы дисциплины «Методы разработки и анализа алгоритмов»
должно обеспечить базовую подготовку студентов в процессе формирования устойчивых
теоретических знаний и практических навыков разработки и анализа математических
моделей и алгоритмов для дальнейшей учебной, научной и профессиональной деятельности.
Для достижения поставленной цели при изучении дисциплины решаются следующие
задачи:
– познакомить студентов с основными классами алгоритмов, их математическими
моделями;
– дать знания о существующих эффективных алгоритмах для решения наиболее
известных задач комбинаторной оптимизации, об их сложности и требованиям к
памяти;
– познакомить с классификацией оптимизационных задач и алгоритмов для их
решения, особенностями задач комбинаторной оптимизации большой размерности;
– дать представление о методах анализа сложности алгоритмов и доказательства их
корректности.
Курс призван повысить общую эрудицию студентов, дать им возможность
ориентироваться в данной предметной области, подготовить к применению теоретических
знаний при решении различных задач оптимизации, при изучении и разработке средств
поддержки принятия решений. Студенты должны получить знания о существующих
эффективных алгоритмах, используемых в теории расписаний, методах их разработки и
анализа в объеме, достаточном для успешного изучения курсов «Теория алгоритмов и
эволюционные вычисления», «Оптимизация и математические методы принятия решений»,
«Распределенные алгоритмы и параллельное программирование». Изучение данной
дисциплины углубляет знания, полученные студентами при изучении курсов
«Информатика и программирование» и «Дискретная математика».
3.
Компетенции обучающегося, формируемые в результате освоения
дисциплины
В результате освоения дисциплины студент должен:
Знать:
– о различных методах классификации существующих алгоритмов;
– наиболее известные алгоритмы для работы с различными структурами данных;
– точные и приближенные подходы к решению типовых задач, возникающих в
области бизнес-информатики;
– особенности точных, приближенных, эвристических, переборных, «жадных»
алгоритмов.
Уметь:
– анализировать существующие алгоритмы с точки зрения их эффективности и
применимости для решения прикладных задач;
– разрабатывать новые алгоритмы для решения конкретных задач в области
бизнес-информатики;
– оценивать сложность разработанных алгоритмов и обосновывать их
корректность.
Иметь навыки (приобрести опыт):
– применения известных и разработки собственных алгоритмов для решения
практических задач с учетом требований к точности, времени работы алгоритма
и вычислительным ресурсам;
– формализации и разработки математических моделей и алгоритмов для решения
конкретных практических проблем в сфере бизнес-информатики или их
сведения к известным модельным задачам.
В результате освоения дисциплины студент осваивает следующие компетенции:
Компетенция
Владение культурой
мышления,
способность к
обобщению, анализу,
восприятию
информации,
постановке цели и
выбору путей её
достижения
Способность
логически верно,
аргументировано и
ясно строить устную и
письменную речь
Код по
Дескрипторы – основные признаки освоения
стандарту
(показатели достижения результата)
ОНК-3
СЛК-1
Формы и методы
обучения,
способствующие
формированию и
развитию
компетенции
Даёт четкие определения основных понятий Аудиторные
информатики и программирования, видит их занятия проводятся
связь
в форме,
предполагающей
Четко формулирует задачи, анализирует
активное участие
условия и обоснованно выбирает методы
студентов в работе,
решения, уверенно интерпретирует
обсуждение
результаты
проблем и анализ
решений,
предлагаемых
Демонстрирует умение обосновывать
студентами и
предлагаемые решения (не только
преподавателем на
разрабатывать алгоритмы и программы,
лекциях и
реализующие их, но и уметь доказывать
практических
правильность программ, анализировать и
занятиях.
оценивать эффективность решений)
Компетенция
Код по
Дескрипторы – основные признаки освоения
стандарту
(показатели достижения результата)
Способность к
саморазвитию,
повышению своей
квалификации и
мастерства
СЛК-4
Готовность работать с
информацией из
различных
источников /
Владение основными
методами, способами
и средствами
получения, хранения,
переработки
информации
ИК- 4 /
ИК-5
Использовать
соответствующий
математический
аппарат и
инструментальные
средства для
обработки, анализа и
систематизации
информации по теме
исследования
ПК-22
Формы и методы
обучения,
способствующие
формированию и
развитию
компетенции
Демонстрирует способность самостоятельно Самостоятельное
определять формирующиеся дефициты
изучение отдельных
знаний, умений и навыков в ходе обучения
тем.
Показывает умение сформулировать
проблемы, связанные с недостатком знаний
и навыков, и выбрать подходы к их решению
Показывает навыки уверенного владения
средствами поиска информации в Internet, в
различных источниках, рекомендованных
для самостоятельного изучения.
Самостоятельное
изучение отдельных
тем при подготовке
к контрольным
мероприятиям
Демонстрирует умение оценивать и отбирать
наиболее важную информацию,
максимально полезную для решения
поставленных задач при выполнении
домашних заданий, при подготовке к
контрольным мероприятиям
Уверенно использует способы формального
описания алгоритмов с применением
математического аппарата
Владеет различными способами
формального описания языков, умеет дать
описания языковых конструкций, может
прочитать и использовать на практике
формальные описания языков с
использованием различных нотаций
Знает и может использовать на практике
математический аппарат, формальные
средства, лежащие в основе различных
методов разработки алгоритмов и программ
Может построить оценки и доказать
свойства алгоритмов и программ с
использованием формальных методов
Использование и
сравнение
формальных
средств при
изучении основных
методов разработки
программ и средств
языка Pascal.
Получение
формальных оценок
и сравнение их с
результатами,
полученными при
практической
реализации
Владеет методами и инструментальными
средствами разработки программ, в
частности основными возможностями
современных систем программирования,
языков высокого уровня:
1.
знает возможности системы
программирования и может
разрабатывать программы средней
сложности на языке Pascal;
2.
владеет средствами тестирования
и отладки программ с использованием
возможностей системы
программирования
Выполнение
практических
заданий с
использованием
языка Pascal, их
тестирование с
использованием
различных методов
и отладка
Место дисциплины в структуре образовательной программы
4.
Настоящая дисциплина относится к циклу естественно-научных дисциплин (базовая
часть).
Изучение данной дисциплины базируется на следующих дисциплинах:
1. Программирование;
2. Теоретические основы информатики.
Для освоения учебной дисциплины, студенты должны владеть следующими знаниями
и компетенциями:
1. понимание основных концепций, принципов, теорий и фактов, связанных с
информатикой;
2. умение применять основы информатики и программирования к
проектированию, конструированию и тестированию программных продуктов;
3. навыки моделирования, анализа и использования формальных методов
конструирования программного обеспечения;
4. способность оценивать временную и емкостную сложность программного
обеспечения.
Основные положения дисциплины должны быть использованы в дальнейшем при
изучении следующих дисциплин:
1. Теория алгоритмов и эволюционные вычисления.
2. Объектно-ориентированный анализ и программирование.
3. Криптографические методы защиты.
4. Распределенные алгоритмы и параллельное программирование.
5. Моделирование информационных систем.
6. Оптимизация и математические методы принятия решений.
5.
Тематический план учебной дисциплины
Название раздела
Всего
часов
Анализ алгоритмов
Разработка алгоритмов
Всего:
68
40
108
№
1
2
6.
Аудиторные часы
Практические
Лекции
Семинары
занятия
10
6
16
-
10
6
16
Самостоятельная работа
48
28
76
Контроль знаний студентов
Тип контроля
Текущий
(неделя)
Итоговый
Форма
контроля
Контрольная
работа
Домашнее
задание
Зачет
1
2
8
неделя
8
неделя
2 модуль –
зачет
Параметры
Письменная работа (80 мин.)
Письменная работа из
индивидуальных заданий
Письменный зачет (90 мин.)
10
6.1. Формы контроля знаний студентов
При выполнении контрольной работы студент должен продемонстрировать знания
основных понятий и алгоритмов из соответствующего раздела учебного курса, умения
применять указанные алгоритмы для решения предложенных задач и обосновывать
корректность полученных решений. Количество задач в контрольных работах – от 6 до 8.
Каждая задача оценивается в 1-2 балла, так что общая сумма баллов равна 10.
При выполнении домашнего задания студент должен продемонстрировать знания
основных понятий и алгоритмов из соответствующего раздела учебного курса, умения
самостоятельно изучать учебную литературу и применять полученные знания при решении
предложенных задач. Количество задач в домашнем задании равно 10. Каждая задача
оценивается в 1 балл.
При выполнении письменной экзаменационной работы студент должен
продемонстрировать знания основных понятий и алгоритмов из всего учебного курса,
умения применять указанные алгоритмы для решения предложенных задач и обосновывать
корректность полученных решений. Работа содержит 1 теоретический вопрос, который
оценивается в 2 балла, и 5 практических заданий, каждое из которых оценивается в 1-2
балла, так что общая сумма баллов равна 10.
Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале.
6.2.Критерии оценки знаний, навыков
Оценка за итоговый контроль основывается на результатах выполнения контрольных
работ, домашнего задания и зачета.
Преподаватель оценивает работу студентов на практических занятиях: студенты
работают по карточкам, на которых указаны практические задания. Работа каждого
студента оценивается с учетом количества задач, решенных им во время занятия. Оценки
за работу на практических занятиях преподаватель выставляет в рабочую ведомость.
Оценка по 10-ти балльной шкале за работу на практических занятиях определяется перед
промежуточным или итоговым контролем и называется - Оаудиторная.
Накопленная оценка за текущий контроль учитывает результаты студента по текущему
контролю следующим образом:
Онакопленная= 2/3*Отекущий + 1/3* Оаудиторная
где Отекущийрассчитывается как взвешенная сумма всех форм текущего контроля,
предусмотренных в РУП:
Отекущий = n1·Ок/р + n2·Одз,
при этом n1 = 0,7,n2 = 0,3.
Способ округления накопленной оценки текущего контроля: арифметический.
Результирующая оценка за дисциплину рассчитывается следующим образом
Орезультирующая = 0,6* Онакопленная + 0,4*·Озач
Способ округления накопленной оценки промежуточного (итогового) контроля в форме
зачета: арифметический.
На пересдаче студенту не предоставляется возможность получить дополнительный балл
для компенсации оценки за текущий контроль.
На зачете студент может получить дополнительный вопрос (дополнительную
практическую задачу, решить к пересдаче домашнее задание), ответ на который
оценивается в 1 балл.
7.
Содержание дисциплины
Раздел 1. Анализ алгоритмов
Тема 1. Первая модельная задача из теории расписаний
Задача о минимизации времени параллельного выполнения комплекса
взаимосвязанных работ при условии, что работы не должны прерываться, длительности
работ — произвольные числа, для каждой работы имеется свой исполнитель (задача
календарного планирования). Точный полиномиальный алгоритм для решения указанной
задачи. Использование ориентированного графа и алгоритма Демукрона топологической
сортировки.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 9 часов.
Тема 2. Вторая и третья модельные задачи из теории расписаний
Задача о минимизации стоимости последовательного выполнения комплекса
независимых работ при условии, что работы не должны прерываться, длительности работ —
произвольные числа, для каждой работы имеется свой исполнитель, для которого известна
стоимость ожидания единицы времени ожидания в очереди. Задача о минимизации времени
параллельного выполнения взаимозависимых работ при условии, что работы не должны
прерываться, длительности всех работ одинаковы, граф зависимостей между работами
является ориентированным деревом. Точные полиномиальные алгоритмы для решения
указанных задач.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 9 часов.
Тема 3. Четвертая и пятая модельные задачи из теории расписаний
Задача о минимизации стоимости параллельного выполнения комплекса
взаимозависимых работ при условии, что работы не должны прерываться, длительности всех
работ одинаковы, имеется ровно два однотипных исполнителя. Задача о минимизации
времени параллельного выполнения независимых работ при условии, что работы могут
прерываться, а длительности работ — произвольные числа. Точные полиномиальные
алгоритмы для решения указанных задач с использованием «уровневой» и «ленточной»
стратегии.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 10 часов.
Тема 4. Шестая модельная задача из теории расписаний
Задача о минимизации времени параллельного выполнения комплекса
взаимозависимых работ при условии, что длительности работ — произвольные числа,
допускается прерывание работ, исполнители однотипные. Точный полиномиальный
алгоритм для решения указанной задачи с использованием «уровневой» и «ленточной»
стратегии, а также стратегии «разделения исполнителей».
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 10 часов.
Тема 5. Седьмая и восьмая модельные задачи из теории расписаний
Задача о минимизации времени параллельного выполнения комплекса независимых
работ при условии, что длительности работ — произвольные числа, допускается прерывание
работ, а исполнители имеют разную производительность. Задача о минимизации времени
параллельного выполнения комплекса двухэтапных независимых работ двумя
исполнителями (конвейерная задача). Точные полиномиальные алгоритмы для решения
указанных задачи с использованием стратегии «объединения исполнителей» и алгоритма
Джонсона.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 10 часов.
Литература по разделу: Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы:
построение и анализ, 2-е издание. М.: Издательский дом «Вильямс», 2012.
Тема 6. Формализации понятия «алгоритм»
Существующие формализации понятия «алгоритм»: класс рекурсивных функций,
машина Тьюринга, нормальные алгорифмы Маркова, эквивалентность этих формализаций.
Основные свойства и требования к алгоритмам. Примеры алгоритмов. Различные формы
записи алгоритмов. Диаграммы Ганта.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 9 часов.
Тема 7. Задача о назначении
Задача о минимизации суммарной стоимости выполнения независимых работ при
условии, что число работ равно числу исполнителей и заданы стоимости выполнения каждой
работы каждым исполнителем (задача о назначении). Совершенные паросочетания в
двудольных графах. Метод «волны» для поиска чередующихся деревьев. Венгерский
алгоритм для решения задачи о назначении.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 9 часов.
Тема 8. Аномалии многопроцессорных расписаний
Примеры задач на составление оптимальных расписаний, в которых происходит
аномальное ухудшение «качества» оптимального расписания при изменении начальных
условий: уменьшении длительностей работ, ослаблении связей в графе зависимостей работ,
увеличении числа исполнителей, изменении исходных приоритетов работ. Примеры
«трудных» задач в теории расписаний.
Количество часов аудиторной работы: 4.
Общий объем самостоятельной работы студента: 10 часов.
Литература по разделу: Левитин А.В. Алгоритмы: введение в разработку и анализ. М.:
Издательский дом «Вильямс», 2006.
8.
Образовательные технологии
На лекциях рекомендуется иллюстрировать материал примерами, показывающими все
этапы решения задачи: формализацию и построение математической модели, разработку
алгоритма, доказательство его корректности, нахождение его сложности, написание
программы, её отладку и тестирование, выполнение программы на реальных входных
данных.
На практических занятиях используются следующие методы обучения и контроля
усвоения материала: разработка алгоритмов для конкретных задач и их практическая
реализация в виде программного продукта с последующей отладкой и тестированием.
При оценке выполненных заданий особое внимание рекомендуется обратить на
оценки разработанных программ (получение теоретических оценок, сравнение проведенных
экспериментов с результатами, полученными различными способами).
Методические указания студентам:
Студенту рекомендуется следующая схема выполнения домашних заданий:
 проработать конспект лекций;
 проанализировать основную и дополнительную литературу, рекомендованную по
изучаемому разделу;
 проанализировать варианты решений, предложенные преподавателем на
практических занятиях;
 при затруднениях сформулировать вопросы к преподавателю.
При подготовке рекомендуется использовать электронные учебные материалы,
имеющиеся в медиатеке.
Выполненные задания должны сопровождаться данными анализа результатов
(теоретическими оценками, сравнением результатов, полученных различными способами).
9.
Оценочные средства для текущего контроля и аттестации студента
9.1 Вопросы для оценки качества освоения дисциплины
1. Что такое рекурсивная функция?
2. Какие функции вычислимы по Тьюрингу?
3. В чем состоит тезис Тьюринга?
4. Какие проблемы в теории алгоритмов алгоритмически неразрешимы?
5. Какие существуют оценки эффективности алгоритма? Чем сложность «в худшем»
отличается от сложности «в среднем»?
6. Чем полиномиальные алгоритмы отличаются от экспоненциальных?
7. Чем нижние оценки сложности алгоритмов отличаются от верхних? Чем отличаются
методы их доказательства?
8. Что такое «жадный» алгоритм и эвристика? Чем они отличаются?
9. Что такое топологическая сортировка?
10. В чем заключается алгоритм топологическй сортировки (алгоритм Демукрона)?
11. Что такое максимальное паросочетание и как его можно найти с помощью алгоритма
чередующихся цепей?
12. Что такое совершенное паросочетание и как его можно найти с помощью
чередующихся деревьев?
13. В чем состоит задача о назначениях? Как она решается с помощью венгерского
алгоритма?
14. В чем состоит алгоритм построения расписания минимальной стоимости без
прерываний для независимых заданий и одного исполнителя?
15. В чем состоит алгоритм построения расписания минимальной длительности без
прерываний для единичных заданий с древовидным графом предшествования?
16. В чем состоит алгоритм построения расписания минимальной длительности с
прерываниями для независимых заданий?
17. В чем состоит алгоритм построения расписания минимальной длительности с
прерываниями для единичных заданий с произвольным графом предшествования заданий?
18. В чем состоит алгоритм построения расписания минимальной длительности с
прерываниями для независимых единичных заданий?
19. В чем состоит задача календарного планирования?
20. В чем состоит алгоритм для задачи календарного планирования?
21. В чем состоит конвейерная задача?
22. В чем состоит алгоритм для конвейерной задачи (алгоритм Джонсона)?
23. В каких случаях для построения оптимального расписания используется «уровневая»
стратегия?
24. В каких случаях для построения оптимального расписания используется «ленточная»
стратегия?
25. В каких случаях для построения оптимального расписания используется стратегия
«объединения исполнителей»? Какая математическая модель применяется в этом случае?
26. В каких случаях для построения оптимального расписания используется стратегия
«разделения исполнителей»? Какая математическая модель применяется в этом случае?
27. Привести примеры аномалий в многопроцессорных расписаниях.
9.2 Примеры заданий итогового контроля
Образцы заданий приведены в Приложении 1.
10.
Учебно-методическое и информационное обеспечение дисциплины
10.1
Базовый учебник
Левитин А.В. Алгоритмы: введение в разработку и анализ. М.: Издательский дом
«Вильямс», 2006.
10.2
Основная литература
1. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ,
2-е издание. М.: Издательский дом «Вильямс», 2005.
2. Коффман Э.Г. Теория расписаний и вычислительные машины. М.: Наука, 1984.
3. Сэджвик Р. Фундаментальные алгоритмы на С++. Алгоритмы на графах: Пер. с
англ. СПб: ООО «ДиаСофтЮП», 2002.
10.3
Дополнительная литература
4. Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. М.:
Издательский дом «Вильямс», 2000.
5. Иванов Б.Н. Дискретная математика. Алгоритмы и программы: Учеб. пособие. М.:
Лаборатория Базовых Знаний, 2002.
6. Сигал М.Х., Иванова А.П. Введение в прикладное дискретное программирование:
модели и вычислительные алгоритмы: Учеб. пособие. М.: ФИЗМАТЛИТ, 2002.
10.4
Программные средства
Для успешного освоения дисциплины, студент использует следующие программные
средства:

Средства разработки, тестирования, отладки программ, написанных на языке
Pascal (Pascal ABC, Free Pascal).

Система контроля стиля программирования Style Checker;

LMS, как основа для организации дистанционной поддержки дисциплины.
11. Материально-техническое обеспечение дисциплины
Для проведения лекционных занятий используется компьютер с установленным
программным обеспечением для демонстрации презентаций и проектор.
Практические занятия проводятся в компьютерных классах с установленным
программным обеспечением, перечисленным выше.
Приложение 1
1. Дан граф зависимостей работ. Длительности работ указаны. Составить расписание с
прерываниями для 2 исполнителей с помощью «уровневой» стратегии.
3
2
2
4
2
3
3
1
2. Даны длительности работ: 2,5,6,8,9,11,12. Работы независимы. Требуется составить
расписание минимальной длительности с прерываниями для 4 исполнителей и для 5
исполнителей. Для каждого исполнителя указать моменты начала, окончания и прерывания
работ. Указать, какие работы прерывались.
3. Составить расписание минимальной длительности с прерываниями для системы заданий,
длительности и связи между которыми указаны на графе:
2
4
1
2
3
5
1
2
1
2
Рассмотреть следующие варианты:
1) имеется 2 идентичных исполнителя;
2) имеется 3 идентичных исполнителя;
3) имеется 4 идентичных исполнителя.
4. Составить расписание минимальной длительности с прерываниями для системы из 5
независимых заданий и 3 исполнителей, если длительности заданий равны 70, 56, 15, 15, 9, а
производительности исполнителей равны 7, 5, 3.
5. Составить расписание минимальной длительности для конвейерной задачи, если имеются
7 независимых заданий, состоящих из двух этапов, длительности которых равны А(3,4),
В(4,2), С(3,1), D(2,3), E(4,5), F(2,4), G(4,4).
6. Составить расписание минимальной длительности с прерываниями для системы из 6 независимых заданий и 3 исполнителей, если длительности заданий равны 54, 45, 40, 32, 32, 16, а
производительности исполнителей равны 3, 4, 8.
7. Найти совершенное паросочетание в двудольном графе (рис. слева), используя
чередующееся дерево (ответ – на рис. справа):
8. Решить задачу о назначении для заданной матрицы затрат, используя венгерский
алгоритм:
4
5
6
5
9
2
4
5
8
8
3
6
7
5
7
2
4
4
7
9
5
6
6
6
7
.
Download