时空压缩算法-动力节点

快速执行慢速程序可能会导致喜悦和沮丧。通常,您能做的最好的事情是做一个低级技巧,使程序速度提高一倍甚至四倍。例如,许多读者可能已经使用位级操作实现了约翰·康威(John Conway)的“生命游戏”,从而显着提高了速度。但是有时,将几个想法结合在一起的全新方法会带来惊人的改进。William Gosper发明了一种简单的算法“ HashLife”(“利用大细胞空间中的规律性 ”,Physica 10D,1984年),结合了四叉树和备忘录,为生活游戏带来了天文数字化的加速。在本文中,我将最简单的Life实现演变为该算法,解释了其工作原理,
马丁·加德纳(Martin Gardner)在《科学美国人》上发表的关于康威人生游戏的专栏文章从1970年10月开始,启发了整整一代的程序员。二维生命形式的惊人世界来自于一些易于编程和显示的简单规则。生命游戏(图1)是在无限二维网格上进行的单人纸牌游戏。网格中的每个单元格都处于活动状态(1,用黑色圆圈表示)或不活动。每个有两个或三个活动邻居(八个相邻)中的每个活动单元都保持存活,否则会死亡。恰好三个活着的邻居所包围的任何死细胞都是一个新生细胞,并且会被下一代所生。所有规则都同时应用于所有单元。这些规则导致稳定和振荡的生命形式—滑翔机和宇宙飞船在整个宇宙中运输,生命形式无约束地生长或完全消失。
Life的最简单实现使用一对二维数组,它们代表宇宙有限部分的状态。在每一代中,都会对旧阵列中某个单元的邻居进行计数,以计算新阵列中该单元的状态,然后交换阵列并更新屏幕。这种方法有许多令人沮丧的方面:宇宙越大,程序运行越慢;但是,较小的宇宙会限制模式的增长,从而人为地限制了模式。我对基本算法的第

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值