- •В. Д. Колдаев Лабораторный практикум по курсу « Структуры и алгоритмы обработки данных »
- •Часть 1
- •Лабораторная работа № 1 « Методы сортировки »
- •Теоретические сведения
- •Методы сортировки
- •Сортировка вставкой
- •Сортировка обменом
- •Сортировка Шелла
- •Быстрая сортировка (сортировка Хоара)
- •Сортировка в нелинейных структурах
- •Турнирная сортировка
- •Пирамидальная сортировка
- •Функция сложности алгоритма
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Основные функции системы
- •Варианты заданий
- •Лабораторная работа №2 «Методы поиска».
- •Теоретические сведения
- •Методы поиска
- •Последовательный поиск.
- •Бинарный поиск.
- •Фибоначчиев поиск.
- •Интерполяционный поиск.
- •Поиск по бинарному дереву.
- •Поиск по бору.
- •Поиск хешированием.
- •Алгоритмы поиска словесной информации
- •Алгоритм Бойера - Мура
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Варианты заданий
- •Использовать алгоритмы Кнута - Морриса – Пратта, Бойера – Мура, Рабина для поиска текстовой информации. Лабораторная работа № 3 «итеративные и рекурсивные алгоритмы»
- •Теоретические сведения
- •Рекурсивные структуры данных
- •Лабораторное задание
- •Требования к отчету
- •Контрольные вопросы
- •Литература
- •Лабораторная работа № 4 «Алгоритмы построения остовного дерева сети».
- •Теоретические сведения
- •Лабораторное задание
- •Литература
- •Задание : Построить остовное дерево графа методами Крускала и Прима.
- •Решить задачи
- •Лабораторная работа № 5. Алгоритмы нахождения на графах кратчайших путей.
- •Теоретические сведения
- •Метод динамического программирования.
- •Метод Дейкстры
- •Алгоритм Флойда
- •Алгоритм Йена
- •Литература
- •Лабораторное задание.
- •Варианты заданий
- •Задание 2: Найти кратчайший путь между тремя парами вершин методом Дейкстры
- •Решить задачи
- •Составить программу для нахождения кратчайшего пути
- •Лабораторная работа № 6 « Эвристические алгоритмы »
- •Теоретические сведения
- •Волновой алгоритм.
- •Двухлучевой алгоритм.
- •Пример 2. Осуществить трассировку элементов а и в .
- •Четырехлучевой алгоритм.
- •Маршрутный алгоритм.
- •Геометрическая модель задачи о лабиринте
- •Алгоритмы составления расписания.
- •Литература
- •Лабораторное задание.
- •Решить задачи
Алгоритмы составления расписания.
Предположим, что имеется множество nодинаковых процессоров, обозначенных
,
и m независимых заданий
,
которые нужно выполнить. Процессоры
могут работать одновременно, и любое
задание можно выполнять на любом
процессоре. Если задание загружено в
процессор, оно остается там до конца
обработки. Время обработки задания
известно
и равно
Организовать
обработку заданий таким образом, чтобы
выполнение всего набора заданий было
завершено как можно быстрее.
Система работает следующим образом: первый освободившийся процессор берет из списка следующее задание. Если одновременно освобождаются два или более процессоров, то выполнять очередное задание из списка будет процессор с наименьшим номером.
Пример. Пусть имеется три процессора
и шесть заданий , время выполнения
каждого из которых равно: ![]()
Рассмотрим расписание
В начальный момент времениT=0,
процессор
начинает
обработку задания
,
процессор
- задания
,
а процессор
-
задания
.
Процессор
заканчивает выполнение задания
в
момент времени
и начинает обрабатывать задание
,
пока процессоры
и
все еще работают над своими первоначальными
заданиями. ПриT=3процессор
опять заканчивает задание
и начинает обрабатывать задание
,
которое завершается в моментT=4.
Тогда он начинает выполнять последнее
задание
.
Процессоры
и
заканчивают задания приT=5, но, так
как списокLпуст, они останавливаются.
Процессор
завершает выполнение задания
приT=12. Рассмотренное расписание
проиллюстрировано на рис.1. временной
диаграммой, известной каксхема Ганта.
Очевидно, что расписание не оптимально.
Можно «подобрать», например, расписание
,
которое позволяет завершить все задания
заT* = 8 единиц времени (рис.2.).


Теперь рассмотрим другой тип задач по
составлению расписания для многопроцессорных
систем. Вместо вопроса о быстрейшем
завершении набора заданий фиксированным
числом процессоров теперь поставим
вопрос о минимальном числе процессоров,
необходимых для завершения данного
набора заданий за фиксированное время
.
Конечно, время
будет не меньше времени выполнения
самого трудоемкого задания.
В такой постановке задача составления
расписания эквивалентна следующей
задаче упаковки. Пусть каждому процессору
соответствует
ящик
размера
.
Пусть каждому заданию
соответствует предмет размера
,
равного времени выполнения задания
,
где
Теперь для решения задачи по составлению
расписания нужно построить алгоритм,
позволяющий разместить все предметы в
минимальном количестве ящиков. Конечно,
нельзя заполнять ящики сверх их объема
,
и предметы нельзя дробить на части.
Литература
1. Т. Кормен, Ч. Лейзерсон, Р. Ривест
Алгоритмы: построение и анализ. М.: МЦНМО, 2000.
2. Д.Кнут Искусство программирования , том 1. Основные алгоритмы. Уч . пос. М.:Изд. Дом " Вильямс ", 2000.
3. Вирт Н. Алгоритмы и структуры данных.: Пер. С англ. - М.: Мир, 2001.
4. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на
языке Си. Учеб. пособие. М : Финансы и статистика, 2004.
5. А. Ахо, Дж.Хопкрофт, Дж.Ульман, Структуры данных и алгоритмы М: СПб: Киев: Вильямс, 2001г.
