<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      更快的無向圖三元環計數

      一個一個數是不能突破 \(O(m \sqrt m)\) 的下界的。
      設矩陣乘法的復雜度為 \(O(n^\omega)\),這里提供一種 \(O(m^{\frac{2\omega}{\omega + 1}})\) 的做法。
      例如,使用 Strassen 方法可以將其復雜度降為 \(O(m^{1.475})\)。


      算法1. 矩陣乘法

      考慮我們枚舉一條邊 \((a, b)\),接下來需要計數有多少個點 \(c\) 滿足 \((a, c), (b, c)\) 均存在。
      設圖的鄰接矩陣為 \(A\),則由 \((a, b)\) 邊參與形成的三元環個數即為 \(\sum \limits_{i = 1}^{n} A_{a, i} \times A_{i, b}\)
      不難看出這是一個矩陣乘法的形式。我們可以求出來 \(B = AA^T\),然后 \(B_{a, b}\) 即為所求。

      這里需要計算一次矩陣乘法,然后 \(O(m)\) 枚舉邊。
      由于矩陣乘法不會低于 \(O(n^2)\),所以復雜度為 \(O(n^\omega)\)。

      算法 1 的好處在于,不是一個一個數的,可以突破 \(O(m \sqrt m)\) 的下界。
      不過稀疏圖上表現很差就是了。


      算法2. 生成樹

      這里是另一個算法。
      假設圖連通,我們求圖的一個生成樹出來。

      然后將三元環拆成以下四種情況:

      1. 由三個樹邊組成。顯然不成立。
      2. 由一個樹邊兩個非樹邊組成。
      3. 由兩個樹邊一個非樹邊組成。
      4. 由三個非樹邊組成。

      首先看情況 2。
      我們枚舉一個點 \(p\),然后標記所有通過非樹邊與 \(p\) 相連的點。
      然后判斷這些點之間由多少祖先關系即可。
      這部分的復雜度為 \(O(m)\)。

      然后看情況 3。
      我們枚舉一條非樹邊 \((a, b)\),然后判斷 \(a, b\) 兩個點在樹上的距離是否為 \(2\) 即可。
      距離為 2 可能是 fa[fa[a]] = b 或者 fa[fa[b]] = a 或者 fa[a] = fa[b]。
      這部分復雜度 \(O(m)\)。

      最后,將所有非樹邊去掉,然后遞歸處理上述過程即可。

      Q:該算法復雜度?
      考慮每次刪除一個生成樹,每個點的度至少減一。
      所以該過程至多進行 \(n - 1\) 輪。
      復雜度即為 \(O(nm)\)

      如果閾值分治并結合暴力該算法也可以分析得到 \(O(m \sqrt m)\) 的復雜度。在此不表。
      反正也是一個一個數的,不會低于 \(O(m \sqrt m)\)。
      不過在稀疏隨機圖上表現會很好。


      閾值分治

      上述兩個算法分別在稠密圖和稀疏圖上表現良好。
      這里使用閾值分治結合一下。

      考慮我們先進行 \(B\) 輪算法 2,然后去掉所有的孤點,對于剩下的點使用算法 1。
      所有點的總度數為 \(O(m)\),進行 \(B\) 輪之后剩下的點在原圖上的度數均 \(>B\),而這樣的點只有 \(O(\frac{m}{B})\) 個。
      所以兩部分的復雜度和為 \(O(mB + \left( \frac{m}{B} \right)^\omega)\)
      \(B = m^{\frac{\omega - 1}{\omega + 1}}\) 最優,總復雜度為 \(O(m^{\frac{2\omega}{\omega + 1}})\)


      實現

      當然,Strassen 方法常數巨大。
      所以我實現矩陣乘的時候直接寫的壓位。復雜度 \(O(\frac{n^3}{w})\)。
      總復雜度可以平衡到 \(O(\frac{m \sqrt m}{w^{\frac{1}{4}}})\)。
      但是還是跑的很慢。
      1.02s

      另外,觀察到隨機圖算法 2 遠遠跑不滿。
      所以可以嘗試把 \(B\) 縮小并且不改變矩陣大小。
      (當然這是能卡的)
      這道題給 \(B\) 縮小了 64 倍仍然能過。
      266ms


      拜謝 UT 提供的復雜度分析指導 orz orz orz

      posted @ 2025-07-12 15:56  Houraisan_Kaguya  閱讀(74)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 无码中文字幕人妻在线一区| 在线看av一区二区三区| 狠狠亚洲色一日本高清色| 97一期涩涩97片久久久久久久| 日韩av在线一区二区三区| 亚洲国产一区二区在线| 人妻中文字幕精品系列| 久久亚洲精精品中文字幕| 天堂中文8资源在线8| 99国产精品永久免费视频| 91久久偷偷做嫩草影院免费看| 精品精品亚洲高清a毛片| 国产成人不卡无码免费视频| 国语对白做受xxxxx在线中国| 亚洲高清国产自产拍av| 欧洲精品亚洲精品日韩专区| 亚洲国产精品一区二区视频 | 亚洲综合精品一区二区三区| 亚洲爆乳WWW无码专区| 成人亚欧欧美激情在线观看| 正在播放的国产A一片| 国产在线不卡精品网站| 在线看av一区二区三区| 国产精品无遮挡猛进猛出| 亚洲色大成网站WWW国产| 青青草无码免费一二三区| 日本久久一区二区三区高清| 亚洲成人资源在线观看| 无码高潮爽到爆的喷水视频| 亚洲欧洲日产国产av无码| 91亚洲国产成人久久蜜臀| 亚洲成A人片在线观看无码不卡 | 日韩大片看一区二区三区| 黑森林福利视频导航| 国产v亚洲v天堂a无码99| 国产精品无码a∨麻豆| 99久久精品午夜一区二区| 色老头亚洲成人免费影院| 国产地址二永久伊甸园| 亚洲成av人片色午夜乱码| 91精品91久久久久久|