关于算法的一个小提示
2012-5-1 22:14:36
收藏:0
阅读:91
评论:2
我需要一个算法,从点 a 到点 b,花费给定的 n 像素(或者我可以将面积大于一个像素的方块视为一个像素)。 例如: 如果在笛卡尔平面中,点 a = (0,0) 和点 b = (100,150),n = 350,我想让算法按如下方式行动: 如果点 a 和点 b 的和等于 n,则直接走向最终点(即 x=100,y=150) 但如果上述条件不成立,则绕着计划走,直到上述条件成立,然后直接走向该点。
我在思考上述算法的一些内容。我的问题是,算法不能花费比 n 更多或更少的像素,它必须恰好是 n。
我目前正在使用 Lua,但这并不重要,因为我想在这里改进我的想法,而不是准备另一种想法。
原文链接 https://stackoverflow.com/questions/10404999
点赞
stackoverflow用户786351
我不确定你使用的距离度量是什么。如果你从(0,0)开始,想要到达(3,4),那么是需要5步(欧几里得距离)还是7步(曼哈顿距离)?如果你使用的是欧几里得距离,那么你如何处理无理数距离?
我假设你使用的是曼哈顿距离,并提出了一个概率解决方案。
假设你距离目的地m步,需要在n步内完成( n >= m )。让我们将当前状态定义为(m,n)。如果你向目标前进一步,则问题状态为(m-1,n-1),如果离目标更远,则状态为(m+1,n-1)。
在每个点上,使用“当前”状态计算向目标前进的概率p = 3*m/(3*m +(n-m))。生成0到1之间的随机数,如果小于p,则向目标前进,否则远离目标。
def nextmove(m,n):
p = 3.0*m/(3*m + (n-m) )
if random.random() <=p:
return m-1,n-1,'向目标前进'
else:
return m+1,n-1,'远离目标'
2012-05-01 23:36:59
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
有任何关于路径应该是什么样子的偏好吗?怎么样先让算法走直线,然后在最后一个方块来回打转直到用完所有步数?或者一个看起来稍微好一点的算法会像这样:
假设点A是(0,0),点B是(0,p),现在找到点C(x,0)满足路径A->C->B的长度为n。很容易得到x = sqrt(n^2 - p^2)。如果n==p,c=0,这意味着直接走直线。