MATLAB求有向图中两节点间距离代码
时间: 2024-05-08 15:22:20 浏览: 22
以下是求有向图中两节点间距离的MATLAB代码示例:
```matlab
% 定义有向图的邻接矩阵
adj_matrix = [0 1 1 0;
0 0 1 0;
0 0 0 1;
0 0 0 0];
% 选择起点和终点
start_node = 1;
end_node = 4;
% 初始化距离和队列
dist = Inf(1,size(adj_matrix,1));
dist(start_node) = 0;
queue = start_node;
% 广度优先搜索
while ~isempty(queue)
curr_node = queue(1);
queue(1) = [];
for i = 1:size(adj_matrix,1)
if adj_matrix(curr_node,i) == 1 && dist(i) == Inf
dist(i) = dist(curr_node) + 1;
queue(end+1) = i;
end
end
end
% 输出结果
if dist(end_node) == Inf
fprintf('起点和终点不连通\n');
else
fprintf('起点到终点的距离为:%d\n',dist(end_node));
end
```
在上述代码中,我们采用了广度优先搜索的算法来搜索图中的最短路径。首先定义了有向图的邻接矩阵,然后选择起点和终点。接着初始化了距离和队列,将起点加入队列。然后进行广度优先搜索,不断从队列中取出当前节点,遍历其所有邻居节点,如果邻居节点还未被访问过,则更新其距离和将其加入队列。最后输出结果,如果起点和终点不连通,则输出不连通的信息,否则输出起点到终点的距离。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)