最短路徑的A 演算法

2021-08-20 03:06:06 字數 1218 閱讀 7301

這裡原理就是根據乙個g(到起始點的真實路徑)、h(到目標點的真估計數值),用這個來衡量路徑的好壞,這樣找乙個合適的h函式就是個問題,而且在執行時,套路是這樣的,乙個open表,乙個close表,open用來存遍歷了卻還沒有真正訪問的點,close用來存訪問過的點,每次都選open表中f函式最小的節點,拿出來訪問,在遍歷其周圍的節點,把它再存到open表中,再迴圈直到找到終點為止。

我的a* 演算法,跑一些複雜地圖時,可能就會有bug,路徑有可能會不是最短,也可能會有斷點,也就是貼出來留個紀念,但是跑一般的圖時,不會有事。

#include#include#include#include#define red "\033[31m" /*red*/

#define yellow "\033[33m" /*green*/

#define reset "\033[0m"

using namespace std;

typedef struct node

node(int x,int y,node* father)

}node;

int weightw=10;//直線代價

int weightwh=14;//對角線代價

int row=20;//行

int col=20;//列

class a_star

;void printmap();

int map[100][100]= //地圖(純手打)

, ,,,

,,,,

,,,,

,,,,

,,,,

,};a_star::a_star()

a_star::~a_star()

void a_star::search(node* start,node* end)

void a_star::check(int x,int y,node* father,int g)//用來訪問節點

}else//如果兩個表都不在就計算一下f值,存到open表中

}int a_star::finding(vector* nodelist,int x,int y)

}return j;

}bool a_star::compare(node* n1,node* n2)

void a_star::print(node* current)//將路徑制為7

}void printmap()//輸出地圖

最短路徑演算法 最短路

在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...

最短路徑演算法

floyd演算法 012345 001 54 1108 1 2 801 3 3 1035 45 302 5413520 floyd 演算法過程描述如下 首先 以邊集 初始化,得到所有的直接連通代價 依次考慮第 k個結點,對於 中的每乙個 i j 判斷是否滿足 s i j s i k s k j 如果...

最短路徑演算法

個人覺得下面 有代表性 最短路徑演算法原始碼 vb 本人載 開發gis,遊自編的最短路徑查詢程式,速度特快,3萬節點,35000條路全部遍歷,只需1秒。現將最短路徑的思路告訴大家,希望大家在優化,並用不同語言編制,我正在學delphi,準備用delphi做成庫,本例以由拓撲關係的arc info 檔...