有没有人工只能高手回答这问题?

来源:百度知道 编辑:UC知道 时间:2024/06/16 15:08:23
1.兵三进一 卒3进1
2.炮二平五 马8进7
3.马二进三 马2进3
4.马八进九 车9平8
5.车一平二 卒1进1
6.炮八平七 马3进2
7.马三进四 车1进3
8.车九进一 车1平4
9.车二进四 车8进1
10.车九平三 马2进1
11.炮七退一 车8平6
12.马四进三 炮8退1
13.车三进二

这是黄海林先手负于王斌的一局棋。实战中,王斌接走车4进6,结果形成妙杀。

我有兴趣拿软件来算这棋。结果软件花了607秒才算到车4进6杀。软件不是计算能力很强的么?为什么这步仅需算13层就能杀的棋要算600多秒呢(一般地说软件300秒不到就能算14、5层)?有人说,车4进6太偏,软件一开始就把它剪枝掉了。但是既然剪枝剪掉了,为什么最后又能算出来?究竟软件在一开始接到这局面,到最后算到弃车杀时,发生了什么?
我说的“剪枝”是,在设计象棋软件时,会不会按照一定算法,规定某些棋不去考虑它,就像我们平时下棋时明显不合理的棋不会去想一样(例如这个局,一般情况下我们也不会考虑弃车杀士的棋)。但是去掉这些棋的话,为什么最后又能算到?

软件并不懂得是否偏,也不会所谓的剪枝(除非认为限定条件),程序会按照顺序、规律一步一步计算,对每一种可能性进行枚举,这种机械的处理方法正是计算机的弱点,但它的速度弥补了这点。

逐一枚举当然比不上经过你的高度发达的大脑算出的“算13层”了。。。

软件为什么这么慢?就是因为这个了,具体看你所用软件的程序模块内部函数是怎么设计的,循环,递归等等

当然软件也分三六九等,好的设计当然可以不需要600多秒了。。。O(∩_∩)O哈哈~

————————————————————————————
恩,楼主想的挺深入的!
“规定某些棋不去考虑它,就像我们平时下棋时明显不合理的棋不会去想一样(例如这个局,一般情况下我们也不会考虑弃车杀士的棋)。但是去掉这些棋的话,为什么最后又能算到?”

说实话你的这个问题比较专业,我回答不了。但我想既然计算机可以通过某种相对智能的算法过滤掉一些“不合理的”棋,它为什么不可以重新考虑那些相对不合理的棋呢?或许它并非丢弃,而只是暂时放一放,更加“合理的”棋优先呢?在优先级上有所设置处理吧。。。

我也只能这样探讨性的提出我的看法啦,太深奥了,我得赶紧学啦,呵呵

楼主精神可嘉!敬礼!学习!

我们大学就有人工智能中心 你说有没有呢