五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

dikjstra尋路算法

2023-07-28 13:10 作者:李偉_Li慢慢  | 我要投稿

至今,我偶爾會遇到一些尋路的尋求,雖然是偶爾,但時間久了,也就多了。

我對尋路是沒有太多研究的,所以就去B站搜了一下,搜到一個很棒的dikjstra教程。

我照著這個教程,用ts寫了一下這個邏輯,分享給大家。

整體代碼如下:

最終,console.log(optimal) 輸出的結(jié)果就是:[4, 5, 6, 7, 0]

這與dikjstra教程里的結(jié)果是一致的。

根據(jù)這個教程內(nèi)容,做個筆記。

已知:

  • 節(jié)點關(guān)系map,即每個節(jié)點的鄰點

  • 節(jié)點距離segmentLengthMap,存在聯(lián)系的兩個節(jié)點間的距離

  • 起點start為0

  • 終點end為4

注:上圖的節(jié)點距離并非通過兩點間的距離公式算出來的,所以我們不能通過線段長度來區(qū)分距離的大小。

求:起點到終點的最短路徑

解:

1.對起點做標(biāo)記,將起點添加到標(biāo)記點集合mark中。

起點的路徑距離默認(rèn)為0,路徑距離就是節(jié)點到起點的路徑距離,所以起點到起點的默認(rèn)距離為0。

起點的前面點默認(rèn)為undefined,因為起點就是最源頭的點,沒有前面點。

2.讓未標(biāo)記點集合unmark等于map中除start之外的所有點。

3.遍歷當(dāng)前標(biāo)記點(第一個標(biāo)記點就是起點)的鄰點。

若鄰點在標(biāo)記點集合mark中,跳過此點;

否則,若當(dāng)前鄰點過當(dāng)前標(biāo)記點的路徑距離小于當(dāng)前節(jié)點的已記錄過的路徑距離,則:

  • 更新當(dāng)前鄰點的路徑距離為當(dāng)前鄰點過當(dāng)前標(biāo)記點的路徑距離。

  • 更新當(dāng)前鄰點的前面點為當(dāng)前標(biāo)記點。

4.遍歷未標(biāo)記點集合unmark,從中找出路徑最短的點nearest。

對nearest點做標(biāo)記,將其添加到mark中,并從unmark中刪除。

5.若unmark不為空,以nearest點為標(biāo)記點,重復(fù)3,4,5步驟。

當(dāng)unmark為空的時候,所有的節(jié)點就都完成了標(biāo)記。

6.對終點進(jìn)行回溯,尋找其前面點的前面點的前面點的前面點……,直到找到其源頭的點-起點。

把上面的一堆前面點按序連在一起,就是最短路徑了。

參考鏈接:https://www.bilibili.com/video/BV1zz4y1m7Nq/?spm_id_from=333.337.search-card.all.click&;vd_source=fc98bc82ca25234b3a3030baea035443

dikjstra尋路算法的評論 (共 條)

分享到微博請遵守國家法律
烟台市| 盐池县| 陆河县| 东台市| 衢州市| 百色市| 修文县| 福建省| 南丹县| 思南县| 望谟县| 巩留县| 定结县| 龙里县| 攀枝花市| 聂拉木县| 高陵县| 南澳县| 全南县| 阜南县| 盱眙县| 类乌齐县| 巴楚县| 凤翔县| 新竹市| 澄城县| 云林县| 南川市| 牙克石市| 江口县| 永康市| 衡南县| 馆陶县| 共和县| 广平县| 林甸县| 广丰县| 抚远县| 德安县| 扶沟县| 盐亭县|