日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Astar算法笔记

發(fā)布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Astar算法笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

A*算法筆記

A*算法介紹

A*算法最初發(fā)表于1968年,由Stanford研究院的Peter Hart, Nils Nilsson以及Bertram Raphael發(fā)表。它可以被認為是Dijkstra算法的擴展。

A*算法屬于啟發(fā)式搜索(Heuristically Search)。


其他搜索算法

1.廣度優(yōu)先搜索

以廣度為優(yōu)先級向外拓展。

2.Dijkstra算法

由迪杰斯特拉在1956年提出,利用貪心策略,每次拓展權值最小的節(jié)點直到終點,如果每個節(jié)點權值相同,將退化成BFS。

3.最佳優(yōu)先搜索(Best First)

預先計算出每個節(jié)點到終點的距離,利用優(yōu)先隊列選取代價最小的節(jié)點,但是又最大的缺點就是搜索結果不一定是最優(yōu)解。


A*算法具體實現

A*算法利用下面的函數計算優(yōu)先級

f(n)=g(n)+h(n)f(n)=g(n)+h(n) f(n)=g(n)+h(n)

其中:

  • f(n)為綜合優(yōu)先級

  • g(n)為從起點出發(fā)已消耗的代價

  • h(n)為節(jié)點距離終點預計代價,即啟發(fā)式函數

并且使用兩個集合表示待遍歷節(jié)點(open)和已遍歷節(jié)點(close)。

input:圖,點和邊的集合。

output:最優(yōu)路徑

偽代碼

將起點加入open表; while(open表不為空){取出open表中優(yōu)先級最高的節(jié)點n;if(n為終點){從終點回溯構造最優(yōu)路徑;返回最優(yōu)路徑;}else{將n加入close表;for(遍歷鄰居節(jié)點){if(鄰居節(jié)點在close表中||無法拓展) 跳過;if(鄰居節(jié)點在open表中){更新g(n);}else{計算優(yōu)先級;將n設置為父節(jié)點;將此鄰居節(jié)點加入open表中;}}} } 如果open表為空,則起點終點不連通;

啟發(fā)式函數

利用啟發(fā)式函數可控制A*算法行為。

  • 如果h(n) = 0,算法退化為Dijkstra算法。

  • 如果h(n)總小于實際值,則結果一定為最短路徑,不會漏解。越小可擴展節(jié)點越多,算法越慢。

  • 如果h(n)等于實際值,擴展路徑即為最短路徑,無法實現。

  • 如果h(n)大于實際值,有可能漏解,但是擴展節(jié)點變少,算法速度變快。

通過以上幾種情況可知,我們可以設計h(n)函數達到我們目的,這就是A*算法靈活所在。


關于地圖

算法關注的只有圖(Graph),對于算法效率而言,圖的節(jié)點數越少越好,這樣擴展節(jié)點少遍歷次數也少。

包括柵格地圖,多邊形地圖 …


關于距離

基于柵格地圖

Manhattan距離

在不允許對角擴展的情況下,可以使用曼哈頓距離,D為移動代價。

h(n)=D?(abs(n.x?goal.x)+abs(n.y?goal.y))h(n)=D*(abs(n.x-goal.x)+abs(n.y-goal.y)) h(n)=D?(abs(n.x?goal.x)+abs(n.y?goal.y))

對角線距離

在允許對角移動是,可以使用對角線距離,D為上下左右移動代價,D2為對角移動代價,如D2=sqrt(2)*D。

h_diagonal(n)=min(abs(n.x?goal.x),abs(n.y?goal.y))h\_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y)) h_diagonal(n)=min(abs(n.x?goal.x),abs(n.y?goal.y))

h_straight(n)=(abs(n.x?goal.x)+abs(n.y?goal.y))h\_straight(n) = (abs(n.x-goal.x) + abs(n.y-goal.y)) h_straight(n)=(abs(n.x?goal.x)+abs(n.y?goal.y))

h(n)=D2?h_diagonal(n)+D?(h_straight(n)?2?h_diagonal(n))h(n) = D2 * h\_diagonal(n) + D * (h\_straight(n) - 2*h\_diagonal(n)) h(n)=D2?h_diagonal(n)+D?(h_straight(n)?2?h_diagonal(n))

參考資料:

Introduction to the A* Algorithm

https://zhuanlan.zhihu.com/p/54510444

PathFinding.js

A*—java代碼 - 木子木泗 - 博客園

https://www.gamedev.net/reference/articles/article2003.asp

A*算法中啟發(fā)函數的使用_free4wuyou的專欄-CSDN博客_啟發(fā)函數

總結

以上是生活随笔為你收集整理的Astar算法笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 4438x亚洲最大 | 超碰免费av | 国产高潮流白浆喷水视频 | 精品视频在线观看一区二区 | 国产成人亚洲欧洲在线 | 污污网站在线免费观看 | 奇米一区 | 少妇人妻偷人精品视频蜜桃 | 96av在线视频 | 蜜桃av中文字幕 | 中文人妻一区二区三区 | а 天堂 在线| 国产成人黄色 | av一区在线观看 | 久久在线看 | 男生女生羞羞网站 | 亚洲Av无码成人精品区伊人 | 黄色三级视屏 | 精品人妻一区二区三区浪潮在线 | 欧美日韩999 | av在线麻豆| 九色porn蝌蚪 | 色婷婷九月 | 久久国产乱子伦免费精品 | 成年人网站免费观看 | 国产一区免费在线 | 亚洲综合精品在线 | 国产三级日本三级在线播放 | 91黑人精品一区二区三区 | 日本女人毛片 | 日本一二三不卡 | 国产香蕉尹人视频在线 | 欧美videos另类精品 | 97爱视频| 风间ゆみ大战黑人 | 裸体黄色片 | 国产婷婷色一区二区三区 | 日本乱子伦xxxx | 少妇又白又嫩又色又粗 | 一本加勒比hezyo黑人 | 精品一区二区毛片 | 伊人久久国产精品 | 九九在线 | 国产无遮挡又黄又爽 | 午夜你懂的 | av老司机在线观看 | 欧美日韩亚洲第一 | 欧美大胆a | 日韩精品视频三区 | 精品黄网| 91叼嘿视频 | 亚洲激情在线视频 | 最新中文字幕在线观看视频 | 欧美日韩精品一区二区三区 | 国产无遮挡一区二区三区毛片日本 | 狠狠爱天天干 | 色综合久久精品亚洲国产 | 国产男女猛烈无遮挡免费观看网站 | 国产午夜精品一区二区三区 | 欧美日韩国产精品一区二区三区 | 久久蜜臀 | 国产又粗又猛又爽 | 成人啪啪 | 色婷婷国产精品 | 伊人365影院 | 国产夫妻在线视频 | av在线收看 | 一本视频 | 波多野结衣亚洲天堂 | 亚洲第九十七页 | 深爱激情站 | 91高跟黑色丝袜呻吟动态图 | 国产精品字幕 | 高清国产在线 | 黄视频网站免费看 | 国产精品扒开腿做爽爽 | 韩国美女主播跳舞 | 日日射影院 | 狼人综合视频 | 综合在线一区 | 成人免费一区二区三区在线观看 | 国产精品久久免费 | 超碰在线中文字幕 | 毛片网站在线 | 亚洲综合首页 | 免费三级黄 | 天堂视频一区 | 亚洲日日夜夜 | 相亲对象是问题学生动漫免费观看 | 污视频网站在线看 | 少妇高潮一区二区三区 | 亚洲三级在线视频 | 精品一区在线视频 | 经典一区二区三区 | 久久精品亚洲一区 | 神马午夜91 | 成人欧美在线视频 | 久草观看视频 | 欧美成人福利视频 |