你这个优化方式太看运气了吧。如果最优节点恰好是个死胡同,那不就卡死所有正确答案了?
你选的这个15步标准,是对这一个初始条件有用吧?换一个初始条件是不是就有可能不行了?
【 在 finlab (挨踢卢瑟) 的大作中提到: 】
: 标 题: Re: 数字华容道程序速度快速下降,比C#慢几十倍
: 发信站: 水木社区 (Sun Dec 5 07:58:10 2021), 站内
:
: 我贴的答案是后来优化过的。
:
: 在主循环中,记录全局最优节点,也就是score最小的。
:
: 然后
:
: if (node->gen - best->gen >15 && node->score > best->score)
: continue;
:
: 就是如果比最优节点多走了15步,还不如最优解点,就不再搜索这个分支。
:
: 这时候只要52步就能完成。
:
: 我把剪枝额步数跳到14, 就反而要60步。
:
: 如果再少, 可能就把正确的路径都剪掉了, 出不来答案了。
:
:
: 【 在 here080 的大作中提到: 】
: : 为啥你算出来才60步?我把你的程序用C++重写了一下,算出来要100步……
: : 这个结果是秒出的,但是如果我把搜索深度限定在80以内,那我搜了几千万个结点也出不了结果。
: : Start Searching =========================
: : ...................
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 123.112.64.*]
--
FROM 73.15.185.*