定理二<br /> 设A是满足|A| = n 的一个集合,且R是A上的一个关系,那么有<br />R<sup>∞</sup> = R ∪ R<sup>2</sup> ∪ … ∪ R<sup>n</sup>.<br /> 换句话说, 计算R<sup>∞</sup>时不需要比n大的R的幂。<div><br />证明<br /> 设a和b是A中的元素,假设a,x<sub>1</sub>, x<sub>2</sub>, … , x<sub>m</sub>, b是R中一条从a到b的路径,也就是说(a, x<sub>1</sub>), (x<sub>1</sub>, x<sub>2</sub>), … , (x<sub>m</sub>, b)都在R中。<br />如果x<sub>i</sub>和x<sub>j</sub>是同一个点,i < j, 那么该路径可划分为三个块。首先,一条从a到x<sub>i</sub>的路径,然后是一条从x<sub>i</sub>到x<sub>j</sub>的路径,最后是<br />从x<sub>j</sub>到b的路径。因为x<sub>i</sub> = x<sub>j</sub>, 中间的路径是自循环的,所以我们可以略过它并把另两条路径拼接。这给予了我们一条更短的</div><div>从a到b的路径。</div><div> 现在使a,x<sub>1</sub>, x<sub>2</sub>, … , x<sub>k</sub>, b是从a到b的最短路径。若a ≠ b,则该路径上所有顶点都是不同的。否则前面的讨论告诉我们我们</div><div>能够找到一条更短的路径。因此该路径长度最多是n - 1(在|A| = n的情况下)。若a = b,根据相似的理由,a,x<sub>1</sub>, x<sub>2</sub>, … , x<sub>k</sub></div><div>是不同的,所以该路径的长度最多为n。换句话说,若a R<sup>∞ </sup>b,那么a R<sup>k</sup> b,其中k满足1 ≤ k ≤ n。因此R<sup>∞</sup> = R ∪ R<sup>2</sup> ∪ … ∪ R<sup>n</sup>.</div><div> 用来解决问题1的方法分别都有某些困难。绘图法对于大的集合、关系来说是不实用的,并且也不是系统化的。运用矩阵</div><div>的方法在一般情况下可用,且也是足够系统化以便电脑进行编程的,但它不够有效率,且构建大的矩阵的代价大到足以被</div><div>禁止使用。幸运的是,有一个更有效率的用来计算传递闭包的算法,它就是Warshall算法。</div><div> </div><div>Warshall算法</div><div> 设想有一个在集合A = {a<sub>1</sub>, a<sub>2</sub>, … , a<sub>n</sub>}上的关系R。若x<sub>1</sub>, x<sub>2</sub>, … , x<sub>m</sub>是R中的一条路径,那么除x<sub>1</sub>、x<sub>m</sub>外的任何顶点是这条路</div><div>径的内顶点。现在,对1 ≤ k ≤ n,我们定义一个布尔矩阵<b>W</b><sub>k</sub>. 当且仅当从a<sub>i</sub>到a<sub>j</sub>有R上的一条路径时,<b>W</b><sub>k</sub>的(i, j)位才为1,且</div><div>这条道路的内顶点来自集合{a<sub>1</sub>, a<sub>2</sub>, … , a<sub>k</sub>}。</div><div> 既然任何顶点都来自{a<sub>1</sub>, a<sub>2</sub>, … , a<sub>n</sub>},那么当且仅当在R上有某路径连接a<sub>i</sub>和a<sub>j</sub>时,<b>W</b><sub>n</sub>在(i, j)位为1。换句话说,<b>W</b><sub>n </sub>= <b>M</b><sub>R<sup>∞</sup></sub>。</div><div>若我们定义<b>W</b><sub>0</sub>为<b>M</b><sub>R</sub>,那么我们会得到一个首位是<b>M</b><sub>R</sub>,末位是<b>M</b><sub>R<sup>∞</sup></sub>的序列,我们会展现如何通过<b>W</b><sub>k-1</sub>去计算<b>W</b><sub>k</sub>。接着我们</div><div>会从矩阵<b>M</b><sub>R</sub>开始,一次前进一步,n次之后就能得到矩阵<b>M</b><sub>R<sup>∞</sup></sub>。这个流程被称作Warshall算法。矩阵与</div><div> </div>
08-07
936
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
09-03
04-25