三元环 四元环

枚举三元环

枚举无向图三元环,将无向图转变成有向图,对于一条无向边,定义它的方向为度数大的点连向度数小的点。

我们可以先枚举一个点\(i\),再枚举i连出的点\(j\),再枚举\(j\)连出的点\(k\),如果\((i,k)\)有边,\(ans++\)

复杂度:O($m \sqrt{m} $)

复杂度证明:考虑枚举\(i\)\(j\)等同于枚举每条边\((i,j)\),如果\(j\)的度数小于\(\sqrt{m}\) ,那么对于每一条边\((i,j)\) 枚举的\(k\)的次数小于$ \sqrt{m}$ 。如果\(j\)的度数大于\(\sqrt{m}\) ,那么这样的\(j\) 的不会超过\(\sqrt{m}\) 个,又\(i\) 点度数比\(j\)大,这样的\(i\)点也不会超过\(\sqrt{m}\)个,计算次数为

\(cnt=\sum_{j,deg[j]>\sqrt{m}}indeg(j)*outdeg(j)<=\sqrt{m}*\sum_{j,deg[j]>\sqrt{m}}outdeg(j)<=\sqrt{m}*m\)

枚举四元环

同三元环,将无向图转变成有向图,对于一条无向边,定义它的方向为度数大的点连向度数小的点。

我们可以先枚举一个点\(i\),再枚举i连出的点\(j\),再枚举\(j\)连出的点\(k\)\(ans+=num(i,j),num(i,j)++\)

复杂度:\(O(m*\sqrt{m})\)

复杂度证明:同上

猜你喜欢

转载自www.cnblogs.com/zhongzero/p/11788484.html