哈哈,我发现了,你的那个打分函数是个坑啊。那个乘以3完全把事情搞砸了。
我把那个乘以3去掉,直接就搜出了58步的解。
再然后我再优化了一下打分函数,用分数和步数的和作为新的分数,你猜怎么着?36步:
Start Searching =========================
[7700226867670820340] searched=100000, steps=11, score=26
[12960364162379280960] searched=300000, steps=19, score=20
[12672262221246767985] searched=700000, steps=19, score=20
!!! Result found after 941092 searches
0 -- 4
A E H C A E H C A E H C A E H C A E H C
B F D O => B F D O => B F D O => B F D O => B F D * =>
J I L G => J I L G => J I * G => J I G * => J I G O =>
M N K * M N * K M N L K M N L K M N L K
5 -- 9
A E H C A E * C A E C * A E C D A E C D
B F * D => B F H D => B F H D => B F H * => B F * H =>
J I G O => J I G O => J I G O => J I G O => J I G O =>
M N L K M N L K M N L K M N L K M N L K
10 -- 14
A E C D A * C D A C * D A C F D A C F D
B * F H => B E F H => B E F H => B E * H => B E G H =>
J I G O => J I G O => J I G O => J I G O => J I * O =>
M N L K M N L K M N L K M N L K M N L K
15 -- 19
A C F D A C F D A C F D A C F D A C F D
B E G H => B E G H => B E G H => B E G H => B E G H =>
J I O * => J I O K => J I O K => J I * K => J * I K =>
M N L K M N L * M N * L M N O L M N O L
20 -- 24
A C F D A C F D A C F D A C F D A C F D
B * G H => * B G H => J B G H => J B G H => J B G H =>
J E I K => J E I K => * E I K => E * I K => E I * K =>
M N O L M N O L M N O L M N O L M N O L
25 -- 29
A C F D A C * D A * C D A B C D A B C D
J B * H => J B F H => J B F H => J * F H => * J F H =>
E I G K => E I G K => E I G K => E I G K => E I G K =>
M N O L M N O L M N O L M N O L M N O L
30 -- 34
A B C D A B C D A B C D A B C D A B C D
E J F H => E J F H => E * F H => E F * H => E F G H =>
* I G K => I * G K => I J G K => I J G K => I J * K =>
M N O L M N O L M N O L M N O L M N O L
35 -- 36
A B C D A B C D
E F G H => E F G H =>
I J K * => I J K L =>
M N O L M N O *
Go finished!
【 在 finlab (挨踢卢瑟) 的大作中提到: 】
: 标 题: Re: 数字华容道程序速度快速下降,比C#慢几十倍
: 发信站: 水木社区 (Sun Dec 5 08:26:16 2021), 站内
:
: 我确实是试了几次,试出来这个数字,
:
: 不过实际上人工求解的时候有固定的解法。 就是固定一行,再摆下一行。
:
: 在当前局势下,再多摆好一个,花费的步骤上限是可以确定的。 不过手工我也不熟,不好确定。
:
: 还有一个优化思路,就是参照人工,判断第一行摆好了,就做个标记,以后不再动。然后是第二行。
:
: 但最后两行要一起完成。
:
: 这样应该可以更快找到一个解法,但是用的步数会多一些。
:
:
: 【 在 here080 的大作中提到: 】
: : 你这个优化方式太看运气了吧。如果最优节点恰好是个死胡同,那不就卡死所有正确答案了?
: : 你选的这个15步标准,是对这一个初始条件有用吧?换一个初始条件是不是就有可能不行了?
: :
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 123.112.64.*]
--
FROM 73.15.185.*