沃舍尔算法,是一种特殊的求闭包的高效算法,其目的是构造一个传递的二元关系,因为避免了由矩阵乘法带来的大量的乘法运算,所以运用的比较广,(用它也可以来判断图的联通性),其实沃舍尔的这个算法证明,借用了图的一些性质(用到了关系矩阵,还可以由图来表示,书上应该也给出了讲解);
一个图由N个顶点组成,现在给定了一个二元关系(也可以说是一个函数,实质上是构造了映射关系),我们现在来看,设这些顶点依次为x1,x2......xn,如果该关系中有(xi,xj)则在两点间加一条有向边;设这个图为基图G;
现在来看,图G中必然存在至少一组这样的关系,xi与xj有边,xj与xk有边,但是xi与xk没有边;否则该关系本身就是一个传递关系了;(不知道你现在有没有理解到,构造这个闭包实际上就是加边,如果有上述的情况,就在xi,xk间加一条边,加边和矢量三角形法则类似,但是加完边了,可能又会产生新的这样的情况,那么就要一直进行下去,继续加边,但是这样加边,到N此之后一定可以完成,这一点极其重要,你自己画个图试一下这个过程,就会很快明白为什么一定能行,这也是通过R+R^1....R^n求出闭包这种方法的依据所在;任何要加的边一定能在这个幂运算中产生);但是对大矩阵这样做是不划算的;沃舍尔提供了一种不需要乘法的运算;首先我们理解最后的闭包,是把所有顶点需要加的边都加完了。这样才叫闭包,否则就不是闭包,那么现在来看,如果我加的边,构成的圈只经过了x1那么如何构造出只经过x1,x2的边呢,这样的边可以分为两种;只经过了x1的边肯定满足,经过x2的边可以看成
循环
循环构造