Warshall演算法 未完成版4 6

2021-07-30 03:33:01 字數 1686 閱讀 2995

a是乙個基數為n的集合,r是a上的乙個關係,則有r∞

=r∪r

2∪r3

∪⋯∪r

n . 換句話說,計算不需要用到r的n次以上的冪。

a,b是a中的元素,假設是r中一條從a到b的路,那麼都在r中。如果和是同乙個頂點,約定j > i,那麼這段路能被劃分為三個部分。第一段從a到,第二段從到,第三段從到b。中間的第二段是個迴圈,因為,所以我們除去重複然後連線前後兩段。這樣我們就得到一條更短的,從a到b的路。(圖4.43)

現在是a到b最短的路。如果,那麼都是不同的頂點。否則,根據先前的討論,我們能找到一條更短的路。因此,這條路的長度最多為(因為的基數為)。如果,相似地,頂點是不同的,所以這條路的長度最多為。總之,如果,那麼只要。因此.

例1用的方法都有明顯的缺點。畫圖的方法對於巨大的集合不適用,它本身也不是系統化的方法。矩陣的方法是通用的且系統化得足以應用於計算機程式設計,但是對於龐大的矩陣,它就顯得效率低下、過於浪費資源。幸運的是,有乙個更加高效地計算傳遞閉包的演算法。就是被熟知的沃夏爾演算法,我們馬上會講到。

設集合,是上的關係。如果是中的路,那麼任意除了和都叫作路的內部點。現在,對於,我們用以下方法定義乙個布林矩陣。當到之間存在一條路,其內部點來自集合,那麼的第i行第j列位置為1。

因為任意的頂點一定在集合中,它所代表的矩陣某個位置為1,當且僅當與之間有路。也就是說,。如果我們定義,那麼我們就得到乙個數列,。我們會展示怎麼從計算得到。這樣我們就能從一步一步,經過n步計算得到。這個過程被稱為沃夏爾演算法。和的冪級是不一樣的,這種不同使得它能大量節省計算的傳遞閉包的步驟。

假設和。如果,就說明與有路,而且這條路只經過一些在集合的頂點。如果沒有經過,那麼肯定經過了集合中的點,即。如果經過了,那麼情況就像圖4.44所展示的那樣。在定理2的證明中,我們假定了內部點都是互異的。因此只會在路中出現一次,所以子路1和子路2的點必然來自集合。這意味著和。

綜上,只要

(1) 或者

(2)這就是沃夏爾演算法的基本內容。如果的i,j位置為1,根據(1),對應位置也為1。根據(2),如果的i,k位置為1,且k,j位置也為1,那麼的i,j位置就為1。根據以下過程我們就能從計算出。

第一步 轉移所有1到。

第二步 列出中第k行中為1的列數,第k列為1的行數

第三部 將中,位置設為1。

例二 思考定義在例一的關係r,那麼

和n=4

第一步我們要計算那麼。在2,1位置和1,2位置都為1,因此只是在基礎上,在2,2位置變為1。

現在我們計算,那麼,我們必須考慮第2列和第二行的位置。在位置1,2;2,2;2,1;2,3都為1。

因此,為了得到,我們必須在的基礎上將1,1;1,2;1,3;2,1;2,2;2,3位置置為1。我們看到

繼續這個過程,在位置1,3;2,3;3,4為1。為了得到,我們要將1,4;2,4置為1。那麼

最後,第4列的1,2,3位置為1,不過沒有1在第4行,所以沒有新的位置被置為1,那麼,我們就得到了例一的結果。

例二說明的過程產生了一下的演算法closure來計算基於矩陣關係r的傳遞閉包。

這個演算法是被建立在精確的執行出我們先前寫出來的過程。如果稍作修改,它能稍微提高一點效率。如果我們認為賦值和比較是一步完成的,那麼兩個布林矩陣a、b的布林積需要步,因為我們要計算個元素,每個需要n次比較。去計算全部的積,我們需要步,因為需要步來計算矩陣乘積。如果直接用公式

會需要步來實現(忽略最終連線)。因此沃夏爾演算法是對於直接用公式(1)計算的重大改進。

RuleML 入門 未完成版

此文件提供的資訊是初始版本 ruleml 入門 概要此文件解釋ruleml,規則標記語言。ruleml是在全球資訊網上發布和共享規則的標記語言。ruleml是xml,rdf,xslt和owl的子集。資料儲存語言核心ruleml的核心就是基於資料儲存的洪氏邏輯語言。資料記錄和sql,prolog語言存...

貪吃蛇 未完成版

當我乙個中午寫完下面的 時,突然感覺我也可以當大佬了 宣告 除了隱藏游標那個函式是上網扣的,其他均屬原創 include include include include using namespace std const int n 15 char sit n 1 n 1 ctl int d 4 2...

未完成作業

分治 1.一元三次方程求解 1015 2.迴圈比賽日程表 3.求方程的根 5.黑白棋子的移動 1310 6.光榮的夢想 2323 7.小車問題 1668 8.方程分f x 的根 9.求逆序對 1198 10.迴圈比賽 11.二分查詢 1135 12.麥森數 1030 動態規劃 挖地雷 取數字問題 搜...