PAGE0002 连通性问题
问题描述:用一个整数表示某种类型的一个对象,用整数对p-q表示两个对象是连通的,假设联通关系是对称的,可传递的,给定整数对的一个序列,连通算法的任务是输出那些提供新的连通关系的对。
具体应用:
1、整数可以表示大规模网络中的计算机,而对表示网络中的连接。这样就可利用程序确定是需要建立新的p和q能够通信的连接,还是利用已有连接建立通信路径。
2、整数可以表示电路中的连接点,而对表示连接这些点之间的连线,如果有可能,可以利用程序找出连接所有点并且没有额外连接的一种方式
3、连通性可用来断言两个变量名是否的等价
问题分析:
1、该问题只要求知道任意给定对p-q是否是连通的,并不要求给出连接那个对的任何方式,添加这样一个要求会使问题更加困难
2、我们也可以要求更少的信息,例如我们只想回答这样的问题:“M个连接足以把N个对象连接起来吗”,由图论只是知道所有N个对象是连通的,当且仅当连通算法输出的对的个数为N-1,因此可以修改求解连通问题的程序,增加一个计数器就可以回答这个问题。
确定算法的基本操作:
努力确定算法的基本操作很重要,这使我们为连通问题设计的算法可以用于许多类似的问题。
每当我们得到一个新队时,必须首先确定它是否表示一个新的连接,然后把新的连接信息合并到已得到的对象的连通关系中。 把这两个任务封装成为抽象操作,用整数输入值表示抽象集合中的元素,然后设计算法和数据结构,使其:
查找包含给定数据项的集合
用它们的并集替换包含两个给定数据项的集合
输入对的集合称为图,输出对的集合称为生成树,过程中的集合表示连通分量,即那些给定分量中的任何两个对象是连通的对象的集合