WEEK2-報告
前人研究總結-D級解題器


勝利定義-死活
其他判斷方式

終局判斷條件
原先判斷條件:
1. 移除必死子
2. 找出主要棋塊
3. 加回必死子
4. 判斷為true_end or pseudo_end
-> 此時會影響判斷4的alive_with_eyes函數判斷
改為先判斷再加回必死子
更改示例

紀錄方式更改
追蹤判別方式,辨認為全殺或者領土獲勝
探討是否會有死活判斷成官子題的情況
找尋最佳解
原先的演算法回傳的是bool型態,所以在追蹤路徑時,會遇到只取第一條回傳為勝的路徑,無法輔助分析
對於判斷為解得出來的程式,建立新追蹤判斷標準如下:
| 全殺(W) | 雙活(W) | 比較領地(W) | 比較領地(L) | 雙活(L) | 被殺(L) |
| 3 | 2 | 1 | -1 | -2 | -3 |
因為都是固定為黑領先,黑方選擇使分數盡可能大的選項,而白方選擇使其盡可能小的選項
找尋最佳解
原先的演算法回傳的是bool型態,所以在追蹤路徑時,會遇到只取第一條回傳為勝的路徑
對於判斷為解得出來的程式,建立新追蹤判斷標準如下:
| 一步勝(W) | 全殺(W) | 雙活(W) | 比較領地(W) | 比較領地(L) | 雙活(L) | 被殺(L) |
| 4 | 3 | 2 | 1 | -1 | -2 | -3 |
因為都是固定為黑領先,黑方選擇使分數盡可能大的選項,而白方選擇使其盡可能小的選項
| 一步勝(W) | 全殺(W) | 雙活(W) | 比較領地(W) | 比較領地(L) | 雙活(L) | 被殺(L) |
| 4 | 3 | 2 | 1 | -1 | -2 | -3 |
找尋最佳解
\text{Win}(s, \text{Black}) = \exists m \in M(s) : \text{Win}(s \circ m, \text{White})
\text{Win}(s, \text{White}) = \forall m \in M(s) : \text{Win}(s \circ m, \text{Black})
誤判解的情況
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 18 | 2 | 4 | 28 |
| 官子題 | 0 | 0 | 6 | 12 |
原本-6depth-restriction-無撲
C級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 12 | 0 | 2 | 24 |
| 官子題 | 0 | 1 | 3 | 14 |
B級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 0 | 0 | 2 | 16 |
| 官子題 | 0 | 0 | 2 | 6 |
A級
耗時:153s
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 0 | 0 | 0 | 7 |
| 官子題 | 0 | 0 | 0 | 1 |
S級
誤判解的情況
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 18 | 1 | 2 | 31 |
| 官子題 | 0 | 0 | 7 | 11 |
新終局判斷-6depth-restriction-無撲
C級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 12 | 0 | 1 | 25 |
| 官子題 | 0 | 0 | 2 | 16 |
B級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 0 | 0 | 2 | 16 |
| 官子題 | 0 | 0 | 2 | 6 |
A級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 0 | 0 | 0 | 7 |
| 官子題 | 0 | 0 | 0 | 1 |
S級
耗時:141s
誤判解的情況
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 34 | 2 | 1 | 15 |
| 官子題 | 0 | 0 | 9 | 9 |
新終局判斷-6depth-restriction-有撲
C級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 18 | 0 | 1 | 19 |
| 官子題 | 0 | 0 | 4 | 14 |
B級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 1 | 0 | 2 | 15 |
| 官子題 | 0 | 0 | 3 | 5 |
A級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 0 | 0 | 0 | 7 |
| 官子題 | 0 | 0 | 0 | 1 |
S級
耗時:216s
原先判為官子後變無解
C-2
原程式判斷
C-2
新程式判斷
撲的實作方式改良
bool is_oshi_structural(int color, pair<int, int> pt) {
if (!is_legal_movement(color, pt))
return false;
if (!is_strictly_atari(color, pt))
// 這個也改成放寬,原為如果下在這會被吃則不算
return false;
if (calculate_liberty(pt) > 1)
return false;
return true;
}
簡化版
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 40 | 0 | 2 | 22 |
| 官子題 | 1 | 1 | 8 | 8 |
新版-兩邊限制-6
C級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 19 | 0 | 1 | 18 |
| 官子題 | 2 | 0 | 4 | 12 |
B級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 4 | 0 | 2 | 12 |
| 官子題 | 0 | 1 | 2 | 5 |
A級
雙方都限制的情況下
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 1 | 0 | 0 | 6 |
| 官子題 | 0 | 0 | 0 | 1 |
S級
耗時:165s
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 41 | 1 | 2 | 8 |
| 官子題 | 8 | 1 | 2 | 7 |
新版-兩邊限制-8
C級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 26 | 0 | 0 | 12 |
| 官子題 | 8 | 1 | 0 | 9 |
B級
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 11 | 0 | 1 | 6 |
| 官子題 | 2 | 1 | 0 | 5 |
A級
雙方都限制的情況下
| 全殺 | 雙活 | 官子 | 無解 | |
|---|---|---|---|---|
| 死活題 | 2 | 0 | 0 | 5 |
| 官子題 | 0 | 0 | 0 | 1 |
S級
耗時:294s

Minimal
By yujuan
Minimal
- 37