Javaアプレット(49) 6ベクトルの式

さて、6ベクトルの式を書いてみましょう。まずは『日本囲碁規約』の定義にしたがって書いてみます。この定義には依存関係があるので、依存のないものから順番に書いていきます。
(1) 活き石 v = v1v2
 ただし、v1は相手方の着手により取られない石、
 v2は取られても新たに相手方に取られない石を生じうる石
(2) 死に石 x = ~l - v
この2つはいわゆる死活判定の式になっています。実際にこれを求めるのは難しいと思われるのですが、今はこれ以上追及しないことにします。
(3) 目 (y)i = {  1 : (S (+) S0)l ≠ 0 かつ (~(tSei - l)∨(v - w) = 1 または ~(tSei - l)∨(v - b) = 1)↓{ 0 : otherwise
この式はベクトルyのi番目の要素(y)iを定義した式で、それが1になる条件を言葉で表すと、「石に囲われていて かつ (その囲う石が黒の活き石に含まれる または その囲う石が白の活き石に含まれる)」となります。
(4) ダメ m = ly
(5) セキ石 s = v∧(tSml)
この式は「ダメと隣接する活き石」という意味です。
(6) 地 (t)i = {  1 : (S (+) S0)l ≠ 0 かつ (~(tSei - l)∨(v - w - s) = 1 または ~(tSei -l)∨(v - b - s) = 1)↓{ 0 : otherwise
この式はベクトルtのi番目の要素(t)iを定義した式で、それが1になる条件を言葉で表すと、「石に囲われていて かつ (その囲う石がセキ石以外の黒の活き石に含まれる または その囲う石がセキ石以外の白の活き石に含まれる)」となります。
(3)と(6)に関しては、死に石が残っているとうまく計算できないので、死に石を盤上から一時的に取り去って、空点の連接を表すSを計算し直した上で利用する必要があります。
問題は、(1)と(2)の死活判定で囲碁のプログラムにとってはかなり悩ましい部分だと思います。次回は死活についてじっくり考えてみたいと思います。
(つづく)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。