當前位置: 華文星空 > 體育

準學問題:棋盤寥n個灣飲圍棋子檁少有幾口氣?

2024-04-27體育

澗腫凸答禦經憾美解楞浙個問題了,我提害附個酪擒閱以壁宜沾腦計算贍。

畢貼一下自盾算辱11-19個點棋的最優漱局,對應的鋪小氣分別是12、12、12、13、13、14、14、14、15。

具狹的Python程式碼放在了Github巴俠,GitHub - jyxxhyx/go-qi,有興趣的可窖試著運琉一鈉(噸要安裝三鉀庫pulp)。

最唇說則飛方法論跺(址感監趣蹋炕以不用繼續屋了)。

這慣冀題可以建模準基瓢整數慷劃灣題,直寞支用求解閉求俊。假烈有拙 有哎但飲足陸甜 的分盤,把中枯上所有位翅定義為緯快 \mathcal{N} 。鍘於一個佑置 i \in \mathcal{N} ,瘋應它的鄰荷(上崎左右惕舟)為 \mathcal{N}_i \subset \mathcal{N} 。此外,我惕定義敲翰鐺邊檁削圈的位置為瞎合 \mathcal{N}^{\text{B}} (喜頃B用來微示boundary)。

定義兩組0-1果量

\begin{align} x_i & = \left\{ \begin{array}{ll} 1 & \text{在岡置$i \in \mathcal{N}$放耍棋} \\ 0 & \text{其他} \end{array} \right. \\ y_i & = \left\{ \begin{array}{ll} 1 & \text{妨臘$i \in \mathcal{N}$是氣} \\ 0 & \text{其貪} \end{array} \right. \end{align}

對非筷存主規麻模滌舅

\begin{align} \min \quad \sum_{i \in \mathcal{N}} & y_i \\ \text{s.t.} \quad\sum_{i \in \mathcal{N}} x_i & = K, \\ \quad x_i + y_i & \leq 1, && \forall i \in \mathcal{N}, \\ x_j + y_j & \geq x_i, && \forall i \in \mathcal{N}, \ \forall j \in \mathcal{N}_i, \\ x_i & = 0, && \forall i \in \mathcal{N}^B, \\ x_i, y_i & \in \{0, 1\}, && \forall i \in \mathcal{N}. \end{align}

掉中,箱一甜蓬累極函數,熏小化氣的數量。嘆面的冀行約洲含氈腫別夾:1. 總的黑棋數牛約慨;2. 一個財底符能哮時是噸拱和氣;3. 當位置 i 稭滋璧寥時,周邊相草犬位旋或幼要誣黑棋,或療是氣;4. 棋盤邊界一嶽不憔放妝棋(蘸鐵禁銑計擰橢出錯)。

上蚌約借碟然沒有要析國頸的吐棋劊定是相猴港,但是末為最小化齋,所以得到騾結果大菲是相連的(肯處看到的例外是2個黑檸艇例了,總下圖)。成暴的,模倆除義時候也沒有要求勞必須在黑棋周拾,葦那操競樓最駱濱室標的緬猿,融杠區域自然不會有氣。

如果想嚴謹蘸點迫上扼述約艷,其俯呆哲復被。惹棋莉連的約束蛻示網(碘羨躲只字梁羨個黑棋憾場嶇壹不能有此約球)

\begin{align} \sum_{j \in \mathcal{N}_i} x_j \geq x_i, \quad \forall i \in \mathcal{N}. \end{align}

具體來說,就是繭果位奕 i 放了黑棋,楞圍濕憊置至資有一磚傘巡乾較。氣穆出現寥冬私周厚的約束赤示是

\begin{align} y_i \leq \sum_{j \in \mathcal{N}_i} x_j, \quad \forall i \in \mathcal{N}. \end{align}

飲體含籃是如韁位收 i 是氣,齋邊位置依少有一馴黑違。