Уровень алгоритма

Алгоритм Шилоаха-Вишкина поиска компонент связности: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
[непроверенная версия][досмотренная версия]
Общее описание алгоритма
 
Нет описания правки
 
(не показаны 4 промежуточные версии 2 участников)
Строка 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 />
[[Категория:Начатые статьи]]


<references />
[[en:Shiloach-Vishkin algorithm for finding the connected components]]

Текущая версия от 11:49, 6 июля 2022


Алгоритм Шилоаха-Вишкина
Последовательный алгоритм
Последовательная сложность [math]\displaystyle{ O((m + n) \ln n) }[/math]
Объём входных данных [math]\displaystyle{ O(m) }[/math]
Объём выходных данных [math]\displaystyle{ n }[/math]
Параллельный алгоритм
Высота ярусно-параллельной формы [math]\displaystyle{ O(\ln n) }[/math]
Ширина ярусно-параллельной формы [math]\displaystyle{ n + 2m }[/math]


Свойства и структура алгоритма

Общее описание алгоритма

Алгоритм Шилоаха-Вишкина[1] (англ. Shiloach-Vishking Algorithm) предназначен для поиска компонент связности неориентированного графа. Используется структура данных, аналогичная системе непресекающихся множеств. В модели CRCW PRAM алгоритм приписывает каждой вершине идентификатор компоненты связности за время [math]\displaystyle{ O(\ln n) }[/math] на [math]\displaystyle{ n + 2m }[/math] процессорах.

Математическое описание алгоритма

Вычислительное ядро алгоритма

Макроструктура алгоритма

Схема реализации последовательного алгоритма

Алгоритм изначально параллельный и при последовательной реализации фактически превращается в систему непресекающихся множеств.

Последовательная сложность алгоритма

Последовательная сложность алгоритма Шилоаха-Вишкина [math]\displaystyle{ O((m + n) \ln n) }[/math].

Информационный граф

Ресурс параллелизма алгоритма

Время работы алгоритма составляет [math]\displaystyle{ O(\ln n) }[/math] на [math]\displaystyle{ n + 2m }[/math] процессорах в модели CRCW PRAM.

Входные и выходные данные алгоритма

Свойства алгоритма

Программная реализация алгоритма

Особенности реализации последовательного алгоритма

Возможные способы и особенности параллельной реализации алгоритма

Результаты прогонов

Выводы для классов архитектур

Литература

  1. ↑ Shiloach, Yossi, and Uzi Vishkin. “An [math]\displaystyle{ 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.