关于棋谱搜索的问题

beyond702 2010-05-28 12:04:10
最近要做一个围棋棋谱匹配的搜索程序,就是给一些sgf格式的棋谱,根据用户棋盘的输入从这些棋谱中找到特征相符合的棋谱,不仅要考虑棋子的位置,还要考虑走棋的顺序。
sgf格式的文件打开以后是这个样子的
;B[qd];W[dc];B[cp];W[op];B[ep];W[gq];B[qp];W[qo];B[ro];W[po];B[qn];W[rn];B[rm];W[rp]
;B[sn];W[qq];B[iq];W[go];B[lq];W[oc];B[pe];W[pm];B[qk];W[lc];B[de];W[ce];B[cf];W[cd]
;B[df];W[ed];B[cj];W[mr];B[mq];W[lr];B[nq];W[kq];B[kp];W[jq];B[jp];W[ir];B[jr];W[kr]
;B[hr];W[hq];B[is];W[ip];B[io];W[ir];B[no];W[pn];B[iq];W[hp];B[nr];W[ir];B[nm];W[gr]
;B[ok];W[qm];B[rl];W[rn];B[nd];W[nc];B[le];W[dk];B[dj];W[cn];B[en];W[ek];B[ck];W[dm]
;B[cl];W[em];B[fn];W[hm];B[eq];W[do];B[fp];W[hk];B[qn];W[mn];B[nn];W[rn];B[kc];W[od]

请问谁知道这些都代表什么意思啊,请指教!!谢谢。
...全文
236 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2010-05-31
  • 打赏
  • 举报
回复
sgf格式表示的是“变化”,而模式识别是识别“状态”

所以要自己把局面还原才可以。

我以前自己做过一个打谱程序,就是sgf的,主要是判断死活还挺好玩,简单深搜就可以。
beyond702 2010-05-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 superdullwolf 的回复:]
可以买本模式识别的书来看看

如果自己写二维数组比对,三个值的可能,匹配要求100%

那循环次数是相当可观的。复杂度可能是N^m
[/Quote]

感谢回答!OPENCV也能识别sgf格式的相似度吗?
超级大笨狼 2010-05-28
  • 打赏
  • 举报
回复
可以买本模式识别的书来看看

如果自己写二维数组比对,三个值的可能,匹配要求100%

那循环次数是相当可观的。复杂度可能是N^m
超级大笨狼 2010-05-28
  • 打赏
  • 举报
回复
假设我来做这个事情,我首先想到的会采用OPENCV,因为它模式识别的技术比较成熟,不必怀疑。
然后图片也采用它来生成,二值图的话,每个局面是2张,分别表示白和黑的。
这样一盘300手的棋谱需要600张小图片,但是识别速度非常快,几百毫秒就可以完成,总共也就几秒钟一盘棋。

提前搜索一万盘,把局面信息存储起来也是必须的,比如出现了三连星布局,大飞挂角之类的可能被文字归类搜索到的信息。

可以根据CPU占用的情况决定采用多线程还是分布式搜索。

超级大笨狼 2010-05-28
  • 打赏
  • 举报
回复
搜索只能搜状态,不能搜变化。

这个属于模式识别领域,围棋需要三个值才能描述黑,白,空,最多下300手棋
把一盘棋所有局面转成自定义的二进制文件,可以把每个局面记录下来。
自己计算需要的字节数吧,也不会太大。

和图片的比对类似,大矩阵和小矩阵的比对
搜索的时候要平移旋转。

我还有一个可以偷懒的办法,就是你把局面存储成图片,利用图片识别的程序包OPENCV进行识别相似度。
这样,你只需要做最简单的开发就可以了。
fire_woods 2010-05-28
  • 打赏
  • 举报
回复
一楼正解.
zeroieme 2010-05-28
  • 打赏
  • 举报
回复
B[qd]=黑(17,4)
W[dc]=白(4,3)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧