Графы. Модели вычислений. Структуры данных
..pdfСписок литературы
1.Ахо, А. Построение и анализ вычислительных алгоритмов / А. Ахо, Дж. Хопкрофт, Дж. Ульман. – М.: Мир, 1979.
2.Ахо, А. Структуры данных и алгоритмы / А. Ахо, Дж. Хопкрофт, Дж. Ульман. – М.: Вильямс, 2000.
3.Гэри, М. Вычислительные машины и труднорешаемые задачи / М. Гэри, Д. Джонсон. – М.: Мир, 1982.
4.Емеличев, В. А. Лекции по теории графов / В.А. Емеличев и др. – М.:
Наука, 1990.
5.Кормен, Т. Алгоритмы. Построение и анализ / Т. Кормен, Ч. Лейзер, Р. Ривест. МЦНМО, Москва, 1999.
6.Кристофидес, Н. Теория графов. Алгоритмический подход / Н. Кристофидес. – М.: Мир, 1978.
7.Ловас, Л. Прикладные задачи теории графов / Л. Ловас, М. Пламмер. –
М.: Мир, 1998.
8.Липский, В. Комбинаторика для программистов / В. Липский. – М.:
Мир, 1988.
9.Новиков, Ф. А. Дискретная математика для программистов / Ф. А. Новиков. – СПб.: Питер, 2001.
10.Рейнгольд, Э. Комбинаторные алгоритмы / Э. Рейнгольд, Ю. Нивергельт, Н. Део. – М.: Мир, 1980.
11. B r o d a l , G . S . Fast meldable priority queues / G . S . B r o d a l // Proceedings of the 4th International Workshop on Algorithms and Data Structures (WADS'95), Springer, 1995. – P. 282–290.
12.B r o d a l , G . S . Optimal purely functional priority queues / G.S. Brodal, C. Okasaki // Journal of Functional Programming. – 1996. – 6(6). – P. 839–858.
13.B r o d a l , G . S . Worst case priority queues / G.S. Brodal // Proceeding 7th annual ACM-SIAM Symposium on Discrete Algorithms (SODA 96). ACM Press, 1996. – P. 52–58.
14.B r o w n , M . R . Implementation and analysis of binomial queue algorithms / M.R. Brown // SIAM J. Computing. – 1978. – 7(3). – P. 298–319.
15.C l a n c y , M . J . A programming and problem-solving seminar / M.J. Clancy, D.E. Knuth // Technical Report STAN-CS-77-606 / Department of Computer Science, Stanford University, Palo Alto. – 1977.
16.Relaxed heaps: An alternative to Fibonacci heaps with applications to parallel computation / J.R. Driscoll, H. N. Gabow, R. Shrairman, R.E. Tarjan // Communication of the ACM. – 1988. – 31(11). P. 1343–1354.
17.F r e d m a n , M . L . Fibonacci heaps and their uses in improved network optimization algorithms / M.L. Fredman, R.E. Tarjan // Journal of the ACM. – 1987. –
301
34(3). – P. 596–615.
18. A new representation for linear lists / L.J. Guibas, E.M. McCreight, M.F. Plass, and J.R. Roberts // Proc. of the 9th Annual ACM Symposium on Theory of computting. ACM Press, 1977. − P. 49−60.
19. K a p l a n , H . Persistent lists with catenation via recursive slow-down / H. Kaplan and R.E. Tarjan // Proceedings of the 27th Annual ACM Symposium on Theory of Computing. ACM Press, 1995. − P. 93−102.
20. K a p l a n , H . Purely functional representations of catenable sorted lists / H. Kaplan and R.E. Tarjan // Proceedings of the 28th Annual ACM Symposium on Theory of Computing. ACM Press, 1996. − P. 202−211.
21.K n u t h , D . E . The Art of Computer Programming. V. 1. Fundamental Algorithms: Reading / D.E. Knuth. − Second edition. − Addison-Wesley, Massachusetts, 1973.
22.T a r j a n , R . E . Amortized computational complexity / R.E. Tarjan // SIAM J. on Algebraic and Discrete Methods. − 1985. − 6(2). − P. 306−318.
23.V u i l l e m i n , J . A data structure for manipulating priority queues / J. Vuil-
lemin // Communications of the ACM. − 1978. − 21. − P. 309−314.
24. K a p l a n , H . New Heap Data Structures / H. Kaplan, R.E. Tarjan. New Heap Data Structures, Technical Report TR 597-99. Priston University, 1999.
302
Оглавление |
|
Предисловие ........................................................................................................... |
3 |
Часть 1. Графы и алгоритмы .................................................................................. |
5 |
Глава 1. Элементы теории графов ............................................................................. |
5 |
1.1. Начальные понятия .............................................................................. |
5 |
1.1.1. Определение графа ..................................................................... |
5 |
1.1.2. Графы и бинарные отношения .................................................. |
8 |
1.1.3. Откуда берутся графы ................................................................ |
9 |
1.1.4. Число графов ............................................................................. |
10 |
1.1.5. Смежность, инцидентность, степени ...................................... |
10 |
1.1.6. Некоторые специальные графы .............................................. |
11 |
1.1.7. Графы и матрицы ...................................................................... |
11 |
1.1.8. Взвешенные графы ................................................................... |
13 |
1.2. Изоморфизм ........................................................................................ |
13 |
1.2.1. Определение изоморфизма ...................................................... |
13 |
1.2.2. Инварианты ............................................................................... |
14 |
1.3. Операции над графами ....................................................................... |
15 |
1.3.1. Локальные операции ................................................................ |
15 |
1.3.2. Подграфы .................................................................................. |
16 |
1.3.3. Алгебраические операции ....................................................... |
17 |
1.4. Маршруты, связность, расстояния .................................................... |
20 |
1.4.1. Маршруты, пути, циклы .......................................................... |
20 |
1.4.2. Связность и компоненты ......................................................... |
21 |
1.4.3. Метрические характеристики графов ..................................... |
22 |
1.4.4. Маршруты и связность в орграфах ......................................... |
24 |
1.5. Деревья ................................................................................................ |
25 |
1.5.1. Определение и элементарные свойства .................................. |
25 |
1.5.2. Центр дерева ............................................................................. |
26 |
1.5.3. Корневые деревья ..................................................................... |
27 |
1.5.4. Каркасы ..................................................................................... |
28 |
1.6. Эйлеровы графы ................................................................................. |
29 |
1.7. Двудольные графы ............................................................................. |
31 |
1.8. Планарные графы ............................................................................... |
34 |
Задачи .......................................................................................................... |
38 |
Глава 2. Анализ графов ............................................................................................ |
42 |
2.1. Поиск в ширину................................................................................... |
42 |
2.1.1. Метод поиска в ширину ........................................................... |
42 |
2.1.2. BFS-дерево и вычисление расстояний ................................... |
45 |
2.2. Поиск в глубину ................................................................................. |
48 |
|
303 |
2.2.1. Метод поиска в глубину .......................................................... |
48 |
2.2.2. DFS-дерево ................................................................................ |
50 |
2.2.3. Другие варианты алгоритма поиска в глубину ...................... |
51 |
2.2.4 Шарниры .................................................................................... |
53 |
2.3. Блоки .................................................................................................... |
55 |
2.3.1. Двусвязность ............................................................................. |
55 |
2.3.2. Блоки и BC-деревья .................................................................. |
57 |
2.3.3. Выявление блоков .................................................................... |
59 |
2.4. База циклов .......................................................................................... |
61 |
2.4.1. Пространство подграфов ......................................................... |
61 |
2.4.2. Квазициклы ............................................................................... |
63 |
2.4.3. Фундаментальные циклы ......................................................... |
64 |
2.4.4. Построение базы циклов .......................................................... |
65 |
2.4.5. Рационализация ........................................................................ |
67 |
2.5. Эйлеровы циклы ................................................................................. |
67 |
2.6. Гамильтоновы циклы ......................................................................... |
70 |
Задачи и упражнения ................................................................................. |
73 |
Глава 3. Экстремальные задачи на графах ............................................................. |
75 |
3.1. Независимые множества, клики, вершинные покрытия ................. |
75 |
3.1.1. Три задачи ................................................................................. |
75 |
3.1.2. Стратегия перебора для задачи о независимом множестве .. |
77 |
3.1.3. Рационализация ........................................................................ |
78 |
3.1.4. Хордальные графы ................................................................... |
79 |
3.1.5. Эвристики для задачи о независимом множестве ................. |
80 |
3.1.6. Приближенный алгоритм для задачи о вершинном покры- |
|
тии ............................................................................................. |
82 |
3.1.7. Перебор максимальных независимых множеств ................... |
82 |
3.2. Раскраски ............................................................................................. |
85 |
3.2.1. Раскраска вершин ..................................................................... |
85 |
3.2.2. Переборный алгоритм для раскраски ..................................... |
86 |
3.2.3. Рационализация ........................................................................ |
87 |
3.2.4. Хордальные графы ................................................................... |
88 |
3.2.5. Раскраска ребер ........................................................................ |
90 |
3.3. Паросочетания .................................................................................... |
93 |
3.3.1. Паросочетания и реберные покрытия .................................... |
93 |
3.3.2. Метод увеличивающих цепей ................................................. |
94 |
3.3.3. Паросочетания в двудольных графах ..................................... |
96 |
3.3.4. Паросочетания в произвольных графах |
|
(алгоритм Эдмондса) .............................................................. |
99 |
3.4. Оптимальные каркасы ...................................................................... |
101 |
3.4.1. Задача об оптимальном каркасе и алгоритм Прима ............ |
101 |
3.4.2. Алгоритм Краскала ................................................................ |
104 |
3.5. Жадные алгоритмы и матроиды ...................................................... |
105 |
304 |
|
|
3.5.1. Матроиды ................................................................................ |
106 |
|
3.5.2. Теорема Радо – Эдмондса ...................................................... |
107 |
|
3.5.3. Взвешенные паросочетания .................................................. |
109 |
Упражнения ................................................................................................. |
110 |
|
Часть 2. |
Модели вычислений ............................................................................. |
112 |
Исторические сведения ........................................................................................... |
112 |
|
Глава 1. |
Тьюрингова модель переработки информации ..................................... |
114 |
|
1.1. Алгебра тьюринговых программ .................................................... |
116 |
|
1.2. Начальное математическое обеспечение ....................................... |
118 |
|
1.3. Методика доказательства правильности программ ...................... |
120 |
|
1.4. Вычислимость и разрешимость ...................................................... |
121 |
|
1.5. Вычисление числовых функций ..................................................... |
122 |
|
1.6. Частично-рекурсивные функции .................................................... |
123 |
|
1.7. Универсальная тьюрингова программа и пример невычислимой |
|
|
функции ............................................................................................. |
127 |
|
1.8. Об измерении алгоритмической сложности задач ........................ |
129 |
Глава 2 |
Абак ........................................................................................................... |
132 |
|
2.1. Основные определения .................................................................... |
132 |
|
2.2. Примеры неразрешимости .............................................................. |
134 |
Глава 3. |
Алгорифмы Маркова ............................................................................... |
138 |
Глава 4. |
Равнодоступная адресная машина .......................................................... |
141 |
Глава 5. |
Формальные языки .................................................................................. |
145 |
|
5.1. Основные понятия и обозначения .................................................. |
145 |
|
5.2. Способы задания формальных языков ........................................... |
147 |
|
5.3. Регулярные выражения .................................................................... |
148 |
|
5.4. Решение уравнений в словах ........................................................... |
149 |
|
5.5. Автоматное задание языков ............................................................ |
151 |
|
5.6. Применение конечных автоматов в программировании .............. |
157 |
Глава 6. |
Логическое программирование .............................................................. |
163 |
|
6.1. Язык предикатов ............................................................................... |
163 |
|
6.2. Некоторые сведения из математической логики ........................... |
167 |
|
6.3. Примеры формальных доказательств ............................................. |
170 |
|
6.4. Элементы языка Пролог .................................................................. |
174 |
Часть 3. |
Структуры данных ................................................................................... |
176 |
|
Введение ................................................................................................... |
176 |
Глава 1. |
Списки ....................................................................................................... |
184 |
|
1.1. Общие сведения о списках .............................................................. |
184 |
|
1.2. Списки с прямым доступом ............................................................. |
188 |
|
1.3. Списки с последовательным доступом .......................................... |
190 |
|
1.4. Некоторые дополнительные операции со связными списками ... |
195 |
|
1.5. Моделирование списков с последовательным доступом при по- |
|
|
мощи массивов ................................................................................. |
196 |
|
|
305 |
|
1.6. Деревья и графы ............................................................................... |
198 |
Глава 2. |
Разделенные множества .......................................................................... |
202 |
|
2.1. Операции над разделенными множествами ................................... |
202 |
|
2.2. Примеры использования разделенных множеств ......................... |
204 |
|
2.3. Представление разделенных множеств с помощью массива ....... |
206 |
|
2.4. Представление разделенных множеств с помощью древовид- |
|
|
ной структуры ................................................................................... |
206 |
|
2.5. Представление разделенных множеств с использованием ран- |
|
|
гов вершин ........................................................................................ |
210 |
|
2.6. Представление разделенных множеств с использованием ран- |
|
|
гов вершин и сжатия путей .............................................................. |
214 |
|
2.7. Анализ трудоемкости ....................................................................... |
215 |
Глава 3. |
Приоритетные очереди ............................................................................ |
221 |
|
3.1. Основные определения .................................................................... |
221 |
|
3.2. Представление приоритетной очереди с помощью d-кучи .......... |
222 |
|
3.3. Применение приоритетных очередей в задаче сортировки ......... |
234 |
|
3.4. Нахождения кратчайших путей в графе ......................................... |
237 |
Глава 4. Объединяемые приоритетные очереди .................................................. |
239 |
|
|
4.1. Левосторонние кучи ......................................................................... |
239 |
|
4.2. Ленивая левосторонняя и самоорганизующиеся кучи .................. |
253 |
|
4.3. Биномиальные и фибоначчиевы кучи ............................................ |
258 |
|
4.4. Тонкие кучи ...................................................................................... |
263 |
|
4.5. Толстые кучи ..................................................................................... |
271 |
Глава 5. |
Поисковые деревья .................................................................................. |
288 |
|
5.1. Двоичные деревья поиска ................................................................ |
288 |
|
5.2. Красно-черные деревья .................................................................... |
293 |
|
5.3. Б-деревья ........................................................................................... |
297 |
Список литературы .................................................................................................. |
302 |
306
Владимир Евгеньевич Алексеев Владимир Александрович Таланов
ГРАФЫ. МОДЕЛИ ВЫЧИСЛЕНИЙ. СТРУКТУРЫ ДАННЫХ
Учебник
Формат 70×108 1/16. Бумага офсетная. Гарнитура Таймс. Печать офсетная. Уч.-изд. 21,7. Усл.печ.л. 26,8.
Тираж 300 экз. Заказ
Издательство Нижегородского госуниверситета. 603950, Н. Новгород, пр. Гагарина, 23.
Типография ННГУ. 603000, Н. Новгород, ул. Б. Покровская, 37.
Лицензия ПД №18-0099 от 04.05.2001
307