看板 Prob_Solve 關於我們 聯絡資訊
四環(4-cycle) 在圖上我們稱他<a,b,c,d,a>使得四個點a,b,c,d依序相鄰 我想問問大神存不存在比O(n^3)還快地找四環計數算法 算出一張simple graph上有幾個4-cycle 拜託了>_< 我想過judge -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.207.24 ※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1503418629.A.400.html
hcsoso: 無向圖嗎? 有 O(n^2) 的算法 08/23 01:25
hcsoso: 對每個點 x, 以及每對 x 的鄰居 (y,z), A[y,z]++ 08/23 01:28
hcsoso: 最後檢查有沒有某個 A[u,v] 的值大於 1 08/23 01:29
hcsoso: 如果圖的邊數不多的話有更外的算法 08/23 01:36
hcsoso: http://www.tau.ac.il/~nogaa/PDFS/ayz4.pdf O(m^{4/3}) 08/23 01:38
hcsoso: *快 08/23 01:38
hcsoso: 抱歉,上面的算法應改進成一發現某格值已為 1 而要加為 2 08/23 02:10
hcsoso: 時就要停下 08/23 02:10
hcsoso: 不然最糟時會是 O(n^3)... 08/23 02:11
rareone: 謝謝H大的回覆 我花點時間啃一下論文 08/23 07:41
FRAXIS: 我之前有想過一個 O(n^2) 時間 O(n) 空間的方法 08/23 08:05
FRAXIS: 不過只能偵測 4-cycle 存在而不是 counting 08/23 08:06
FRAXIS: 從每個點作 BFS ,如果鄰居的鄰居有交集就是有4-cycle 08/23 08:07
FRAXIS: 因為判斷鄰居的鄰居的交集頂多使用 O(n) 空間 08/23 08:07
FRAXIS: 所以總共的時間複雜度是O(n^2) 空間複雜度是O(n) 08/23 08:07
hcsoso: 哎呀我沒有意識到原 po 需要的是計數不是存在性…上面的 08/23 08:51
hcsoso: 推文是存在與否的算法 08/23 08:51
hcsoso: 另外請問 a,c 或 b,d 可相同嗎? 08/23 08:58
FRAXIS: 但是論文可以解 counting 吧 雖然需要矩陣乘法 08/23 08:58
hcsoso: 我指的是連結前面的那個 08/23 09:01
rareone: 了解 所以只需要要快一點的矩陣乘法就可以壓下去 08/25 11:18
firejox: 用矩陣乘法就算的出來了 08/28 19:41