秀一个 Python 脚本生成的新作品

2017-10-10 13:59:12 +08:00
 mathzhaoliang

请看动态图: https://github.com/neozhaoliang/pywonderland/raw/master/img/wilson.gif

这个图演示的是概率论中的一个随机算法,叫做 Wilson 算法,它生成一个完美迷宫(即一个生成树),而且这个迷宫是在所有完美迷宫中等概率地随机选取的,UST 这个单词的意思是 uniform spanning tree 的简写,即服从一致分布的生成树。

生成迷宫后根据每个顶点与起点的距离对迷宫进行染色,使用的是宽度优先搜索算法。

整个动态图是用 python 一次生成的,不调用任何外部程序和第三方模块。(字体文件没有办法,这是必须的,不过如果不嵌入文本,只生成迷宫的话则不需要此文件)。只要你安装了纯净版的 python2 或者 python3,那么不需要安装任何依赖即可运行。

程序运行时间一般不超过半分钟,生成的动态图一般在 1M 左右,一般包含 1000 - 5000 帧。(是的你没看错,就是这么拽)

项目之前在论坛上发过,不过这次玩了一点新花样。当然最精彩的永远在后面。下一个项目双曲蜂巢正在紧张制作中。

6658 次点击
所在节点    Python
49 条回复
z0z
2017-10-10 14:30:36 +08:00
我除了回复还能干什么
mathzhaoliang
2017-10-10 14:34:07 +08:00
@z0z 术业有专攻啊。每个人用 python 干的事情是不一样的,我只是选了一个比较少有人玩的方向。
lieh222
2017-10-10 14:41:02 +08:00
一脸蒙蔽的进来,一脸蒙蔽的出去
z0z
2017-10-10 14:42:29 +08:00
@mathzhaoliang 多谢安慰啊。突然想起来了,大神请移步到这里 https://www.v2ex.com/t/395736#reply3 可否点拨一下文中的那个连接实现计算极限功能的大概原理?
BBCCBB
2017-10-10 14:44:19 +08:00
cool
mathzhaoliang
2017-10-10 14:50:42 +08:00
@z0z 它那个网站只是调用了后台的一个程序(我猜他是用了 mathematica,不过也可能用的是自己写的其它程序)


处理多项式,微分,积分这些属于符号计算的领域(记得吴文俊的机器证明吗?),符号计算有一套自己的算法来表示和研究数学对象,它与通常进行数值计算的科学计算器很不一样。比如分解多项式,它就是先在有限域上计算(有限域运算比较慢,但是不存在精度损失的问题),然后回到实数域上。插值的方法也很常用,但是不是你想的那种用法。
xrlin
2017-10-10 14:50:52 +08:00
厉害
ipwx
2017-10-10 14:53:25 +08:00
@z0z Python 的话,有 SimPy,有 Sage Math。
vtwoextb
2017-10-10 15:01:22 +08:00
一脸蒙蔽的进来,一脸蒙蔽的出去
SakuraSa
2017-10-10 15:02:16 +08:00
很 cool,不知道能不能放出源码供大家学习一下?
z0z
2017-10-10 15:05:22 +08:00
@mathzhaoliang 多谢,我按照这个思路先去查查,目前我还不能就此问题回复,因为我还不知道该说什么,我是不是暴露了我的数学还很不好.......

@ipwx 多谢啊,这个我也去查查。
shingle
2017-10-10 15:06:34 +08:00
@SakuraSa 根据 gif 图的路径看不出来 github 项目地址么 ╮(╯_╰)╭
CEBBCAT
2017-10-10 15:17:28 +08:00
好棒!我要在我们 Minecraft 服务器用这个做多层迷宫
dalang
2017-10-10 15:20:26 +08:00
cool
malkavia
2017-10-10 15:35:02 +08:00
github 已 star
好厉害
SakuraSa
2017-10-10 15:42:33 +08:00
@shingle 我没注意到...
点进去居然发现是我以前 star 过的...
mathzhaoliang
2017-10-10 15:51:31 +08:00
@CEBBCAT 这个方法比常用的 Prim, Kruskal 算法要慢,它的关键在于生成的迷宫服从一致分布。你在游戏里面用这个算法估计会很慢 。。。
CEBBCAT
2017-10-10 17:17:31 +08:00
@mathzhaoliang #17 (●'◡'●),人工识图盖迷宫
Mcatt
2017-10-10 17:21:37 +08:00
厉害
liyang803
2017-10-10 17:22:37 +08:00
一脸蒙蔽的进来,一脸蒙蔽的出去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/396442

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX