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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

dijkstra算法matlab程序_Dijkstra算法例子

發(fā)布時間:2025/3/15 循环神经网络 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dijkstra算法matlab程序_Dijkstra算法例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在Dijkstra算法代碼下載本文涉及到的代碼。

程序代碼

Dijkstra算法的程序如下:

function [d, p] = dijkstra(adj, s, t) % 使用dijkstra求最短路徑 % adj 輸入 矩陣 鄰接矩陣 % s 輸入 整數(shù) 起點 % t 輸入 整數(shù) 或 [] 終點 % d 輸出 向量 路徑長度,若t==[],則返回從起點到所有節(jié)點的路徑長度 % p 輸出 向量 或 元胞 路徑,若t==[],則返回從起點到所有節(jié)點的路徑(cell) nodes_num = size(adj, 1); dist = inf(nodes_num, 1); previous = inf(nodes_num, 1); Q = [1:nodes_num]';% 求鄰居 neighbors = cell(nodes_num, 1); for i = 1:nodes_num; neighbors{i} = find(adj(i, :) > 0); enddist(s) = 0; while ~isempty(Q)% 取出距離最小點[~, min_ind] = min(dist(Q));min_node = Q(min_ind);Q = setdiff(Q, min_node);% 若是終點,則結(jié)束程序if min_node == td = dist(min_node);p = generate_path(previous, t);return;end% 更新鄰居的距離for i = 1:length(neighbors{min_node})neighbor = neighbors{min_node}(i);alt = dist(min_node) + adj(min_node, neighbor);if alt < dist(neighbor)dist(neighbor) = alt;previous(neighbor) = min_node;endend end d = dist; p = cell(nodes_num, 1); for i = 1:nodes_num; p{i} = generate_path(previous, i); end end% 由前趨推出路徑 function path = generate_path(previous, t) path = [t]; while previous(t) <= length(previous)path = [previous(t) path];t = previous(t); end end

找圖中頂點間最短距離

在這樣一張圖中,找到從A到D的最短距離和路徑。構(gòu)造鄰接矩陣如下:

adj = [0 12 0 0 0 16 14;12 0 10 0 0 7 0;0 10 0 3 5 6 0;0 0 3 0 4 0 0;0 0 5 4 0 2 8;16 7 6 0 2 0 9;14 0 0 0 8 9 0];

指定起點和終點,使用上面的程序計算即可:

[dist, path] = dijkstra(adj, 1, 4);

結(jié)果如下:

最短距離: 22.00 路徑 : 'A' 'F' 'E' 'D'

找柵格地圖中兩點間最短距離

如下圖所示柵格地圖,指定起點和終點,智能體(或機(jī)器人)只能在“上、下、左、右”四個方向移動,找出最短路徑:

結(jié)果如下:

可以直接提供鄰接矩陣給上面的程序,但是需要修改程序中求鄰居的部分(四個方向相鄰柵格中不是障礙物的柵格),同時還需要在程序中對某柵格是否是障礙物進(jìn)行判斷,因為是障礙物的話程序不需要對該柵格進(jìn)行規(guī)劃。

也可以為程序提供柵格數(shù)量(除障礙物)和每個柵格的鄰居,刪除程序中求鄰居的部分,修改程序中鄰居間的距離(比如為1)即可。

總結(jié)

以上是生活随笔為你收集整理的dijkstra算法matlab程序_Dijkstra算法例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。