java 板


LINE

※ 引述《H45 (!H45)》之铭言: : ※ 引述《TonyQ (骨头)》之铭言: : BFS 不行吗...? : 觉得广度优先走访太笨的话,就用 Best first search : 其中的 A* algorithm 应该是最「聪明」的吧? (当然有许多元素要自己定义) 嗯 後来采用A* cost不高(距离是20格内的小地图 , 每次约0~5 ms) 又很自然,是很不错的东西。 贴上一点当时的参考资料和我的实作code 参考资料 (这两篇其实是翻译同一篇文章 不过对照着看有不同收获) http://www.roboticfan.com/college/knowledge/200606/147.shtml http://swf.com.tw/?p=67 code实作 http://tony1223.no-ip.info:1223/bmore?Flyword&4642 (因为码有点长,我直接贴我的webbs连结。 如果连结跑掉了可以来信跟我说T^T) 底下是一点点的心得 , 有错的地方欢迎提出来讨论 .(冏) 1.基本原理 g = 路径成本 , h=到达目标的"估计"成本 , F=总成本(g+h) 它并不直接找出一条路径,而是透过计算成本後指定前一格的方式。 当到达终点时,透过终点回推最低成本的路径, 从终点的的前一格→前一格→前一格→起始格‧找到路径。 有点类似LinkedList的那种串联的概念... 这边看起来还蛮抽象的T^Ta 失败了三四次才成功 2.它的发展并不是就单一条线的发展 而是就目前的视野(openlist) 去找出以目前的视野底下成本最低的路径(F值最低) 我一开始一直以为它是沿线寻找...所以把cango写错了... 这是蠢点1 orz 3.它的作法是建立一个大地图的阵列(whichlist),然後每次查询给与不 同的onClose跟onOpen,感觉上是为了方便连续多次的查找的时候, 不会互相混淆。 不过我的case由於地图本身座标值蛮高的, 几百个地图又没有一个固定的size,所以建表法对我来讲不实际。 我采用的是把xy先做hash , f(x,y) = x*最大长度 +y 的状况, (in my case f(x,y) = 50000*x+y) 把看过的点(onOpen and onClose) 建立在 allpoint 这个HashMap里面。 只要透过查找Hash值就可以马上知道这个点是不是已经存在, 而且也可以知道这个点是 onClose或onOpen 。(透过Node的type纪录) 4.另外openList采用BinaryHeap维护 ... (minHeap) 降低查找最低F的成本 (这个增进效能非常多) ──────────────────────────────── 3跟4 如果是用List再用 O(n) 的列举法取做查找,效能差蛮多的 以底下的测资来说,我采用前者时是 106ms,采用後者时16 ms... ̄▽ ̄ 不过我前者的code没留下来,所以可能也是我哪里有没写好的地方...XD 另外影响这演算法的地方有两个... 1.G值的计算, 会直接影响到取点的优先度... 在我的case是以角色为中心的八格损耗都一样。 在参考文章的范例则是走斜角会加大损耗。 2.cango的地方可以决定哪些点是可以走的 另外 扫点的时候不见得要扫九宫格... 视case不同的情况而定 -- 11001100111111110101 01001000001100011001 11010010100111101111 10011100000010100100 10111001011100100101 11101000111111100101 10001101000010000100 11110101010110000100 11101111100010011101 10111000101010011110 11001000011111001101 01101001110100010110 00111100101011111010 10001001110111110011 00001010111010010001 11111101001001101011 10010101111011111010 10111011010110110111 11101001101000011100 00011111001110011111 --  ▄▅▆▇███▇▆▅▄▃        ╰┼╯─╮ ╮         ◥███████████◣       ╰┼╯=│=│         ◥██████───────    *. ╯  ╯ ╯ の 物 语 .*  ◥███████──────◣ ~ ◢◣             ◢◣  ◥██████───────◤   ◥◤  空白的世界.翼 ◥◤  ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂telnet://tony1223.no-ip.info --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68 ※ 编辑: TonyQ 来自: 220.134.27.68 (05/29 05:32)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP