методичка для заочников_структуры и алгоритмы обработки

реклама
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования «Пинский государственный профессионально-технический
колледж легкой промышленности»
УТВЕРЖДАЮ
Директор ПГПТК ЛП
Вакульчик Н.И.
(подпись)
«
(Ф.И.О.)
»
201
СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ
Методические рекомендации по изучению учебной дисциплины,
задания для контрольной работы и рекомендации по их выполнению
для учащихся заочной формы обучения 2 курса
по специальности 2-40 01 01 «Программное обеспечение информационных технологий»
специализации 2-40 01 01 35 «Программное обеспечение обработки экономической и
деловой информации»
Пинск 2015
Автор: Н. В. Аргер, преподаватель ПГПТК ЛП
Разработано на основе типовой учебной программы дисциплины «Структуры и
алгоритмы обработки данных», утвержденной Министерством образования Республики
Беларусь от 15.07.2013 г.
Обсуждено и одобрено на заседании цикловой комиссии.
Протокол №
от « »
201
г.
2
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Методические рекомендации по изучению дисциплины «Структуры и алгоритмы
обработки данных» разработаны для учащихся безотрывной формы обучения
специальности 2-40 01 01 «Программное обеспечение информационных технологий» в
соответствии с образовательным стандартом РД РБ 02100.4.019-2004.
Основной целью изучения дисциплины является изучение ключевых алгоритмов,
которыми должен владеть каждый программист, исследование оценок эффективности,
проведение сравнительного анализа алгоритмов, применение на практике решения на
ЭВМ алгоритмических задач с использованием современных языков программирования
высокого уровня.
Задачей дисциплины является развитие у учащихся культуры мышления,
овладение ими компьютерных методов обработки информации путём развития
профессиональных навыков разработки, выбора и преобразования алгоритмов, что
является важной составляющей эффективной реализации программного продукта.
Дисциплина «Структуры и алгоритмы обработки данных» тесно связана с
областями знаний ряда дисциплин: «Основы алгоритмизации и программирование»,
«Математическое моделирование» и др.
В результате изучения дисциплины учащиеся должны
знать на уровне представления:
– основные этапы компьютерного решения задач;
– примеры базовых структур данных;
– статические и динамические структуры данных;
– зависимость эффективности алгоритмов от способов представления данных;
знать на уровне понимания:
– понятие алгоритма и структуры управления; традиционные структуры данных;
– методы разработки программ;
– принципы построения эффективных алгоритмов;
– основы структурного проектирования программ;
– основные требования методологии структурного программирования, как
технологической основы разработки качественных программных компонентов;
уметь:
– применять требования методологии структурного программирования при
проектировании информационных моделей;
– выбирать оптимальную структуру для представления данных;
– разрабатывать и записывать на языке программирования высокого уровня
алгоритмы решения классических задач программирования.
Завершающим этапом изучения дисциплины является выполнение обязательной
контрольной работы.
Учебный план специальности «Программное обеспечение информационных
технологий» для безотрывной формы обучения предусматривает изучение дисциплины
«Структуры и алгоритмы обработки данных» в объеме 18 часов, из них 8 часов отведены
на выполнение лабораторных работ.
3
1 Учебная программа
1.1 Примерный тематический план дисциплины
Таблица 1
Раздел, тема
1
Введение
Раздел 1. Алгоритмы,
основанные на использовании
динамических структур данных
1.1 Динамические структуры
данных и их организация с
помощью массивов и указателей.
Динамические массивы.
1.2 Списковые структуры:
односвязный и двусвязный
списки, их использование.
1.3 Списковые структуры:
стек, очередь, кольцо, их
использование.
1.4 Бинарные деревья.
Основные операции с бинарными
деревьями.
1.5 Использование деревьев
оптимального поиска для
решения задач.
1.6
Прошитые бинарные
деревья, операции с ними.
1.7 Красно-черные деревья,
операции с ними.
1.8 Решение задач с
применением деревьев.
Раздел 2. Использование
комбинаторных алгоритмов и
алгоритмов на графах для
решения задач
2.1 Алгоритмы генерирования
перестановок, множества всех
подмножеств множества
2.2 Алгоритмы генерирования
k-элементных подмножеств
множества, разбиения множества
на подмножества, их
использование для решения задач
Количество учебных часов
Всего
В том числе
для
для
на
на
дневной заочной
устанообзорформы формы
вочные
ные
занятия
занятия
на
лабораторные
занятия
Самостоятельная
работа
учащихся
(часы)
2
2
3
-
4
5
6
7
2
30
6
2
2
2
24
4
-
4
1
4
1
2
1
6
1
4
1
2
-
4
1
44
10
6
2
1
1
1
6
1
1
5
4
1
3
1
3
1
1
1
5
1
3
2
1
3
4
34
Продолжение таблицы 1
1
2.3. Основные определения
графов. Ориентированные и
неориентированные графы.
Машинное представление графов.
Матрица смежности и
инцидентности
2.4 Задачи, основанные на поиске
в ширину и в глубину в графе.
2.5.
Алгоритмы
поиска
кратчайших расстояний в графе
2.6
Алгоритмы нахождения
максимального потока, потока
минимальной стоимости.
2.7. Задачи, решаемые полным
перебором. Методы сокращения
полного перебора.
2.8 Алгоритмы с возвращением.
2.9
Динамическое
программирование.
Примеры
задач
динамического
программирования
2.10 Метод ветвей и границ.
Решение задачи о коммивояжере
методом ветвей и границ
2.11 “Жадные” алгоритмы. Общие
принципы
жадного
метода.
Жадные алгоритмы построения
минимального остовного дерева
Раздел
3.
Алгоритмы
вычислительной геометрии
3.1.
Основные
понятия
вычислительной
геометрии.
Задачи
вычислительной
геометрии и методы их решения.
Раздел 4. Рандомизированные
алгоритмы
4.1. Генерирование случайных
чисел,
распределённых
по
заданным
законам.
Задачи,
решаемые с помощью генераторов
случайных чисел.
Раздел 5. Хеширование и хештаблицы
5.1.
Открытое
и
закрытое
хеширование.
Функции
хеширования. Задачи, решаемые с
помощью построения хеш-таблиц.
Итого
2
3
4
5
6
2
1
4
1
1
3
4
1
1
3
1
7
1
6
6
4
1
1
3
4
2
4
1
1
3
4
1
1
3
2
2
4
4
6
1
1
5
6
1
1
5
4
1
1
3
4
1
1
3
6
-
6
6
6
90
18
2
8
8
72
5
1.2 Содержание дисциплины
Тема 1. Алгоритмы, основанные на использовании динамических структур данных.
Изучите понятие динамических структур данных, методы их организации с
помощью массивов и указателей, основные операции над ними. Изучите структуру
данных «динамический массив», ознакомьтесь с методами его обработки.
Изучите списковые структуры данных «односвязный и двусвязный списки»,
«стек», «очередь», «кольцо», основные операции над ними.
Изучите структуры данных «дерево», «бинарное дерево», основные операции над
ними. Ознакомьтесь с понятием «дерево оптимального поиска», его назначением и
методами использования при решении задач.
Ознакомьтесь с понятием «прошитое бинарное дерево», его назначением, видами
прошивки, использованием различных структур данных для организации прошивки,
операциями над прошитыми бинарными деревьями.
Изучите понятие «красно-чёрное дерево», его назначение, основные операции над
ним.
Литература [13], с 21-26, 55-62, 158-197; [15], с 33-38; [16], с 240-286
Тема 2. Использование комбинаторных алгоритмов и алгоритмов на графах для
решения задач.
Изучите основные комбинаторные алгоритмы генерирования перестановок,
множества всех подмножеств множества, k-элементных подмножеств множества,
разбиения множества на подмножества, методы их использования для решения задач.
Изучите основные понятия теории графов, виды графов, способы машинного
представления графов в виде матриц смежности и инцидентности.
Ознакомьтесь с алгоритмами поиска в ширину и в глубину в графах, с алгоритмами
поиска кратчайших расстояний в графе: алгоритмом Дейкстры, алгоритмом БеллманаФорда, а также с основными типами задач, использующих данные виды поиска.
Ознакомьтесь с алгоритмами нахождения максимального потока, потока
минимальной стоимости в графе, с основными типами задач, использующих данные
алгоритмы.
Изучите основные типы задач, решаемых полным перебором, а также методы
сокращения полного перебора.
Изучите понятие гамильтоновых и эйлеровых циклов в графе, основные типы
задач, решаемых с помощью алгоритмов с возвращением.
Ознакомьтесь с процессом разработки алгоритмов методом динамического
программирования, изучите понятие оптимального решения, рассмотрите примеры задач
динамического программирования.
Изучите методы улучшения перебора при поиске оптимального решения, суть
метода ветвей и границ, а также алгоритма Литтла для решения задачи о коммивояжёре.
6
Ознакомьтесь с «жадными» алгоритмами как методом построения эффективных
алгоритмов; изучите общие принципы жадного метода, его использование для построения
минимального остовного дерева.
Литература [19], c 43-61, 72-96; 102-105, 111-114, 142-165.
Тема 3. Алгоритмы вычислительной геометрии.
Изучите основные понятия вычислительной геометрии, познакомьтесь с классами
задач вычислительной геометрии и методами их решения.
Литература [13], c 74-78
Тема 4. Рандомизированные алгоритмы.
Познакомьтесь со способами получения случайных чисел: аппаратным и
программным. Изучите генерирование случайных чисел, распределённых по заданным
законам, задачи, решаемые с помощью ГСЧ.
Литература [15], c 194-201
Тема 5. Хеширование и хеш-таблицы.
Изучите понятия хеширования, хеш-функций, хеш-таблиц, методы решения задач с
помощью построения хеш-таблиц.
Литература [16], c 241-257
1.3 Перечень тем лабораторных работ
Таблица 2
Наименование темы
Обработка бинарных деревьев. Решение задач с применением деревьев.
Решение задач, основанных на поиске в ширину и в глубину в графе.
Реализация алгоритмов поиска кратчайших расстояний
Реализация алгоритмов с возвращением.
Реализация методов решения задач вычислительной геометрии.
Реализация алгоритмов генерирования случайных чисел
Итого
Количество
часов
2
2
2
2
8
7
2 Требования, предъявляемые к выполнению контрольных работ
Учебным планом специальности «Программное обеспечение информационных
технологий» для учащихся безотрывной формы обучения предусмотрено выполнение
одной домашней контрольной работы по дисциплине «Структуры и алгоритмы обработки
данных».
Основной целью контрольной работы является формирование у учащихся умения
самостоятельно работать с литературой, проводить анализ, проектирование и
программирование задачи с использованием разнообразных структур данных.
Выполнение домашней контрольной работы требует от учащихся безотрывной
формы обучения самостоятельного изучения материала дисциплины по рекомендуемой
литературе.
Требования к выполнению контрольной работы:
1.
Контрольная работа должна быть выполнена в соответствии с предложенным
вариантом.
2.
Вариант контрольной работы определяется последней цифрой шифра
учащегося.
3.
Титульный лист контрольной работы должен содержать фамилию, имя,
отчество и номер группы учащегося, название дисциплины, номер варианта, фамилию
преподавателя-рецензента.
4.
Перед выполнением каждого задания необходимо указывать его условие.
5.
Ответы на вопросы должны быть конкретными, четкими, не допускающими
двойственного истолкования, сопровождаться примерами, а также содержать ссылки на
использованные источники информации.
6.
Программирование задач контрольной работы необходимо осуществлять в
одной из указанных систем: Borland Pascal, Turbo Pascal, PascalABC, PascalABC.NET.
7.
На проверку необходимо представить отчет по контрольной работе на
бумажном носителе, а также электронный вариант. В отчете необходимо представить
тексты разработанных программ и результаты их на двух контрольных примерах.
Исходные файлы разработанных программ необходимо представить в электронном
варианте.
8.
Контрольная работа сдается в срок, установленный в учебном графике.
Результаты выполнения домашней контрольной работы оцениваются отметками
«зачтено», « не зачтено».
Не засчитывается и возвращается учащемуся на доработку с подробной рецензией,
как правило, контрольная работа, если в ней не раскрыты теоретические вопросы задания
или ответы на них полностью переписаны из учебной литературы, без адаптации к
конкретному заданию, если имеются грубые ошибки в решении задач, практических
заданий, выполнении графического задания и т. д.
Доработанный вариант незачтенной контрольной работы представляется на
рецензирование вместе с прежним вариантом, при этом правильно выполненная часть
задания не переписывается.
8
3 Методические указания по выполнению заданий контрольной
работы
Задание 1. Требуется дать исчерпывающий ответ на поставленный вопрос,
привести примеры алгоритмов.
Задание 2. Требуется написать программу решения задачи с использованием
динамических массивов, выполняющую соответствующие с вариантом вычисления.
Задание 3. Требуется написать программу решения задачи с использованием
списковых структур данных.
Задание 4. Требуется написать программу решения задачи с использованием
динамической структуры данных «дерево».
Задание 5. Требуется выполнить необходимые геометрические построения и
написать программу решения задачи с использованием графов.
9
4 Варианты контрольных работ
Таблица 3
Последняя
цифра шифра
Вариант
0
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
4.1 Варианты контрольной работы № 1
Вариант 1
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Списковые структуры: односвязный и двусвязный списки, стек, очередь,
кольцо, их использование».
2. Напишите программу с использованием динамического массива. Дана
вещественная матрица размером 7 x 4. Переставляя ее строки и столбцы, добиться того,
чтобы наибольший элемент (один из них) оказался в нижнем левом углу.
3. Сформируйте два динамических списка, отсортируйте их и объедините в один,
не нарушая порядка. Входные данные: N, М – количество элементов списков (целого
типа); сами элементы списков. Выходные данные: новый динамический список.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. Определите число вхождений заданного элемента в дерево.
5. Представьте в графическом виде произвольный ориентированный взвешенный
граф, содержащий 7 вершин. Для созданного графа составьте матрицу смежности с
учетом веса дуг. Напишите программу, реализующую процесс обхода графа в ширину,
начиная со стартовой вершины.
Вариант 2
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Бинарные деревья. Основные операции с ними. Прошитые бинарные
деревья».
2. Напишите программу с использованием динамического массива. Дана
вещественная матрица А размера n x m. Определите k — количество «особых» элементов
массива А, считая его элемент особым, если он больше суммы остальных элементов его
столбца.
3. Напишите программу решения задачи. Дан некоторый текст. Проверьте в нём
соответствие открытых и закрытых скобок, используя структуру данных стек.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. Выведите на экран элементы из всех листьев дерева.
5. Представьте в графическом виде произвольный ориентированный взвешенный
граф, содержащий 6 вершин. Для созданного графа составьте матрицу инцидентности с
учетом веса дуг. Напишите программу, реализующую процесс обхода графа в глубину,
начиная со стартовой вершины.
Вариант 3
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Деревья оптимального поиска, их использование».
10
2. Напишите программу с использованием динамического массива. Дана
последовательность целых чисел x[1],...,
x[n]. Найдите максимальную длину ее
убывающей подпоследовательности.
3. Напишите программу решения задачи обработки стека. Добавьте новый
элемент перед последним элементом списка. Входные данные: N – количество элементов
списка (целого типа); сами элементы списка; М – элемент для вставки (целого типа).
Выходные данные: новый динамический список.
4. Напишите программу построения бинарного дерева из целочисленных
элементов, выполните его прошивку в прямом порядке. Подсчитайте сумму элементов
дерева.
5. Представьте в графическом виде произвольный ориентированный взвешенный
граф, содержащий 7 вершин. Для созданного графа составьте матрицу смежности с
учетом веса дуг. Напишите программу, позволяющую найти кратчайшее расстояние от
указанной вершины до остальных.
Вариант 4
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Комбинаторные алгоритмы. Алгоритмы генерирования перестановок,
множества всех подмножеств множества, k-элементных подмножеств множества,
разбиения множества на подмножества».
2. Напишите программу с использованием динамического массива. Матрица А
имеет седловую точку Аij, если Аij является максимальным элементом в i-й строке и
минимальным в j-м столбце. Для заданной целой матрицы размером m x n напечатайте
индексы всех ее седловых точек.
3. Напишите программу решения задачи. Дан символьный массив или строка.
Найдите количество различных символов в нём, используя структуру данных стек.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. Определите и выведите на экран глубину заданного элемента на дереве, или
выведите –1, если такого элемента нет.
5. Представьте в графическом виде произвольный неориентированный
взвешенный граф, содержащий 6 вершин. Для созданного графа составьте матрицы
смежности и инцидентности с учетом веса дуг. Напишите программу, формирующую
список смежности по матрице смежности неориентированного графа.
Вариант 5
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Теория графов. Ориентированные и неориентированные графы. Машинное
представление графов. Матрица смежности и инцидентности».
2. Напишите программу с использованием динамического массива. Дана матрица
B[N, M]. Найдите в каждой строке матрицы максимальный и минимальный элементы и
поменяйте их с первым и последним элементом строки соответственно.
3. Напишите программу решения задачи. Найдите максимальный элемент
непустого списка и переставьте его в конец списка. Входные данные: N – количество
элементов списка (целого типа); сами элементы списка. Выходные данные: новый
динамический список.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. По заданному n подсчитайте число всех вершин глубины n в заданном дереве.
5. Представьте в графическом виде произвольный ориентированный взвешенный
граф, содержащий 6 вершин. Для созданного графа составьте матрицу смежности с
учетом веса дуг. Напишите программу, позволяющую найти матрицу минимальных путей,
в которой содержатся кратчайшие расстояния от каждой из вершин до остальных.
11
Вариант 6
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Поиск в ширину и в глубину в графах. Алгоритмы поиска кратчайших
расстояний в графах. Алгоритмы нахождения максимального потока, потока минимальной
стоимости».
2. Напишите программу с использованием динамического массива. Дана матрица
размером 6 x 6. Найдите сумму наименьших элементов ее четных строк и наибольших
элементов ее нечетных столбцов.
3. Напишите программу решения задачи. Дан целочисленный массив. Занесите
его элементы в стек, затем определите в нём количество отрицательных чисел.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. Подсчитайте высоту дерева.
5. Представьте в графическом виде произвольный ориентированный граф,
содержащий 6 вершин. Для созданного графа составьте матрицу смежности и матрицу
достижимости. Напишите программу, определяющую, есть ли путь из одной вершины
ориентированного графа в другую по матрице достижимости.
Вариант 7
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Задачи на графах, решаемые полным перебором. Методы сокращения
полного перебора. Алгоритмы с возвращением».
2. Напишите программу с использованием динамического массива. Найдите в
матрице первую строку, все элементы которой отрицательны. Увеличьте все элементы
матрицы на значение модуля максимального элемента найденной строки.
3. Напишите программу решения задачи. Вычислите и выведите на экран среднее
арифметическое всех положительных элементов списка. Входные данные: N – количество
элементов списка (целого типа); сами элементы списка. Выходные данные: вычисленное
значение.
4. Напишите программу сортировки целочисленного массива А путем включения
его элементов в бинарное дерево. Скопируйте отсортированные данные в другой массив
В, выведите его на экран.
5. Представьте в графическом виде произвольный связный неориентированный
взвешенный граф, содержащий 6 вершин. Для созданного графа составьте матрицу
смежности с учетом веса дуг. Напишите программу построения минимального остовного
дерева для данного графа.
Вариант 8
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Метод ветвей и границ. Решение задачи коммивояжёра методом ветвей и
границ».
2. Напишите программу с использованием динамического массива. Дан массив А
размера n, не содержащий нулевых элементов. Необходимо получить массив А, в которой
сначала идут положительные элементы, а затем отрицательные.
3. Напишите программу решения задачи. Даны два стека разной длины.
Определите количество совпадающих элементов, начиная с вершины каждого из них.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. Подсчитайте количество листьев дерева, найдите среднее арифметическое этих
элементов.
5. Представьте в графическом виде произвольный связный неориентированный
граф, содержащий 6 вершин. Для созданного графа составьте матрицу смежности.
Напишите программу построения эйлерова пути в графе.
12
Вариант 9
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Жадные алгоритмы. Общие принципы жадного метода. Жадные алгоритмы
построения минимального остовного дерева».
2. Напишите программу с использованием динамического массива. Дана
целочисленная прямоугольная матрица. Определите: количество столбцов, содержащих
хотя бы один нулевой элемент и номер строки, в которой находится самая длинная серия
одинаковых элементов.
3. Напишите программу решения задачи. Определите, есть ли в списке хотя бы
два одинаковых элемента. Входные данные: N – количество элементов списка (целого
типа); сами элементы списка. Выходные данные: ответ, есть совпадающие элементы или
нет.
4. Напишите программу с использованием бинарного дерева. Задана
последовательность слов. Определить частоту вхождения каждого из слов в
последовательность. Для решения задачи любое слово ищется в дереве, которое на
начальном этапе пусто. Если слово найдено, то счетчик его вхождений увеличивается на
единицу, если нет, то слово включается в дерево с единичным значением счетчика.
5. Представьте в графическом виде произвольный связный неориентированный
граф, содержащий 6 вершин. Для созданного графа составьте матрицу смежности.
Напишите программу построения гамильтонова пути в графе.
Вариант 10
1. Дайте исчерпывающий ответ на вопрос. Приведите примеры алгоритмов.
Тема: «Хеширование и хеш-таблицы. Открытое и закрытое хеширование. Функции
хеширования».
2. Напишите программу с использованием динамического массива. Дана
действительная матрица размером n x m, все элементы которой различны. В каждой
строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается
наибольшее. Укажите индексы элемента с найденным значением.
3. Напишите программу решения задачи. Дан стек из целочисленных элементов.
Добавьте в него на чётные места нули, выведите новый стек на экран.
4. Напишите программу построения бинарного дерева из целочисленных
элементов. Найдите наибольший и наименьший элементы дерева.
5. Представьте в графическом виде произвольный связный неориентированный
граф, содержащий 7 вершин. Для созданного графа составьте матрицу смежности.
Напишите программу, позволяющую определить, существует ли на графе эйлеров путь, а
также вывести вершины начала и конца пути, если такая пара единственная.
13
5 Вопросы для самоконтроля
Дайте определение понятиям «статическое распределение памяти»,
«динамическое распределение памяти».
В чём достоинство динамического
распределения памяти?
2. Дайте определение понятиям «указатель», «типизированный указатель».
3. Опишите объявление типизированных и нетипизированных указателей.
4. Поясните, какие значения могут принимать указатели; какие операции над
ними возможны.
5. Дайте определение понятию «динамическая переменная», опишите способы
создания динамических переменных.
6. Поясните, как выделить память под динамическую переменную; как
освободить память от динамической переменной.
7. Поясните, что понимают под "связанным списком", как классифицируют
связанные списки.
8. Поясните, как описывается список, какие основные действия над списками и
компонентами списков обычно реализуют.
9. Поясните, какую структуру данных называют стеком. На базе каких структур
может быть организован стек?
10. Перечислите и охарактеризуйте основные операции работы со стеками.
11. Поясните способы инфиксной, префиксной и суффиксной форм записи
выражений.
12. Поясните, какую структуру данных называют очередью. Перечислите и
охарактеризуйте основные операции работы с очередью.
13. Поясните принцип построения динамической структуры «дерево».
14. Перечислите сходства и отличия динамических структур типа «линейный
список», «стек», «дерево».
15. Опишите, какими способами дерево может представляться в связной памяти.
Назовите их достоинства и недостатки.
16. Перечислите виды обхода деревьев, приведите примеры к каждому из них.
17. Поясните способ представления полного и неполного бинарного дерева с
использованием структуры данных массив на конкретном примере. В чем его недостаток?
18. Поясните, что понимается под прошивкой дерева. Как выполнить прошивку
дерева, представленного в виде списковых структур данных, и в виде массива?
19. Поясните, что изучает комбинаторика. Какие основные типы задач она
изучает?
20. Что такое перестановки? Приведите примеры.
21. Что такое сочетания? Приведите примеры.
22. Что такое размещения? Приведите примеры.
23. Дайте определение понятиям «граф», «ориентированный граф»,
«неориентированный граф», «взвешенный граф». Приведите примеры.
24. Перечислите способы представления графов.
1.
14
25. Охарактеризуйте
правила
построения
матрицы
смежности
для
ориентированного и неориентированного графов.
26. Охарактеризуйте правила построения матрицы инцидентности для
ориентированного и неориентированного графов.
27. Поясните словесно процесс организации обхода вершин графа в ширину на
примере конкретного ориентированного графа (изобразите графически).
28. Поясните словесно процесс организации обхода вершин графа в глубину на
примере конкретного ориентированного графа (изобразите графически).
29. Опишите алгоритм поиска максимального потока минимальной стоимости в
графе.
30. Поясните суть задачи коммивояжёра.
31. Поясните суть метода ветвей и границ решения задачи коммивояжёра.
32. Охарактеризуйте правила построения матриц
достижимости
и
контрдостижимости для произвольного ориентированного графа.
33. Поясните суть задачи поиска гамильтонова пути и гамильтонова цикла в
графе.
34. Поясните суть задачи поиска эйлерова пути и эйлерова цикла в графе.
35. Дайте определение понятиям: «связный граф», «несвязный граф»,
«минимальное остовное дерево».
36. Поясните суть метода динамического программирования для решения задач.
37. Опишите процесс разработки алгоритмов динамического программирования.
38. Поясните суть метода решения оптимизационных задач с использованием
жадных алгоритмов. Опишите условия применимости жадных алгоритмов для решения
задач.
39. Сравните методы построения эффективных алгоритмов для решения
оптимизационных задач: метод динамического программирования и «жадный» подход.
40. Опишите преимущества и недостатки использования жадных алгоритмов.
41. Дайте определение понятию «вычислительная геометрия». Перечислите
сферы применения алгоритмов на основе геометрических вычислений.
42. Перечислите и охарактеризуйте основные разделы вычислительной
геометрии.
43. Перечислите и опишите классы задач комбинаторной вычислительной
геометрии.
44. Поясните назначение генераторов случайных чисел, охарактеризуйте методы
действия аппаратных и программных ГСЧ.
45. Перечислите характеристики генераторов случайных чисел. Поясните
понятие псевдослучайного числа.
46. Объясните метод оценки площадей или объёмов сложных фигур методом
Монте-Карло.
47. Дайте определение понятию хеширования, поясните, в каких ситуациях его
использование наиболее эффективно.
48. Поясните понятия хеш-таблицы и хеш-функции, методы их организации.
49. Поясните понятие коллизии. Перечислите и поясните методы разрешения
коллизий, опишите недостатки каждого из них.
15
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1
Ахо А., Хопкрофт ДЖ., Ульман Дж. Построение и анализ вычислительных
алгоритмов. М.: Мир, 1979.
2
Ахо А., Хопкрофт ДЖ., Ульман Дж. Структуры данных и алгоритмы. М.: Вильямс,
2001.
3
Бентли Д. Жемчужины творчества программистов. М.: Радио и связь, 1990.
4
Вирт Н. Алгоритмы + структуры данных = программы. М.: Мир, 1985.
5
Вирт Н. Алгоритмы и структуры данных. М.: Мир, 1989.
6
Грин Д., Кнут Д. Математические методы анализа алгоритмов. М.: Мир, 1987.
7
Громов Ю. Ю., Иванова О. Г., Кулаков Ю. В. Методы программирования. Тамбов,
ТГТУ, 2012.
8
Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М.: Мир,
1981.
9
Дейкстра Э. Дисциплина программирования. М.: Мир, 1978.
10 Касьянов, В.Н. Графы в программировании: обработка, визуализация и применение /
В.Н. Касьянов, В.А. Евстигнеев. СПб., 2003.
11 Кнут Д. Е. Искусство программирования: в 3 т. М.: Вильямс, 2000.
12 Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: Построение и анализ. М.: МЦНМО,
2001.
13 Котов В. М. Информатика. Методы алгоритмизации. Питер, 2002.
14 Ключарев А. А., Матьяш В. А., Щекин С. В. Структуры и алгоритмы обработки
данных. Учебное пособие. С-Пб, 2004.
15 Культин Н. Программирование в Turbo Pascal 7.0 и Delphi. БХВ-Петербург, 2007.
16 Левитин А. В. Алгоритмы: введение в разработку и анализ. М.: Вильямс, 2006.
17 Лэгсам Й., Огенстайн М. Структуры данных для персональных ЭВМ. М.: Мир, 1989.
18 Матьяш В. А., Путилов В. А., Фильчаков В. В., Щекин С. В. Структуры и алгоритмы
обработки данных. Апатиты: КФ ПетрГУ, 2000.
19 Немнюгин С. Изучаем Turbo Pascal. Петербург, 2002.
20 Оре О. Графы и их применение. М.: Мир, 1965.
21 Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. Теория и практика.
М.: Мир, 1980.
22 Сибуя М., Ямамото Т. Алгоритмы обработки данных. М.: Мир, 1986.
23 Успенский В. А., Семёнов А. Л. Теория алгоритмов: основные открытия и
приложения. М.: Наука, 1987.
24 Харри Ф. Теория графов. М.: Мир, 1973.
Русскоязычные ресурсы Internet
25 http://algo.4u.ru/
26 http://algolist.manual.ru/
27 http://alglib.chat.ru/
28 http://algo.do.ru/
29 http://hcinsu.chat.ru/
30 http://algolist.da.ru/
31 http://progstone.narod.ru/links/wantalgo.html
32 http://www.sevmashvtuz.edu/links/algorithms.html
16
СОДЕРЖАНИЕ
Пояснительная записка..……………………………………………………………….
1 Учебная программа ………………………………………………………………….
1.1 Примерный тематический план дисциплины ………………………………….
1.2 Содержание дисциплины ……………………………………………………….
1.3 Перечень тем лабораторных работ ……………………………………………..
3
4
4
5
7
2 Требования, предъявляемые к выполнению контрольных работ ………………...
8
3 Методические указания по выполнению заданий контрольной работы ………...
9
4 Варианты контрольной работы ……………………………………………………..
10
5 Вопросы для самоконтроля …………………………………………………………
14
Рекомендуемая литература ……………………………………………………………
16
17
18
19
20
Скачать