请看动态图: https://github.com/neozhaoliang/pywonderland/raw/master/img/wilson.gif
这个图演示的是概率论中的一个随机算法,叫做 Wilson 算法,它生成一个完美迷宫(即一个生成树),而且这个迷宫是在所有完美迷宫中等概率地随机选取的,UST 这个单词的意思是 uniform spanning tree
的简写,即服从一致分布的生成树。
生成迷宫后根据每个顶点与起点的距离对迷宫进行染色,使用的是宽度优先搜索算法。
整个动态图是用 python 一次生成的,不调用任何外部程序和第三方模块。(字体文件没有办法,这是必须的,不过如果不嵌入文本,只生成迷宫的话则不需要此文件)。只要你安装了纯净版的 python2 或者 python3,那么不需要安装任何依赖即可运行。
程序运行时间一般不超过半分钟,生成的动态图一般在 1M 左右,一般包含 1000 - 5000 帧。(是的你没看错,就是这么拽)
项目之前在论坛上发过,不过这次玩了一点新花样。当然最精彩的永远在后面。下一个项目双曲蜂巢正在紧张制作中。
1 z0z 2017-10-10 14:30:36 +08:00 我除了回复还能干什么 |
![]() | 2 mathzhaoliang OP @z0z 术业有专攻啊。每个人用 python 干的事情是不一样的,我只是选了一个比较少有人玩的方向。 |
3 lieh222 2017-10-10 14:41:02 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 |
4 z0z 2017-10-10 14:42:29 +08:00 @mathzhaoliang 多谢安慰啊。突然想起来了,大神请移步到这里 t/395736#reply3 可否点拨一下文中的那个连接实现计算极限功能的大概原理? |
![]() | 5 BBCCBB 2017-10-10 14:44:19 +08:00 cool |
![]() | 6 mathzhaoliang OP @z0z 它那个网站只是调用了后台的一个程序(我猜他是用了 mathematica,不过也可能用的是自己写的其它程序) 。 处理多项式,微分,积分这些属于符号计算的领域(记得吴文俊的机器证明吗?),符号计算有一套自己的算法来表示和研究数学对象,它与通常进行数值计算的科学计算器很不一样。比如分解多项式,它就是先在有限域上计算(有限域运算比较慢,但是不存在精度损失的问题),然后回到实数域上。插值的方法也很常用,但是不是你想的那种用法。 |
![]() | 7 xrlin 2017-10-10 14:50:52 +08:00 厉害 |
![]() | 9 vtwoextb 2017-10-10 15:01:22 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 |
![]() | 10 SakuraSa 2017-10-10 15:02:16 +08:00 很 cool,不知道能不能放出源码供大家学习一下? |
11 z0z 2017-10-10 15:05:22 +08:00 |
![]() | 13 CEBBCAT 2017-10-10 15:17:28 +08:00 via Android 好棒!我要在我们 Minecraft 服务器用这个做多层迷宫 |
![]() | 14 dalang 2017-10-10 15:20:26 +08:00 cool |
![]() | 15 malkavia 2017-10-10 15:35:02 +08:00 github 已 star 好厉害 |
![]() | 17 mathzhaoliang OP @CEBBCAT 这个方法比常用的 Prim, Kruskal 算法要慢,它的关键在于生成的迷宫服从一致分布。你在游戏里面用这个算法估计会很慢 。。。 |
![]() | 18 CEBBCAT 2017-10-10 17:17:31 +08:00 @mathzhaoliang #17 (●''●),人工识图盖迷宫 |
![]() | 19 Mcatt 2017-10-10 17:21:37 +08:00 厉害 |
20 liyang803 2017-10-10 17:22:37 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 |
21 linuxchild 2017-10-10 17:51:21 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 |
![]() | 22 cbiqih 2017-10-10 17:56:03 +08:00 一脸蒙蔽的出去,再一脸蒙蔽的进来~ |
![]() | 23 ashin 2017-10-10 18:27:38 +08:00 厉害 |
![]() | 24 xiaozizayang 2017-10-10 20:01:43 +08:00 很早就看到大佬的项目 继续膜拜 |
![]() | 25 newworld 2017-10-10 20:19:51 +08:00 已 star https://github.com/neozhaoliang 真大佬...收下我的膝盖!哈哈哈 |
![]() | 26 ranleng 2017-10-10 20:22:44 +08:00 一脸蒙蔽的进来,一脸蒙蔽的思考,一脸蒙蔽的出去. (先 star 了.. 明天研究研究 |
![]() | 27 mathzhaoliang OP |
![]() | 28 Chingim 2017-10-10 21:57:06 +08:00 数学好的都是真大神 |
29 zingl 2017-10-10 22:09:27 +08:00 还以为是能生成 python 脚本的新东西 |
![]() | 30 yang2yang 2017-10-10 22:20:54 +08:00 膜拜大佬 |
![]() | 31 Tunar 2017-10-11 08:57:08 +08:00 via Android 很 coooooool ! |
32 lxy42 2017-10-11 09:36:21 +08:00 厉害 |
33 zjddp 2017-10-11 12:18:07 +08:00 第 2500 star 已送上 |
![]() | 34 mathzhaoliang OP @zjddp 哇,谢谢!! |
![]() | 35 zhangzixu 2017-10-11 13:55:16 +08:00 学习学习 |
![]() | 36 sennes 2017-10-11 17:33:17 +08:00 ![]() 挺有趣的 |
![]() | 37 mathzhaoliang OP @sennes 很棒!怎么做到在回复里面贴图片的? |
![]() | 38 mathzhaoliang OP @sennes 我知道了。你是传到新浪图库然后用 md 格式引入的。。。 |
![]() | 39 sennes 2017-10-12 11:24:18 +08:00 @mathzhaoliang #36 Hello 如果是新浪图库的话 直接贴地址就行了 不需要加 Markdown 格式 另外我用的是一款叫 V2EX plus 的 Chrome 插件 可以直接在回复中插图的 |
![]() | 40 sennes 2017-10-12 11:59:33 +08:00 |
![]() | 41 mathzhaoliang OP @sennes 可以当头像吗?我看 V2EX 允许 GIF 格式的图片,但是上传动图作为头像会报错吧? |
![]() | 42 sennes 2017-10-12 14:29:55 +08:00 @mathzhaoliang #39 哈哈有些网站支持 gif 动图头像的。 |
![]() | 43 mathzhaoliang OP @sennes 我在这个项目下的另一个程序 Reaction Diffusion Simulation 也可以用来生成字符动态图: http://wxt.sinaimg.cn/thumb300/4e130e36ly1fkgoanosrmg205k02snmt.gif?tags=%5B%5D |
![]() | 44 mathzhaoliang OP |
![]() | 45 sennes 2017-10-13 18:04:41 +08:00 @mathzhaoliang #42 好 我研究一下! |
![]() | 46 f8281113 2017-10-13 23:08:45 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 ^v^ |
47 dd0754 2017-10-14 00:02:06 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 |
![]() | 48 wisetc 2017-10-15 17:42:09 +08:00 高深 |
49 buyaoshuohua 2017-10-23 11:31:10 +08:00 一脸蒙蔽的进来,一脸蒙蔽的出去 |