前言
寫了兩個爛大街的東西,以及我研究時的一些阻礙和心路歷程。
點雙連通圖計數
設 \(b_i\) 表示 \(i\) 個點的有標號 無根 點雙連通圖個數。\(d_i\) 為 \(i\) 個點的 有根 連通圖個數,其 EGF 為 \(D(x) = \sum_i \frac{d_i}{i!}x^i\)。顯然 \(D(x)\) 可以用 城市規划 的方法求出(\(\ln\))。
重點思考如何在點雙和連通圖之間建立關系。嘗試剖析有根連通圖的結構:一個根,周圍可能存在着一些點雙連通分量,然后這些點雙連通分量中的點又連着一些連通圖。然而這只是很籠統的概述,我們把它細化。
首先我們稱一個 有根 點雙以及下面連着的一些連通圖為“一個部分”。那么把若干個部分的根 疊合 在一起就是一個有根連通圖。對於每個部分,考慮除根之外的所有在包含根的點雙上的點,從這一個點雙到“一個部分”,可以視作是將這些點 替換成一個有根連通圖。
然后思考點雙部分怎么做。首先我們需要將根隔離開來。根據這個,寫出一個部分的式子:
解釋:枚舉點雙的大小,包含根在內為 \(i+1\),雖然實際上只有 \(i\) 個點可以換成有根連通圖,但點雙部分的連接方案是 \(b_{i+1}\)。\(D^i(x)\) 表示將 \(i\) 個點每個都替換成一個有根連通圖,但直接乘冪眾所周知是 有序 拼接,為了而顯然這不應該有序,於是 \(/i!\) 消除其順序。
然后設一個機智的 EGF:\(B(x)=\sum_{i}\frac{b_{i+1}}{i!} x^i\),我們發現上式就是把 \(x\) 替換成了 \(D(x)\),即 \(B(D(x))\)。
最后還要將這些部分組合,然后用一個根拼接,於是:
然后套用擴展拉格朗日反演就可以 \(O(n\log n)\) 求出 \(B(x)\) 某一項的值了。
邊雙連通圖計數
和點雙用類似的思路,嘗試剖析連通圖的結構,建立其與特殊的邊雙連通圖的關系。設 \(b_i\) 為 \(i\) 個點的 有根 邊雙連通圖個數,\(d, D(x)\) 的定義同上。
那么對於一個有根連通圖,感覺邊雙的性質,根下面會掛上 一個 邊雙,邊雙上每一個點(包含根)都會 掛 上 若干 條邊,邊的另一端是一個有根連通圖。
根所在的邊雙中,每個點及其下面掛的一些連通圖,我們寫出它的式子:
非常顯然。那么這個圖就是這些部分的組合:
設 \(B(x)=\sum_{i}\frac{b_i}{i!}x^i\),即得:
同樣可以拉反 \(O(n\log n)\) 求出一項。
細節剖析與對比
由於點雙和邊雙的性質存在差異,兩者推出的式子不同,推導細節上也存在出入。
下面是我學習是遇到的困惑以及可能正確的解答。
無根 與 有根
為什么點雙的 \(b\) 是無根的而邊雙是有根的?
首先明確一點,就是這個邊雙的有根才是自然的。而點雙的推導中我們由於根非常特殊,將其從“部分”中去除,實際上就將根區分開來了,自然地形成了一個有根連通圖,\(b_{i+1}\) 僅僅是一種點雙的連接方案。換言之,這幅同樣的連通圖可能以很多中方法被考慮多次,但孤立開來的總是不同的點,相當於有根。
邊雙沒有任何將根特殊考慮的體現,為了與有根的 \(D(x)\) 對應,定義就是有根的定義。
下掛 與 替換
這個可能是我結構沒理清的結果(
下掛和替換其實是非常自然的,因為點雙之間是通過點連接,邊雙之間是通過邊連接,所以考慮一個點附帶的點雙時自己也在里面,所以要把包括自己在內的整體替換,然而邊雙中一個點附帶的邊雙不包括自己,自然是在自己的基礎上額外考慮一些東西就行。
——Mr_Spade
可以發現點雙邊雙兩者在處理 分量上的點到有根連通圖 的方法是有差異的。
這和點雙邊雙本身的性質有關,而兩者的方法都不會破壞其結構性質,或者漏掉某種情況。
如果點雙是下掛,那一個三角形連通圖都算不到,而這顯然合法,漏數。
如果邊雙是替換,那整個包含根的邊雙則可能擴大(比如替換了一個三角形,這個三角形也應該是邊雙的一部分),也就是說真實的邊雙並不是 \(i\) 而是更大,在計算更大的邊雙時就會將這個圖算重。
后記
https://www.cnblogs.com/-Wallace-/p/nature-of-solutions.html