Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Графы. Модели вычислений. Структуры данных

..pdf
Скачиваний:
231
Добавлен:
01.05.2014
Размер:
2.53 Mб
Скачать

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

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. 4960.

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. 93102.

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. 202211.

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. 306318.

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. 309314.

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