【學習記錄】傳遞閉包

傳遞閉包大概就是。。
先將一張圖用一個矩陣表示出來,矩陣中的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 傳話

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章