首  页   最新日志    火人论坛        火人作品    编程园地    网络日志    网友作品     留言本本     关于火人
用户登陆
用户:
密码:
 

站点日历
73 2019 - 4 48
 123456
78910111213
14151617181920
21222324252627
282930




日志搜索

 标题   内容

 
 
仔仔成长日记(二)第一次抬头看世界 DelphiX制作的马赛克效果
多云 带加权的寻路算法演示(DELPHI源码)
   [分类:编程园地][发表日期:2005-12-26] [发表:火人[查看:71112]

按此在新窗口打开图片
     关于A*寻路算法的代码在网上有很多,但用DELPHI的比较少,火人花了一天时间找到这个,代码和界面都比较精炼,于是在关键处作了中文注释,但愿对朋友们有用。

点击下载此文件

A*寻路算法简介

A*与最好优先算法的原理类似,只是最好优先算法在路经上给出了节点的代价,而A*算法需要F(NODE) = G(NODE)+H(NODE)的估价函数来估计当前点的代价。

最好优先算法的原理是(伪代码):

 Best_First_Search()
{
 Open = [起始节点];
 Closed = [];
 while (Open表非空)
 {
  从Open中取得一个节点X,并从OPEN表中删除。
  if (X是目标节点)
  {
   求得路径PATH;
   返回路径PATH;
  }
  for (每一个X的子节点Y)
  {
   if (Y不在OPEN表和CLOSE表中)
   {
    求Y的估价值;
    并将Y插入OPEN表中;
   }
   //还没有排序
   else if (Y在OPEN表中)
   {
    if (Y的估价值小于OPEN表的估价值)
     更新OPEN表中的估价值;
   }
   else //Y在CLOSE表中
   {
    if (Y的估价值小于CLOSE表的估价值)
    {
     更新CLOSE表中的估价值;
     从CLOSE表中移出节点,并放入OPEN表中;
    }
   }
   将X节点插入CLOSE表中;
   按照估价值将OPEN表中的节点排序;
  }//end for
 }//end while
}//end func

注意本例程的算法与伪代码还是有些区别,不然你会看糊涂的。:)



引用这个评论 abc123456a 于 2009-01-06 04:45 PM 发表评论: 
下载地址不是在上面了吗

引用这个评论 secondsen 于 2008-01-06 05:21 PM 发表评论: 
那个代码可以发出来么?

引用这个评论 lakegate 于 2005-12-27 02:15 PM 发表评论: 
很不错哦,谢谢!

 

发表评论
发表: 用户:  密码:   注册?  
验证码    
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 

Copyright © 2006 All rights reserved. Design by huosoft

电话:13974847258    QQ群:7155339
Powered by L-Blog V-Blog 2004-2005