什麼是 Catalan 數列以及其應用

2022-01-10 04:31:31 字數 3876 閱讀 2584

有 \(2n\) 個人排成一行進入劇場。入場費 5 元。其中只有 \(n\) 個人有一張 5 元鈔票,另外 \(n\) 人只有 10 元鈔票,劇院無其它鈔票,問有多少中方法使得只要有 10 元的人買票,售票處就有 5 元的鈔票找零?

一位大城市的律師在她住所以北 \(n\) 個街區和以東 \(n\) 個街區處工作。每天她走 \(2n\) 個街區去上班。如果他從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?

在圓上選擇 \(2n\) 個點,將這些點成對連線起來使得所得到的 \(n\) 條線段不相交的方法數?

對角線不相交的情況下,將乙個凸多邊形區域分成三角形區域的方法數?

乙個棧(無窮大)的進棧序列為 \(1,2,3, \cdots ,n\) 有多少個不同的出棧序列?

\(n\) 個結點可夠造多少個不同的二叉樹?

\(n\) 個不同的數依次進棧,求不同的出棧結果的種數?

\(n\) 個 \(+1\) 和 \(n\) 個 \(-1\) 構成 \(2n\) 項 \(a_1,a_2, \cdots ,a_\) ,其部分和滿足 \(a_1+a_2+ \cdots +a_k \geq 0(k=1,2,3, \cdots ,2n)\) 對與 \(n\) 該數列為?

它們中我相信大家或多或少接觸過一些,在解決這些問題的方法中,catalan數就是一種很便利的組合數學方法。

首先來看看wiki對catalan數的定義:

卡特蘭數(catalan number)是組合數學中乙個重要的計數數列,在很多看似毫不相關地方都能見到它的身影(目前最早證明卡特蘭數的是清朝數學家明安圖,所以catalan數也被稱作「明安圖數」或「明安圖-卡塔蘭數」)

卡塔蘭數的一般項公式為:

\[c_n = \frac} = \frac(n \geq 2, n \in \mathbf})

\]其對應的序列為:

\(c_0\)

\(c_1\)

\(c_2\)

\(c_3\)

\(c_4\)

\(c_5\)

\(c_6\)

...112

51442132

...catalan數的漸近增長為:

\]它的含義是當n → ∞時,左式除以右式的商趨向於1。(這可以用\(n!\) 的斯特靈公式來證明。)

所有的奇卡塔蘭數\(c_n\) 都滿足$ n = 2^k - 1$ 所有其他的卡塔蘭數都是偶數。

而且\(c_n = \int_0^4x^n\frac\sqrt\)

首先我們來看乙個問題:

在乙個平面直角座標系中,只能往右或往上走乙個單位長度,問有多少種不同的路徑可以從左下角 (1,1) 走到右上角 (n,n),並且要求路徑不能經過直線 y=x 上方的點,下圖中的路徑都是合法的(** wikipedia)

如果沒有限制條件,那麼從左下角走到右上角一共有 \(2n\) 步,有 \(n\) 步是往右,另外 n 步是往上,那麼路徑方案數就是 \(2n\) 步中選擇 n 步往右,一共有 \(\begin2n\\n\end\) (即 \(c^n_\))種方案

那麼我們考慮一下這裡面有多少種方案是不合法的

首先對於每一種不合法的方案,它的路徑一定與 y=x+1 有交。我們找到它與 y=x+1 的第乙個交點,然後將這個點後面部分的路徑關於 y=x+1 做乙個對稱。由於原來路徑到達 (n,n),新的對稱之後的路徑就會到達 \((n−1,n+1)\)。這樣我們把每一種不合法方案都對應到了一條從 (1,1) 到 $(n−1,n+1) $ 的路徑,現在再來看是否每一條這樣的路徑都能對應到一種不合法方案,如果是,那麼這就建立了乙個一一對映的關係,也就是它們的方案總數相同。這是肯定的,因為每一條這樣的路徑必定與 y=x+1 有交,那麼對稱回去,就得到一條不合法方案

由於從$ (1,1)$ 到 \((n−1,n+1)\) 的路徑有$ \beginn−1+n+1\n−1\end $條,那麼合法的方案就是

\[c_n = \begin2n\\n\end - \begin2n \\ n\end = \frac\begin2n\\n\end

\]我們把這個方案數記為$ c_n$,這就是著名的 catalan 數

我們來看看它的前幾項(\(n\) 從 0 開始)

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190

再來看乙個問題:有多少種不同的長度為 n 的括號序列?

首先乙個括號序列是指 (), ()(), (())() 這樣的由括號組成的序列,並且沒有左右括號無法匹配的情況

我們可以將長度為 2n 的括號序列對映成剛剛所說的路徑:首先對於左括號,那麼就向右走乙個單位長度,對於右括號,那麼就向上走乙個單位長度,由於括號序列合法,那麼每次向右走的次數不會少於向上的次數,也就是這條路徑不會在 y=x 之上。再考慮每一條這樣的路徑,也能夠對應到一種合法的括號序列,因此,長度為 2n 的括號序列的方案數就是 \(c_n\)。

現在來考慮你有 n 個元素(元素之間是沒有區別的)和乙個棧,每次可以將乙個元素入棧,或者將棧頂元素彈出,問有多少種可能的操作序列,這可以將問題對應成括號序列,入棧為左括號,出棧為右括號,因此方案數也是 \(c_n\)

現在有 2n 個人,他們身高互不相同,他們要成兩排,每一排有 n 個人,並且滿足每一排必須是從矮到高,且後一排的人要比前一排對應的人要高,問有多少種排法

我們考慮先把這些人從矮到高排成一排,那麼現在來分配哪個人在前,哪個人在後,例如有 6 個人,身高是 1, 2, 3, 4, 5, 6

那麼我們用 1 表示這個人應該在後排,0 表示這個人應該在前排,例如說 100110 表示兩排分別是 2, 3, 6 和 1, 4, 5 這是不合法的

那麼合法方案應該是怎麼樣的呢?後排要比前排對應的人高,也就是說 0 的出現次數在每乙個地方都不應該小於 1,這恰恰又是乙個括號序列,因此,方案仍然是 catalan 數

現在你需要統計有多少種不同的 n 個結點的二叉樹

圖上的是 3 個結點的二叉樹,一共有 5 種方案

樸素的想法是由於二叉樹是遞迴定義的,可以考慮使用遞推方法

我們可以用 \(f_n\) 表示有 n 個結點的二叉樹的方案數(空樹算一種,即 \(f_0=0\)),那麼枚舉子樹大小可以得到方程

\[f_n=∑^_f_if_

\]如果直接計算,你需要 $o(n^2) $的時間

現在我們換乙個角度來想,對這棵二叉樹進行遍歷,並且考慮乙個括號序列,當第一次遇到這個結點的時候,在括號序列末尾新增乙個左括號,在從左子樹回到這個結點的時候,在括號序列中新增乙個右括號,這樣,將每一種不同的二叉樹都對應到了一種不同的括號序列,同樣對於每一種不同的括號序列都可以找到對應的一種不同的二叉樹,因此,有 \(n\) 個結點的二叉樹的數量也是 \(c_n\)

例題洛谷 p1044 棧

題目大意:入棧順序為 \(1,2,\ldots ,n\) ,求所有可能的出棧順序的總數。

#include using namespace std;

int n;

long long f[25];

int main()

待補。。。

miskcoo's space關於catalan數的證明:

wiki:卡塔蘭數

oi wiki:

什麼是網路? 以及其優缺點

自古以來,人們通過不同的載體,例如壁畫 語言 烽火台 竹簡 紙書 手勢 鐘 鼓等 以不同的方式,例如古代的飛禽傳書 烽火狼煙 驛馬郵遞 點孔明燈 擊鼓名號 魚傳尺素等,以及後來的手勢交通指揮,航海的旗語等 來交流。傳遞這些資訊的基本方式是依靠人們的視覺與聽覺。自19世紀中期以來,隨著電報和 的發展,...

什麼是桌面互動以及其特點

桌面互動系統是屬於互動投影的一種展現方式,通過投影儀投射到桌面上代替傳統的 影像,效果更佳新穎 獨特,參觀者可以用手觸控桌面螢幕,進行互動 參觀者可以 更好的了解展示宣傳的資訊。桌面互動投影採用多點觸控技術,是允許使用者通過多個手指來控制圓 形介面的一種技術,與其他的互動投影所不同的是,桌面互動投影...

什麼是ip位址以及其作用? 檢視埠使用

1.ip位址的定義作用 要想使網路中的計算機能夠進行通訊,必須為每台計算機指定乙個標識號,通過這個標識號來指定接受資料的計算機或者傳送資料的計算機。在tcp ip協議中,這個標識號就是ip位址,它可以唯一標識一台計算機,目前,ip位址廣泛使用的版本是ipv4,它是由4個位元組大小的二進位制數來表示,...