生游求逆哪家强?
生命游戏吧
全部回复
仅看楼主
level 8
Bz_______ 楼主
别去山东找蓝翔!
2015年08月27日 12点08分 1
level 8
Bz_______ 楼主
先考虑最经(wu)典(nao)的回溯算法:
求逆过程:
对于要求逆状态A
建立要求解的状态B,设每个细胞的值为“未知”
运行 回溯过程(A,B)
回溯过程(A,B):
若B没有“未知”细胞:
输出B,结束。
否则:
任意挑选一个B中的“未知”细胞
设这个细胞为“生”
若存在一种可能性①从B推演到A:
回溯过程(A,B)
设这个细胞为“死”
若存在一种可能性从B推演到A:
回溯过程(A,B)
①“存在一种可能性”指对于每一个状态A中的细胞,存在一个赋予B中“未知”细胞的值,能够使B演化一代后,
演化后细胞的值和A中的细胞值是一样的。
比如,如果B中一个细胞是“未知”状态,周围有4个“活”细胞和4个“未知”细胞,而对应的A中的细胞是“活”状态,
则不存在从B推演到A的可能性,因为无论“未知”细胞取什么值,演化一代后对应的细胞总是死的。
2015年08月27日 12点08分 2
WLS就是用这种算法进行求逆的。
2015年08月27日 12点08分
level 8
Bz_______ 楼主
现在问题来了,为什么要“任意挑选一个B中的未知细胞”?难道不能精心挑选B中的一个细胞,使得这种挑选能够减少回溯过程?为什么要先“设这个细胞为生”呢?难道不能用某种智能算法设定细胞的值呢?
2015年08月27日 13点08分 3
如果第二点能够“完美地”做到,那么找到c/6飞船只是一瞬间的事,生游领域也会因此变得无聊。
2015年08月27日 13点08分
怎样挑选能够减少回溯过程?
2015年08月27日 13点08分
@Bz_______ 我哪知道……
2015年08月27日 13点08分
任意确实够无脑
2015年08月27日 13点08分
level 8
Bz_______ 楼主
2015年08月27日 13点08分 4
level 1
这个算法描述中没有说明状态B中的未知细胞范围,我认为B中的未知状态的细胞应该只包括现有存活细胞和临近8格位置的细胞,其他位置应该没有存活细胞。
这其实就是一种深度优先搜索。不过搜索的顺序是随机的。我猜想应该是为了让不同的人能找到不同的结果 —— 如果是固定的搜索顺序,每次找到的结果肯定都是一样的。
至于为什么不能用某种智能的方法来确定未知细胞的初始状态,我想应该只有一个原因:就是目前没有发现这种方法,或者,就是即使有也是很难实现的方法。所以我猜想初始状态的选择是随意的,选择初始为生或者死对具体的A状态效果可能不同,但对于所有情况来说就无所谓。 —— 当然,也可能选择生会好一点,但至少我没想出理由。
随机选择位置的理由应该也是一样的。
其实这类问题可能很难找到好的方法,而找到好的方法本身的价值也不大 —— 就算能很快的逆推出生命游戏,也没有多大的经济利益。所以常常就是用一个虽然不咋样,但反正还能用的方法。
2015年08月28日 02点08分 5
level 11
逆算好像真没什么好方法
2015年08月29日 14点08分 6
我认为还是有的,毕竟生游不是真正的杂乱无规律
2015年08月29日 23点08分
@Bz_______ 至少,目前应该还没有发现好方法。
2015年08月30日 07点08分
@Bz_______ 这个不是杂乱的问题,是无法计算,就像乘0可以计算,除以0就无法算
2015年08月31日 13点08分
1