码迷,mamicode.com
首页 > 编程语言 > 详细

Union-Find 并查集算法

时间:2019-12-21 20:28:20      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:bsp   and   nts   就会   结合   结构   count()   数据结构   initial   

一、动态连通性(Dynamic Connectivity)

Union-Find 算法(中文称并查集算法)是解决动态连通性(Dynamic Conectivity)问题的一种算法。动态连通性是计算机图论中的一种数据结构,动态维护图结构中相连信息。简单的说就是,图中各个节点之间是否相连、如何将两个节点连接,连接后还剩多少个连通分量。有点像我们的微信朋友圈,在社交网络中,彼此熟悉的人之间组成自己的圈子,熟悉之后就会添加好友,加入新的圈子。微信用户有几亿人,如何快速计算任意两个用户是否同属于一个圈子呢?计算机是如何将两个用户连接起来的呢?整个微信用户共有几个独立的圈子呢?Union-Find就可以解决上述问题。


二、基本概念
结合下面图的例子来了解基本概念:
技术图片
 
图中8个节点都是独立互不连通的,也就是一共有8个连通分量。

连通是一种等价关系,也就是说具有如下三个性质:

1、自反性:节点pp是连通的。

2、对称性:如果节点pq连通,那么qp也连通。

3、传递性:如果节点pq连通,qr连通,那么pr也连通。

如果将节点1和节点2进行连接,那连通分量就剩余7个,如下图:
技术图片
如何在计算中实现这些操作呢?
class UF:
    def union(self,p,q): # initialize N sites with integer names
    def connected(self,p,q): #return true if p and q are in the same component
    def count(): #number of components

 

 

Union-Find 并查集算法

标签:bsp   and   nts   就会   结合   结构   count()   数据结构   initial   

原文地址:https://www.cnblogs.com/gczr/p/12077934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!