五子棋棋型判断的问题
正在写一个五子棋人机对战的程序,联系一下编程能力。
遇到了一个难点,就是在做棋盘棋势估值的时候,要考虑各种棋型,我是按着网上的做法:
判断是否能成5, 如果是机器方的话给予100000分,如果是人方的话给予-100000 分;
判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分;
判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分;
判断是否成死3活3,如果是机器方的话给予1000分,如果是人方的话给予-1000 分;
判断是否能成死4,如果是机器方的话给予500分,如果是人方的话给予-500分;
判断是否能成单活3,如果是机器方的话给予200分,如果是人方的话给予-200分;
判断是否已成双活2,如果是机器方的话给予100分,如果是人方的话给予-100分;
判断是否能成死3,如果是机器方的话给予50分,如果是人方的话给予-50分;
判断是否能成双活2,如果是机器方的话给予10分,如果是人方的话给予-10分;
判断是否能成活2,如果是机器方的话给予5分,如果是人方的话给予-5分;
判断是否能成死2,如果是机器方的话给予3分,如果是人方的话给予-3分。
就是对整个棋局进行扫描,得到双方分数之和作为棋局的值。
问题是,如何判断出各种棋型呢,比如:活三,活四,活二,死三,死四~~~
我有想过通过模式匹配,每一行,对各种模式进行匹配,不过这样好像计算量太大了,不知哪位高手指点一下。
也可讨论一下更好的估值方法?