А. М. Горького математико-механический факультет кафедра алгебры и геометрии Библиотека структур данных и алгоритмов для графов и множеств Диплом

Вид материалаДиплом

Содержание


Допустить к защите
4. Структуры данных 7
5. Иерархия классов 15
7. Пример использования GRAPHLAB 25
Краткий реферат
1. Введение в проблему
2. Общая характеристика системы GRAPHLAB
3. Использование GRAPHLAB в разработках
4. Структуры данных
4.1. Скалярные структуры данных
4.2. Списковые структуры данных
Item Head() - возвращает первый элемент списка; Item
Item Eject() - возвращает последний элемент, удаляя его из cписка; Inject(Item
Очередь (Queue) - это список, для которого разрешены лишь операции Head, Pop, Inject. Дек
Дек с ограниченным выводом
4.3. Эффективные структуры данных
4.3.1 Семейства непересекающихся множеств
Левацкие хипы
O(1); время на findmin O
4.3.3 Бинарные деревья поиска
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6


Государственный комитет Российской Федерации

по высшему образованию

Уральский Государственный Университет им. А.М.Горького

математико-механический факультет

кафедра алгебры и геометрии

Библиотека структур данных и алгоритмов для графов и множеств



Дипломная работа

студента 5 курса

Грина Григория Владимировича


Научный руководитель:

доктор математических наук

профессор

Баранский Виталий Анатольевич




Допустить к защите


Зав. кафедрой







Екатеринбург

1995

Содержание:

Краткий реферат 3

1. Введение в проблему 4

2. Общая характеристика системы GRAPHLAB 5

3. Использование GRAPHLAB в разработках 6

4. Структуры данных 7

4.1. Скалярные структуры данных 7

4.2. Списковые структуры данных 8

4.3. Эффективные структуры данных 9

4.3.1 Семейства непересекающихся множеств 9

4.3.2 Хипы 10

4.3.3 Бинарные деревья поиска 12

4.3.4 Разрезание и связывание деревьев 13

4.4. Графы 14

5. Иерархия классов 15

6. Алгоритмы 16

6.1. Алгоритмы-методы 16

6.2. Алгоритмы-функции 16

6.2.1 Поиск Эйлерова цикла 17

6.2.2 Поиск минимального остова (Алгоритм Краскала) 17

6.2.3 Поиск минимального остова (Алгоритм крутящейся монетки) 18

6.2.4. Кратчайший путь в бесконтурной сети 20

6.3. Концепция решателей 20

6.3.1 Поиск в глубину 21

6.3.2 Поиск в ширину 21

6.3.3 Топологическая сортировка 21

6.3.4 Проверка графа на двудольность 22

6.3.5 Поиск кратчайших путей в сети 22

6.3.6 Поиск максимального потока в сети 23

7. Пример использования GRAPHLAB 25

8. Особенности версии GRAPHLAB 3.00 26

9. Направления дальнейшего развития 27

Приложение 1. Заголовочные файлы. 28

Приложение 2. Исходные тексты программ 41

Приложение 3. *.GLB Format 42

Список литературы 43

Краткий реферат


GRAPHLAB — это объектно-ориентированная библиотека структур данных и алгоритмов для множеств и графов. В GRAPHLAB’е реализованы основные структуры данных, необходимые при решении многочисленных задач по обработке графов. Использование этих структур делает программирование
  • быстрым - библиотека содержит в себе большую часть повторяющегося кода;
  • надежным - каждая процедура библиотеки тщательно отлажена;
  • наглядным - активно применяемые принципы ООП предлагают интуитивно понятную иерархию классов;
  • эффективным - реализованы очень эффективные алгоритмы поддержки разнообразных структур данных.
  • По сути дела реализован язык — надмножество языка C++ — специально предназначенный для решения задач на графах. В работе приведен ряд примеров разработки алгоритмов на данном языке.

1. Введение в проблему


Задачи дискретной математики, и прежде всего задачи свзязанные с алгоритмами на графах, очень часто встречаются в прикладных областях. Большинство таких задач используют достаточно распространенные структуры данных — такие как списки, очереди, стеки, множества, графы, деревья и т.д. Языки программирования высокого уровня обычно не содержат таких структур либо содержат самые простые. Поэтому работа над любым графовым алгоритмом начинается с введения собственных структур данных. При этом программист сталкивается с различными проблемами:


  1. Написание процедур работы с простейшими объектами достаточно малоинтересное занятие.
  2. Желание быстрее приступить к алгоритму приводит к тому, что основным структурам данных отводится недостаточно внимания и реализуются простейшие методы, часто наименее эффективные.
  3. По той же причине в программах появляется много ошибок, не имеющих отношения к основной задаче.
  4. Пользовательский интерфейс либо вообще не продумывается либо реализуется наиболее поверхностное решение.

Все эти причины крайне затрудняют разработку и использование таких программ.

Анализ программ, написанных студентами математико-механического факультета УрГУ показывает, что программы по курсам ВМП и САПР на 60-70% состоят из процедур, обеспечивающих поддержку структур данных и пользовательский интерфейс. При этом программы очень плохо читаемы и трудно модифицируемы.

2. Общая характеристика системы GRAPHLAB


GRAPHLAB - это объектно-ориентированная библиотека структур данных и алгоритмов для множеств и графов. В GRAPHLAB’е реализованы основные структуры данных, необходимые при решении многочисленных задач по обработке графов. Использование этих структур делает программирование
  • быстрым - библиотека содержит в себе большую часть повторяющегося кода;
  • надежным - каждая процедура библиотеки тщательно отлажена;
  • наглядным - активно применяемые принципы ООП предлагают интуитивно понятную иерархию классов;
  • эффективным - реализованы очень эффективные алгоритмы поддержки разнообразных структур данных.