mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-12-08 19:06:00 +00:00
22 lines
2.0 KiB
Markdown
22 lines
2.0 KiB
Markdown
# Система непересекающихся множеств
|
||
|
||
**Система непересекающихся множеств** это структура данных (также называемая структурой данной поиска пересечения или
|
||
множеством поиска слияния), которая управляет множеством элементов, разбитых на несколько непересекающихся подмножеств.
|
||
Она предоставляет около-константное время выполнения операций (ограниченное обратной функцией Акерманна) по *добавлению
|
||
новых множеств*, *слиянию существующих множеств* и *опеределению, относятся ли элементы к одному и тому же множеству*.
|
||
|
||
Применяется для хранения компонент связности в графах, в частности, алгоритму Краскала необходима подобная структура
|
||
данных для эффективной реализации.
|
||
|
||
Основные операции:
|
||
|
||
- *MakeSet(x)* - создаёт одноэлементное множество {x},
|
||
- *Find(x)* - возвращает идентификатор множества, содержащего элемент x,
|
||
- *Union(x,y)* - объединение множеств, содержащих x и y.
|
||
|
||
После некоторых операций *объединения*, некоторые множества собраны вместе
|
||
|
||
## Ссылки
|
||
- [СНМ на Wikipedia](https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BD%D0%B5%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D0%BA%D0%B0%D1%8E%D1%89%D0%B8%D1%85%D1%81%D1%8F_%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2)
|
||
- [СНМ на YouTube](https://www.youtube.com/watch?v=bXBHYqNeBLo)
|