Алгоритм Шилоаха-Вишкина поиска компонент связности: различия между версиями
Перейти к навигации
Перейти к поиску
| [непроверенная версия] | [непроверенная версия] |
Daryin (обсуждение | вклад) (Общее описание алгоритма) |
ASA (обсуждение | вклад) |
||
| Строка 8: | Строка 8: | ||
}} | }} | ||
| − | == Свойства и структура | + | == Свойства и структура алгоритма == |
=== Общее описание алгоритма === | === Общее описание алгоритма === | ||
'''Алгоритм Шилоаха-Вишкина'''<ref>Shiloach, Yossi, and Uzi Vishkin. “An <math>O(\log n)</math> Parallel Connectivity Algorithm.” Journal of Algorithms 3, no. 1 (March 1982): 57–67. doi:10.1016/0196-6774(82)90008-6.</ref> (англ. Shiloach-Vishking Algorithm) предназначен [[Связность в графах|для поиска компонент связности]] неориентированного графа. Используется структура данных, аналогичная [[Система непересекающихся множеств|системе непресекающихся множеств]]. В модели CRCW PRAM алгоритм приписывает каждой вершине идентификатор компоненты связности за время <math>O(\ln n)</math> на <math>n + 2m</math> процессорах. | '''Алгоритм Шилоаха-Вишкина'''<ref>Shiloach, Yossi, and Uzi Vishkin. “An <math>O(\log n)</math> Parallel Connectivity Algorithm.” Journal of Algorithms 3, no. 1 (March 1982): 57–67. doi:10.1016/0196-6774(82)90008-6.</ref> (англ. Shiloach-Vishking Algorithm) предназначен [[Связность в графах|для поиска компонент связности]] неориентированного графа. Используется структура данных, аналогичная [[Система непересекающихся множеств|системе непресекающихся множеств]]. В модели CRCW PRAM алгоритм приписывает каждой вершине идентификатор компоненты связности за время <math>O(\ln n)</math> на <math>n + 2m</math> процессорах. | ||
| − | === Математическое описание === | + | === Математическое описание алгоритма === |
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
=== Макроструктура алгоритма === | === Макроструктура алгоритма === | ||
| − | === | + | === Схема реализации последовательного алгоритма === |
Алгоритм изначально параллельный и при последовательной реализации фактически превращается в [[Система непересекающихся множеств|систему непресекающихся множеств]]. | Алгоритм изначально параллельный и при последовательной реализации фактически превращается в [[Система непересекающихся множеств|систему непресекающихся множеств]]. | ||
| Строка 25: | Строка 25: | ||
=== Информационный граф === | === Информационный граф === | ||
| − | === | + | === Ресурс параллелизма алгоритма === |
Время работы алгоритма составляет <math>O(\ln n)</math> на <math>n + 2m</math> процессорах в модели CRCW PRAM. | Время работы алгоритма составляет <math>O(\ln n)</math> на <math>n + 2m</math> процессорах в модели CRCW PRAM. | ||
| − | === | + | === Входные и выходные данные алгоритма === |
| − | === Свойства алгоритма=== | + | === Свойства алгоритма === |
| − | == Программная реализация | + | |
| + | == Программная реализация алгоритма == | ||
=== Особенности реализации последовательного алгоритма === | === Особенности реализации последовательного алгоритма === | ||
| − | === | + | === Локальность данных и вычислений === |
| − | === Возможные способы и особенности реализации | + | ==== Локальность реализации алгоритма ==== |
| + | ===== Структура обращений в память и качественная оценка локальности ===== | ||
| + | ===== Количественная оценка локальности ===== | ||
| + | === Возможные способы и особенности параллельной реализации алгоритма === | ||
=== Масштабируемость алгоритма и его реализации === | === Масштабируемость алгоритма и его реализации === | ||
| + | ==== Масштабируемость алгоритма ==== | ||
| + | ==== Масштабируемость реализации алгоритма ==== | ||
=== Динамические характеристики и эффективность реализации алгоритма === | === Динамические характеристики и эффективность реализации алгоритма === | ||
=== Выводы для классов архитектур === | === Выводы для классов архитектур === | ||
=== Существующие реализации алгоритма === | === Существующие реализации алгоритма === | ||
| + | |||
== Литература == | == Литература == | ||
| + | <references /> | ||
| − | + | [[Категория:Начатые статьи]] | |
Версия 14:21, 29 июля 2015
| Алгоритм Шилоаха-Вишкина | |
| Последовательный алгоритм | |
| Последовательная сложность | O((m + n) \ln n) |
| Объём входных данных | O(m) |
| Объём выходных данных | n |
| Параллельный алгоритм | |
| Высота ярусно-параллельной формы | O(\ln n) |
| Ширина ярусно-параллельной формы | n + 2m |
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Алгоритм Шилоаха-Вишкина[1] (англ. Shiloach-Vishking Algorithm) предназначен для поиска компонент связности неориентированного графа. Используется структура данных, аналогичная системе непресекающихся множеств. В модели CRCW PRAM алгоритм приписывает каждой вершине идентификатор компоненты связности за время O(\ln n) на n + 2m процессорах.
1.2 Математическое описание алгоритма
1.3 Вычислительное ядро алгоритма
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
Алгоритм изначально параллельный и при последовательной реализации фактически превращается в систему непресекающихся множеств.
1.6 Последовательная сложность алгоритма
Последовательная сложность алгоритма Шилоаха-Вишкина O((m + n) \ln n).
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
Время работы алгоритма составляет O(\ln n) на n + 2m процессорах в модели CRCW PRAM.
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
2 Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.2.1 Локальность реализации алгоритма
2.2.1.1 Структура обращений в память и качественная оценка локальности
2.2.1.2 Количественная оценка локальности
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.4.1 Масштабируемость алгоритма
2.4.2 Масштабируемость реализации алгоритма
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
- ↑ Shiloach, Yossi, and Uzi Vishkin. “An O(\log n) Parallel Connectivity Algorithm.” Journal of Algorithms 3, no. 1 (March 1982): 57–67. doi:10.1016/0196-6774(82)90008-6.