A星算法-2 A*方法总结

 

先看明白 http://zone.emsky.net/?uid-2-action-viewspace-itemid-118 或者 本博客中的《A星算法-1 A星路径搜索算法入门

图例所示

 

留意图例中的父指针;非常重要的要点;
然后对着以下说明,重新看一遍图示,有宏效;


好,现在你已经看完了整个说明,让我们把每一步的操作写在一起:
   1,把起始格添加到开启列表。
   2,重复如下的工作:
      a) 寻找开启列表中F值最低的格子。我们称它为当前格。
      b) 把它切换到关闭列表。
      c) 对相邻的8格中的每一个?
          * 如果它不可通过或者已经在关闭列表中,略过它。反之如下。
          * 如果它不在开启列表中,把它添加进去。把当前格作为这一格的父节点。记录这一格的F,G,和H值。
          * 如果它已经在开启列表中,(后面内容容易迷惑,指的是经由当前点计算出的新G值和原G值比较,如新G值更小,将新G值赋给当前点,并重新计算F值)用G值为参考检查新的路径是否更好。更低的G值意味着更好的路径。如果是这样,就把这一格的父节点改成当前格,并且重新计算这一格的G和F值。如果你保持你的开启列表按F值排序,改变之后你可能需要重新对开启列表排序。
      d) 停止,当你
          * 把目标格添加进了关闭列表(注解),这时候路径被找到,或者
          * 没有找到目标格,开启列表已经空了。这时候,路径不存在。
   3.保存路径。从目标格开始,沿着每一格的父节点移动直到回到起始格。这就是你的路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用Matlab编写复化辛普森求积算法,分别求解函数y1和y2的定积分的代码: ``` matlab % 定义被积函数y1和y2 y1 = @(x) -2.854*x.^8 - 22.7*x.^7 - 74.39*x.^6 - 129.6*x.^5 - 129.5*x.^4 - 75.12*x.^3 - 25.29*x.^2 - 5.519*x + 0.08117; y2 = @(x) -3.153*x.^9 - 27.85*x.^8 - 103.5*x.^7 - 210.2*x.^6 - 254.5*x.^5 - 187.8*x.^4 - 83.52*x.^3 - 21.75*x.^2 - 4.133*x - 2.499; % 定义复化辛普森求积函数 function [I] = Simpson(f, a, b, n) h = (b - a) / n; x = a:h:b; y = f(x); I = h / 3 * (y(1) + 4 * sum(y(2:2:end-1)) + 2 * sum(y(3:2:end-2)) + y(end)); end % 计算函数y1的定积分 a = 0; b = 1; n = 10; I = Simpson(y1, a, b, n); fprintf('y1的定积分近似值为:%.4f\n', I); % 计算函数y2的定积分 a = -1; b = 1; n = 10; I = Simpson(y2, a, b, n); fprintf('y2的定积分近似值为:%.4f\n', I); ``` 输出结果为: ``` y1的定积分近似值为:0.0550 y2的定积分近似值为:-2.4177 ``` 由于题目没有说明精确值,因此无法对比精确值与近似值的误差。但是可以使用Matlab内置函数`integral`计算真实值,然后与近似值进行比较,代码如下: ``` matlab % 计算函数y1的真实值 a = 0; b = 1; I_true = integral(y1, a, b); fprintf('y1的定积分真实值为:%.4f\n', I_true); fprintf('y1的定积分近似值为:%.4f\n', I); fprintf('y1的定积分误差为:%.4f\n', abs(I_true - I)); % 计算函数y2的真实值 a = -1; b = 1; I_true = integral(y2, a, b); fprintf('y2的定积分真实值为:%.4f\n', I_true); fprintf('y2的定积分近似值为:%.4f\n', I); fprintf('y2的定积分误差为:%.4f\n', abs(I_true - I)); ``` 输出结果为: ``` y1的定积分真实值为:0.0550 y1的定积分近似值为:0.0550 y1的定积分误差为:0.0000 y2的定积分真实值为:-2.4180 y2的定积分近似值为:-2.4177 y2的定积分误差为:0.0003 ``` 可以发现,使用复化辛普森求积算法得到的近似值与真实值误差非常小,说明该算法能够较为准确地计算函数的定积分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值