ФТД.1.РешениеОлимпиадныхЗадач+

advertisement
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
«Мурманский государственный педагогический университет»
(МГПУ)
УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС
ДИСЦИПЛИНЫ
Решение олимпиадных задач по программированию
Основная образовательная программа подготовки специалиста по специальности
050202.65
050202.65
Информатика (ФТД.1)
Информатика с доп.специальностью (ФТД)
Утверждено на заседании кафедры
информатики и ОТД
физико-математического факультета
(протокол №___ от
«__»_____________ 20___ г.)
Зав. кафедрой информатики и ОТД
___________________Н.Ю.Королева
РАЗДЕЛ I. Программа учебной дисциплины.
1.1. Автор программы: Шиманский Сергей Александрович, ст. преподаватель кафедры
информатики и ОТД.
1.2. Рецензенты:
Титова О.Л. – ст. преподаватель кафедры информатики и ОТД
Лазарева И.М. – канд. ф.-м. наук, доцент кафедры информатики и ПО,
МГТУ
1.3. Пояснительная записка:
Цель: освоение методики решения задач в олимпиадах по информатике и программированию; изучение типовых алгоритмов решения олимпиадных задач;
Задачи: приобретение студентами навыков решения типовых олимпиадных задач;
Место курса в общей системе подготовки специалиста: факультативная дисциплина
«Решение олимпиадных задач по программированию» обеспечивает приобретение знаний
и умений в соответствии с государственным образовательным стандартом; относится к
числу прикладных информационных дисциплин линии программирования в силу отбора
изучаемого материала и его важности для подготовки специалиста. Знания и навыки, полученные при изучении данной дисциплины, используются обучаемыми при изучении общепрофессиональных и специальных дисциплин компьютерного цикла;
Требования к уровню освоения содержания дисциплины:
должны знать:
методику анализа олимпиадных задач, алгоритмы решения олимпиадных задач;
должны уметь:
использовать полученные знания для решения олимпиадных задач по программированию и задач
повышенной сложности;
Ссылки на авторов и программы, которые использовались в подготовке – нет.
1.4. Извлечение из ГОС ВПО специальности 050202 Информатика – вузовский компонент.
1.5. Объем дисциплины и виды учебной работы (для всех специальностей, на которых
читается данная дисциплина):
№
п/п
1
2
Шифр и наименование специальности
050202
Информатика
050202 Информатика с доп.сп.
Курс
Семестр
2
4
Трудоемкость
80
3
6
70
Виды учебной работы в часах
Всего
ПР/
ЛК
ЛБ
ауд.
СЕМ
30
8
8
14
40
10
30
-
Сам.
раб.
50
Вид итогового
контроля (форма отчетности)
Зачёт
30
Зачет
1.6. Содержание дисциплины:
1.6.1. Разделы дисциплины и виды занятий (в часах). Примерное распределение учебного
времени:
Количество часов
№
п/п
Наименование раздела, темы
Всего
ауд.
1/3
050202 «Информатика»
ПР/
ЛК
ЛБ
СМ
1/1
–/2
–/-
Сам.
раб.
–/-
1
Классификация олимпиадных задач и методика их анализа
2
Арифметика многоразрядных чисел
4/5
1/1
1/ 4
2/-
4/4
3
Комбинаторные алгоритмы
4/5
1/1
1/ 4
2/-
4/4
4
Перебор и методы его сокращения
7/5
1/1
2/4
4/-
6/6
5
Алгоритмы на графах
8/8
2/2
2/6
4/-
8/8
6
Алгоритмы вычислительной геометрии
7/6
1/ 2
2/6
4/-
8/8
7
Тестирование программ
1/ 4
1/ 2
–/4
–/-
–/-
ИТОГО
32/40
8/10
8/30
12/-
30/30
1.6.2. Содержание разделов дисциплины.
1. Классификация олимпиадных задач и методика их анализа.
2. Арифметика многоразрядных чисел.
Реализация основных математических операций над многоразрядными числами.
3. Комбинаторные алгоритмы.
Классические задачи комбинаторики, перестановки, размещения, сочетания.
4. Перебор и методы его сокращения.
Перебор и методы его сокращения. Перебор с возвратом. Динамическое программирование,
метод ветвей и границ.
5. Алгоритмы на графах.
Представление графа в памяти компьютера, поиск в графе, деревья, связность, кратчайшие
пути, раскраски.
6. Алгоритмы вычислительной геометрии.
Базовые процедуры, прямая линия, многоугольник, выпуклая оболочка.
7. Тестирование программ.
1.6.3.
№
п/п
1
2
3
4
5
Темы для самостоятельного изучения.
Количество часов
Форма самостоятельной работы
Форма контроля выполнения самостоятельной
работы
Решение задач
Раздел
Тема
Арифметика
многоразрядных
чисел
Комбинаторные
алгоритмы
Перебор и
методы
его сокращения
Алгоритмы
на графах
Алгоритмы
вычислителной
геометрии
Представление многоразрядных чисел немассивными методами
4
вопросы для самостоятельного изучения
Гармонические числа
Производящие функции
4
вопросы для самостоятельного изучения
Решение задач
Дихотомические методы перебора
6
вопросы для самостоятельного изучения
Решение задач
Алгоритмы на взвешенных
графах: выбора минимального
основного дерева, наименьшего паросочетания
Алгоритм Брезенхейма построения прямой и окружности
8
вопросы для самостоятельного изучения
Решение задач
8
вопросы для самостоятельного изучения
Решение задач
ИТОГО
30
1.7. Методические рекомендации по организации изучения дисциплины.
1.7.1. Тематика и планы аудиторной работы студентов по изученному материалу:
Практическое занятие 1. Арифметика многоразрядных чисел. Комбинаторные алгоритмы.
Практическое занятие предусматривает следующие виды упражнений:
1. Представление чисел в различных кодах.
2. Основные формулы комбинаторики.
3. Представление различных чисел комбинаторными формулами.
4. Схемы работы с многоразрядными числами.
Литература: [1], [2], [3], [5].
Практическое занятие 2. Перебор и методы его сокращения.
Практическое занятие предусматривает следующие виды упражнений:
1. Выбор различных видов перебора для решения задач.
2. Программная реализация различных переборов.
3. Сокращение перебора.
Литература: [1], [2], [3], [4], [7].
Практическое занятие 3. Алгоритмы на графах.
Практическое занятие предусматривает следующие виды упражнений:
1. Алгоритмы на неориентированных графах.
2. Алгоритмы на ориентированных графах.
3. Алгоритмы на мультиграфах.
4. Алгоритмы на взвешенных графах.
Литература: [1], [2], [3], [4], [6], [7].
Практическое занятие 4. Алгоритмы вычислительной геометрии.
Практическое занятие предусматривает следующие виды упражнений:
1. Построение прямой методом Брезенхейма.
2. Построение окружности методом Фурье.
3. Построение графических примитивов методом Брезенхейма.
Литература: [1], [4].
Лабораторная работа № 1 (2 часа). Арифметика многоразрядных чисел.
На лабораторной работе студенты реализуют программно алгоритмы по соответствующей
теме, изученные в лекционном курсе, разобранные на практических занятиях и самостоятельно:
1. Представление чисел в различных кодах.
2. Схемы работы с многоразрядными числами.
Литература: [1], [2], [3], [5].
Лабораторная работа № 2 (2 часа). Комбинаторные алгоритмы.
На лабораторной работе студенты реализуют программно алгоритмы по соответствующей
теме, изученные в лекционном курсе, разобранные на практических занятиях и самостоятельно:
1. Основные формулы комбинаторики.
2. Представление различных чисел комбинаторными формулами.
Литература: [1], [2], [3], [5].
Лабораторная работа № 3 (4 часа). Перебор и методы его сокращения.
На лабораторной работе студенты реализуют программно алгоритмы по соответствующей
теме, изученные в лекционном курсе, разобранные на практических занятиях и самостоятельно:
1. Выбор различных видов перебора для решения задач.
2. Программная реализация различных переборов.
3. Сокращение перебора.
Литература: [1], [2], [3], [4], [7].
Лабораторная работа № 4 (4 часа). Алгоритмы на графах.
На лабораторной работе студенты реализуют программно алгоритмы по соответствующей
теме, изученные в лекционном курсе, разобранные на практических занятиях и самостоятельно:
1. Алгоритмы на неориентированных графах.
2. Алгоритмы на ориентированных графах.
3. Алгоритмы на мультиграфах.
4. Алгоритмы на взвешенных графах.
Литература: [1], [2], [3], [4], [6], [7].
Лабораторная работа № 5 (4 часа). Алгоритмы вычислительной геометрии.
На лабораторной работе студенты реализуют программно алгоритмы по соответствующей
теме, изученные в лекционном курсе, разобранные на практических занятиях и самостоятельно:
1. Построение прямой методом Брезенхейма.
2. Построение окружности методом Фурье.
3. Построение графических примитивов методом Брезенхейма.
Литература: [1], [4].
1.8. Учебно-методическое обеспечение дисциплины.
1.8.1. Рекомендуемая литература:
 Основная
1. Зиборов В. В. Visual Basic 2010 на примерах / Зиборов В. В. - СПб. : БХВ-Петербург, 2010. 329 с. : ил. + 1 электрон. опт. диск (CD-ROM).
2. Яковлева Л. В. Практикум по объектно-ориентированному программированию в С++ : учеб.метод. пособие [для студ. по спец. 010501 "Прикладная математика и информатика : в 2 ч.] : Ч.
1 / Яковлева Л. В. ; [науч. ред. Б. М. Верещагин] ; М-во образования и науки РФ, Мурм. гос.
гуманит. ун-т. - Мурманск : МГГУ, 2011. - 126 с.
3. Фаронов В. В. TurboPascal 7.0. Учебный курс : [учеб. пособие для студ. вузов] / Фаронов В. В. М. : КноРус, 2011. - 363 с.
4. Введение в язык паскаль : [учеб. пособие для студ. вузов, обуч. по спец. и направл. в области
информатики и программирования] / Абрамов В. Г., Трифонов Н. П., Трифонова Г. Н. - М. :
КноРус, 2011. - 380 с. : ил.
5. Фаронов В. В. Turbo Pascal 7.0. Практика программирования : учеб. пособие / Фаронов В. В. М. : КноРус, 2011. - 414 с. : ил.
6. Головин И. Г. Языки и методы программирования : [учебник для студ. вузов, обуч. по направл.
"Прикладная математика и информатика"] / Головин И. Г., Волкова И. А. - М. : Академия,
2012. - 303, [1] с. : ил. - (Высшее профессиональное образование. Информатика).
7. Окулов С.М. Программирование в алгоритмах, 2-е изд., испр. – М.: БИНОМ. Лаборатория знаний, 2006.
8. Борисенко В.В. Основы программирования Интернет-университет информационных технологий - ИНТУИТ.ру, 2005
9. Зыков С. В. Введение в теорию программирования Интернет-университет информационных
технологий - ИНТУИТ.ру, 2004
10. Фаронов В. В. Delрhi. Программирование на языке высокого уровня : учебник для студ. вузов,
обуч. по направл. "Информатика и вычислительная техника". – СПб. : Питер, 2004.
11. Турбо Паскаль 7.0 – К.: Торгово-издательское бюро BHW, 1996.
12. Дополнительная.
13. Вирт Н. Алгоритмы + структура данных = программы. – М.: Мир, 1985.
14. Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989.
15. Епанешников А.М., Епанешников В.А.. Программирование в среде Turbo Pascal 7.0. – М.: Диалог-МИФИ, 1993..
16. Мануйлов В.Г. Разработка программного обеспечения на Паскале. – М.: ПРИОР, 1996.
17. Фаронов Э.В. Турбо-Паскаль 7.0. – М.: Диалог МИФИ, 1998.
ЭБС "Университетская библиотека on-line":
3. Кирюхин В. М. Методика проведения и подготовки к участию в олимпиадах по информатике. Всероссийская олимпиада школьников 2-е изд. (эл.) - М.: БИНОМ. Лаборатория знаний , 2012.
4. Волчёнков С. Г. Ярославские олимпиады по информатике. Сборник задач с решениями
- М.: БИНОМ. Лаборатория знаний , 2010.
5. Зеленяк О. П. Практикум программирования на Turbo Pascal. Задачи, алгоритмы, решения 3-е изд., испр. и доп. - М. — СПб: ДМК Пресс, - 311 с.
6. Макарова Н. П. Задачи районных олимпиад по программированию. В 2-х ч. Часть 1 Рекомендовано редакционно-издательским советом Учреждения образования "Гродненский ГОИПК и ПРР и СО" - Гродно: Гродненский ГОИПК и ПРР и СО, 2007. - 88 с.
Интернет-ресурсы:
5. Олимпиада
по
информатике
[Электронный
ресурс]/
URL:
http://www.edu.yar.ru/russian/projects/predmets/program/2003/
(дата
обращения:
09.05.2013)
6. International
Olympiad
in
Informatics
[Электронный
ресурс]/
URL:
http://www.ioinformatics.org/index.shtml (дата обращения: 09.05.2013)
7. Олимпиады
по
программированию
[Электронный
ресурс]/
URL:
http://www.olympiads.ru/zaoch/ (дата обращения: 09.05.2013)
8. Олимпиады по программированию [Электронный ресурс]/ URL: http://olympprogramming.blogspot.ru/ (дата обращения: 09.05.2013)
9. Contester [Электронный ресурс]/ URL: http://www.contester.ru/ (дата обращения:
09.05.2013)
10. ejudge contest management system [Электронный ресурс]/ URL: http://ejudge.ru/ (дата обращения: 09.05.2013)
17.1. Материально-техническое обеспечение дисциплины
17.1.1. Перечень используемых технических средств.
Компьютерный класс с языком программирования Pascal, Delphi, С или C++.
17.1.2. Перечень используемых пособий. Нет.
17.1.3. Перечень видео- и аудиоматериалов программного обеспечения. Нет.
17.2. Примерные зачетные задания.
Задача 1. "Уравнение для 5 класса"
Уравнение для пятиклассников представляет собой строку длиной 5 символов. Второй символ строки является либо знаком '+' (плюс) либо '-' (минус), четвёртый символ – знак '=' (равно). Из
первого, третьего и пятого символов ровно два являются цифрами из диапазона от 0 до 9, и один буквой x, обозначающей неизвестное.
Требуется написать программу, которая решить данное уравнение относительно x.
Технические требования: Входной файл: INPUT.TXT. Выходной файл: OUTPUT.TXT.
Ограничение времени: 1 секунда на тест.
Формат входных данных: Файл INPUT.TXT состоит из одной строки, в которой записано
уравнение.
Формат выходных данных: В выходной файл OUTPUT.TXT вывести единственное целое
число – значение x.
Пример файлов входных и выходных данных:
+-----------------------------------------------+
|INPUT.TXT
|OUTPUT.TXT
|
|-----------------------+-----------------------|
|x+5=7
|2
|
|-----------------------+-----------------------|
|3-x=9
|-6
|
+-----------------------------------------------+
Задача 2. "Счастливый билет"
Билет называется счастливым, если его можно разрезать прямой линией на две части таким
образом, что оказавшиеся на них числа имеют одинаковые цифровые корни. Чтобы вычислить
цифровой корень числа, его цифры складывают, если в результате получится число большее или
равное 10, то цифры складывают снова и так далее, пока не получится число от 0 до 9 - это и есть
цифровой корень. Например, билет с номером 0015420 является счастливым, так как разрезав его
на части с числами 0015 и 420 имеем у этих чисел одинаковые цифровые корни.
Требуется написать программу, которая определит является ли счастливым билет с заданным номером.
Технические требования: Ограничение по времени тестирования: по 1 секунде на один тест.
Формат входных данных: Входной текстовый файл INPUT.TXT содержит номер счастливого билета. Номер может начитаться с нулей и содержит не более 100 цифр.
Формат выходных данных: Выходной текстовый файл OUTPUT.TXT должен содержать 1,
если билет счастливый и 0 иначе.
Пример файлов входных и выходных данных:
+---------------------------------------------------------------------------+
|INPUT.TXT
|OUTPUT.TXT
|
|--------------------------------------+------------------------------------|
|0015420
|1
|
|--------------------------------------+------------------------------------|
|00100
|0
|
+---------------------------------------------------------------------------+
17.3. Примерный перечень вопросов к зачету (экзамену).
Зачёт ставится на основании выполнения задач, решаемых на практических, лабораторных
занятиях
17.4. Комплект экзаменационных билетов (утвержденный зав. кафедрой до начала сессии). Нет.
17.5. Примерная тематика рефератов – не предусмотрены.
17.6. Примерная тематика курсовых работ – Нет.
17.7. Примерная тематика квалификационных (дипломных) работ – не предусмотрены.
17.8. Методика(и) исследования (если есть) – не предусмотрена.
17.9. Бально-рейтинговая система, используемая преподавателем для оценивания знаний
студентов по данной дисциплине – не предусмотрена.
РАЗДЕЛ II.Методические указания по изучению дисциплины (или ее разделов)
и контрольные задания для студентов заочной формы обучения.
Заочная форма обучения не предусмотрена.
РАЗДЕЛ III. Содержательный компонент теоретического материала.
Лекция 1. Классификация олимпиадных задач и методика их анализа. Арифметика
многоразрядных чисел.
На лекции предполагается обзор следующих тем:
 Введение в олимпиадное программирование.
 Классификация олимпиадных задач: арифметические, геометрические, динамическое
программирование, сортировка, поиск, последовательности, графы, рекурсия.
 Классификация олимпиадных задач: имитаторы, конвертеры, трансляторы, исполнители, реккуры, искатели, калькуляторы, стелс-арифметика.
 Олимпиадные задачи: длинная арифметика.
 Олимпиадные задачи: длинный корень.
Лекция 2. Комбинаторные алгоритмы. Перебор и методы его сокращения.
На лекции предполагается обзор следующих тем:
 Классификация комбинаторных задач по программированию.
 Классические комбинаторные задачи:
o задача о шахматах;
o задача о словах;
o задача о дележе денег;
o задачи на транспозиции (степень перестановки, восстановление перестановки);
o генерация объекта по номеру и номера по объекту;
o задача об ожерельях.
 Классические переборные задачи:
o числа Фибоначчи (рекурсия);
o НОД (рекурсия);
o инвертирование последовательности (без массивов, рекурсия);
o задача о размене денег (рекурсия, перебор);
o сумма кубов (рекурсия, перебор).
 Методы сокращения перебора.
Лекция 3. Алгоритмы на графах.
На лекции предполагается обзор следующих тем:
 Классификация задач на графах.
 Классические алгоритмы на графах: Дейкстри, Форда-Беллмана, Флойда, Прима и
Краскала, Форда-Фалкерсона, венгерский.
 Задачи на графах:
o метод обхода в глубину;
o задача о городах и дорогах;
o задача о симпатичных таблицах;
 Алгоритмы на строках. Алгоритм Кнута-Морриса-Пратта.
Лекция 4. Алгоритмы вычислительной геометрии. Тестирование программ.
На лекции предполагается обзор следующих тем:
 Способы описания линий на плоскости.
 Алгоритм Брезенхейма.
 Алгоритм Робертса.
 Алгоритм Варнока.
 Закраска Гуро, Блинна и Фонга.
 Требования к программному изделию.
 Трассировка требований. Особенности первой итерации.
 Требования к решению олимпиадных задач. Проверка решений.
РАЗДЕЛ IV. Словарь терминов (глоссарий).
Альфа-тестирование – тестирование готового программного продукта на специально созданных
задачах.
Бета-тестирование — опробование программного продукта, бесплатно разосланного потенциальным пользователям, на реальных задачах. О найденных ошибках и замечаниях пользователь
сообщают разработчику.
Величина потока — сумма значений f(s,v) по всем v из V.
Вес — некоторое число, однозначно соответствующее данному ребру графа
Взвешенный граф — граф с рёбрами с приписанным весом.
Волновой алгоритм. Заведем массив, в котором для каждой вершины будем хранить длину кратчайшего пути от начальной вершины до нее. Если путь еще не известен, запишем в соответствующий элемент массива бесконечность (под бесконечностью будем подразумевать некоторое очень
большое число, которое заведомо больше ответа, который мы можем получить, например, в качестве бесконечности можно использовать максимальное значение, которое могут принимать пере-
менные того типа, в котором мы ведем вычисления, либо число, которое мы заведомо не можем
получить в качестве ответа, например, число -1 (длина пути не может быть отрицательна) ).
В
начале работы алгоритма нам известна только длина пути до начальной вершины, она равна 0.
Рассмотрим все вершины, соседние с начальной, расстояние до каждой из них равно 1. Рассмотрим все вершины, являющиеся соседями для вершин, расстояния от начальной вершины до которых равно 1. Если расстояние до такой вершины еще не посчитано, то оно равно 2, и так далее.
Таким образом, на k-ом шаге мы находим все вершины, расстояние до которых равно k-1: найдя
такую вершину, перебираем все соседние с ней вершины, и, если расстояние до нее еще не посчитано, то оно равно k. Если на некотором шаге мы не изменили ни одного числа в массиве — длины
всех путей найдены. Заметим, что кратчайший путь до вершины не может иметь длину больше,
чем N-1.
Граф — это абстрактный математический объект. Он состоит из вершин и ребер. Каждое ребро
соединяет пару вершин. Если одну и ту же пару вершин соединяют несколько ребер, то эти ребра
называются кратными. Граф — множество V вершин и набор E неупорядоченных и упорядоченных пар вершин; обозначается граф через G(V,E).
Детерминированное тестирование — тестирование программ, при котором контролируется
каждая комбинация исходных эталонных данных и соответствующая ей комбинация результатов
функционирования программ. Полное детерминированное тестирование практически нереализуемо.
Дополняющий путь — простой путь (т.е. путь проходящий по каждой вершине не более одного
раза) из истока s в сток t в остаточной сети Gf.
Дуга — ориентированное ребро.
Задача о максимальном потоке — для данной сети G с истоком s и стоком t найти поток максимальной величины.
Инверсия перестановки — пара целых чисел (i, j) из диапазона от 1 до N, таких что i<j, а
π[i]>π[j].
Комбинаторика — раздел математики, посвященный решению задач выбора и расположения
элементов некоторого, обычно конечного, множества в соответствии с заданными правилами.
Кратчайшее расстояние в невзвешенном графе — минимально возможное число ребер в пути
между парой вершин.
Обратная перестановка к перестановке π — такая перестановка π-1, что ππ-1=π-1π=ε
Остаточная пропускная способность дополняющего пути p — величина cf=min{cf(u,v): (u,v)
принадлежит p}.
Остаточная пропускная способность из u в v — величина cf(u,v)=c(u,v)–f(u,v). Она определяет,
сколько ещё вещества может пропустить ребро из u в v.
Остаточная сеть сети G, порожденная потоком f — сеть, составленная из ребер с пропускной
способностью, равной остаточной пропускной способности cf(u,v). Ее ребра называются остаточными ребрами.
Перестановка из N элементов — упорядоченный набор из N различных чисел от 1 до N.
Петля — ребро, соединяющее вершину с ней самой.
Подстрока — последовательность подряд идущих символов в строке.
Поиск в ширину. Заведем очередь. Очередь часто удобно реализовывать с помощью массива и
двух указателей — на первый "необслуженный" элемент, и первый свободный элемент массива.
Тогда добавление элемента в очередь выглядит так: помещаем его в элемент массива, на который
указывает 2-й указатель, с увеличиваем этот указатель на 1. Извлечение из очереди столь же просто: берем элемент, на который указывает 1-й указатель, и указатель увеличиваем на 1. Изначально поместим в очередь один элемент — начальную вершину. До нее расстояние известно и равно
0. На каждом шаге алгоритма извлекаем из очереди одну вершину (пусть это вершина v и до нее
расстояние k). Затем пербираем всех соседей данной вершины, расстояние до которых еще не известно и добавляем их в очередь. Расстояние до них записываем k+1. Алгоритм заканчивается, когда очередь опустеет. Этот алгоритм работает быстрее предыдущего. Время работы алгоритма зависит от конкретной реализации. Обычно алгоритм выполняет порядка N2 или M действий. Восстановление пути. Пусть известны кратчайшие расстояния до всех вершин. Как найти кратчайший
путь до конкретной вершины. Рассмотрим эту вершину (обозначим ее V). Пусть длина пути до нее
L. Эта вершина является последней в пути к V. Найдем какую-нибудь вершину, которая соединена
с V, и расстояние до которой равно L-1. Тогда эта вершина является предпоследней в пути (если
таких вершин несколько, значит существует несколько кратчайших путей и можно выбрать любую из этих вершин). Далее найдем вершину, которая соединена с предпоследней и расстояние до
которой равно L-2. Она является пред-предпоследней. Продолжая этот процесс мы можем "раскрутить" весь путь задом наперед.
Полный граф — граф, в котором между любой парой различных вершин есть ребро.
Поток в сети G — функция f: VV, обладающая следующими свойствами: f(u,v)c(u,v); f(u,v)=–
f(v,u); сумма по всем v из V. f(u,v) равна 0 (для всех u из V\{s,t}). Величина f(u,v) может быть как
положительной, так и отрицательной. Она определяет, сколько вещества движется из вершины u в
вершину v (отрицательные значения соответствуют движению в обратную сторону).
Префикс — подстрока, начинающаяся с первого символа строки.
Префикс-функция. Обозначим P(s) — длину максимального префикса строки s, являющегося
суффиксом s, при этом не совпадающим с s. Префикс-функция определена на множестве префиксов строки S и равна P(x), где х — префикс.
Произведение перестановок π и σ — композиция (т.е. последовательное применение) этих перестановок: (π*σ)(X) = π(σ(X)). Произведение перестановок тоже является перестановкой, причем
если φ=πσ, то φ[i]=π[σ[i]]. πσσπ, т.е. произведение перестановок некоммутативно.
Путь в графе между парой вершин V и U — это последовательность вершин Li (0ik), удовлетворяющих условиям: 1) L0=V; 2) Lk=U; 3) для любого i (0ik-1) вершины Li и Li+1 соединены ребром.
Рекурсивная процедура (функция) — процедура (функция), которая совершает рекурсивные вызовы.
Рекурсивный вызов — вызов процедуры (функции) из нее самой.
Рекурсия — это способ реализации вычислительного процесса, при котором решение задачи описывается с помощью рекурсивной процедуры (функции).
Ручное тестирование — тестирование, которое проводится без исполнения тестируемой программы на компьютере.
Сеть — ориентированный граф G=(V,E), каждому ребру (u,v) которого поставлено в соответствие
число c(u,v)0, называемое пропускной способностью ребра. В случае отсутствия ребра (u,v) в
графе мы полагаем c(u,v)=0. В графе выделены две вершины: исток s и сток t.
Соседние вершины — вершины, соединенные ребром.
Степень вершины — число входящих в вершину рёбер (для неориентированного графа). Для
ориентриованного графа различают степень по входящим и степень по исходящим ребрам.
Степень перестановки — минимальное натуральное число k такое, что πk=ε
Стохастическое тестирование — тестирование программ, при котором исходные тестовые данные берутся случайным образом (с использованием статистического распределения).
Строка — последовательность символов.
Суффикс — подстрока, заканчивающаяся на последний символ строки.
Тест — совокупность входных данных для программы, а также точное описание всех результатов,
которые должна выработать программа на этих данных.
Тестирование — процесс выполнения программ с целью обнаружения факта наличия ошибок.
Тестирование программ — этап разработки компьютерной программы, в процессе которого проверяется работоспособность программы, не содержащей явных ошибок.
Тестирование программы как прозрачного ящика — тестирование, подразумевающее знание
исходного кода программы и полный доступ к нему.
Тестирование программы как черного ящика — тестирование, при котором программа рассматривается как объект, внутренняя структура которого неизвестна.
Тестовое покрытие — набор тестов, покрывающих все линейные участки программы.
Тождественная перестановка — перестановка, которая не изменяет порядок элементов множества (отображает каждый элемент сам на себя). Такая перестановка обозначается ε=(1,2,3,...,N).
Топологическая сортировка — порядок нумерации вершин ориентированного графа, при котором любое ребро идет из вершины с меньшим номером в вершину с большим.
Транспозиция — обмен местами любых двух элементов перестановки.
Четность перестановки — четность числа инверсий данной перестановки.
k
Число размещений An —количество способов выписать в строчку k различных элементов из
данных n (строчки, различающиеся порядком элементов, считаются различными). Число размещеn
!
k

n

n

1

n

k

1





n
ний вычисляется по формуле: A
.
n

k
!


k
Число сочетаний Cn — количество способов выбрать k из n различных предметов (наборы, отличающиеся только порядком, считаются одинаковыми). Число сочетаний вычисляется по следуюn

n

1

n

k

1



 n
!

.
k
!
k
!

n
k
!


k

n
щей формуле: C
Элементарная транспозиция — транспозиция двух соседних элементов.
РАЗДЕЛ V. Практикум по решению задач (практических ситуаций) по темам
лекций (одна из составляющих частей итоговой государственной
аттестации).
Не предусмотрен.
РАЗДЕЛ VI. Изменения в рабочей программе, которые произошли после
утверждения программы.
Характер изменений в
программе
Номер и дата протокола заседания кафедры,
на котором было принято данное решение
Обновлен список ре- Протокол
комендованной лите- 24.04.13
ратуры
№11
Подпись заведующего
кафедрой, утверждающего внесенное изменение
от Королева Н.Ю.
Подпись декана факультета (проректора
по учебной работе),
утверждающего данное изменение
Азарова В.В.
РАЗДЕЛ VII. Учебные занятия по дисциплине ведут:
Ф.И.О., ученое звание и степень Учебный год
преподавателя
Кириченко А.Э., к.т.н., доцент
2007-2008
Шиманский С.А., ст. преподаватель
Факультет
Специальность.
ФМФ
Информатика
Download