囲碁の棋譜データの検索っていう、すごくマニアックなネタですんません。
データベースから囲碁の手順の検索を、すごく簡単に実装する方法を思いついたのでメモ。
そういうことやってる人の間では常識なのかもしれないし、もっといい方法があるのかもしれませんが、僕にもできそうな範囲ということで。

「棋譜を『一手前の石からの相対座標』で記述しておけば、手順の検索が簡単なんじゃないか」というものです。

ツケヒキ

たとえば、上図のようなツケヒキカタツギの手順の一例を相対座標で書いてみると、

「+02+00,+00+01,+01+00,-02+00,+02-01」

となります。
これを+-の符号を変えたりXY座標を逆にしたりしたものをあわせると、盤面のどこでもどんな方向でもツケヒキの手順が表現できるので、どんな棋譜からでもツケヒキカタツギの手順が検索できるというわけです。
手順が連続してないと検索できないのが難点ですが。

ひまがあったら、碁盤掲示板 に実装してみよう。

手順関係ないパターン検索とかできる棋譜管理ソフトもあるらしいけど、一体どうやってるんですかね??
不思議だー。
教えて、エロイ人。

Comments

  • 相対座標で書くって、一種の微分だよね。
    だったら、パターンマッチングで完璧に合致しているものを探すのもいいけど、「+02+00,+00+01」 と 「+02+00,+00+02」なら1違うとか。
    で、差が2以内とか3以内とかで検索をかけるようにすれば、バリエーションを探しやすいかも。

    あと、棋譜は回転も考慮しなきゃならないよね。
    ま、高々4方向だけど。

    #1 たもちゃん2006-08-17 19:26

  • >たもちゃん
    アドバイスどうもありがとう。
    回転、反転は符号変えたりXY反転でOKだね。

    >>差が2以内とか3以内とかで検索
    囲碁は石が一路違うと全然意味が違ったりするから、それはあまり考えてなかったなぁ。
    でも、実際に存在する棋譜の中から探すわけだから、少しズレたパターンを探すのも意味があるかもしれない。
    布石の最初の方とか。
    ただ、相対座標だから途中をずらすと後の座標もずれるので、文字列のパターンマッチングじゃ対応できなさそうなのが問題かな。

    ただなんにせよ、ゆとりを持った検索っていうのは使えるかも。
    よく考えれば、途中に別の手を挟むパターンの検索も可能だし。
    やばい、なんだかやってみたくなってきた・・・。

    #2 しゅうへい2006-08-17 21:28

  • なんだかかがわさんが頭のいい人みたいですねw

    明日からソウル行って来ます。すごく楽しみです^^
    おみやげ楽しみにしていてください。また一緒に飲みましょう。

    #3 はりぐち2006-08-17 22:30

  • >はりー
    ソウル行ってらっさい!

    ソウル大戦は囲碁部で一番アツイ行事だと思うので、最後の一滴まで出し尽くしてくるといいんじゃんまいか。
    おみやげは、ウンギョ並みのを期待してるよ。

    帰ってきたら、チャミスルでも飲もう!

    #4 しゅうへい2006-08-17 22:45

*
*

Help