傳遞閉包大概就是。。
先將一張圖用一個矩陣表示出來,矩陣中的a[i][j]=1表示i~j有一條直接相連的邊。這樣就得到一個0/1矩陣。傳遞閉包算法的目的就是根據以上的初始矩陣,探索出最終的矩陣,表示根據初始的直接連接關係,從初始矩陣擴展出一個包括間接連接關係的最終矩陣。這個最終矩陣就是傳遞閉包矩陣。
概念參考:QWQ
這裏闡述了傳遞閉包與矩陣乘法的關係,看不懂先留着:QWQQ
很容易想到傳遞閉包可以用Floyd求。
void floyd()
{
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(a[i][k]&&a[k][j])
a[i][j]=1;
}
}
其中a[][]是個bool數組。時間複雜度n^3,大數據慎用。
應用大概是以這樣的姿勢:codevs 1506 傳話