链路状态算法(LS)

本文介绍了链路状态算法(LS),重点在于问题描述、算法思路及代码实现。通过网络拓扑和链路开销作为输入,算法输出每个节点到其他节点的最低开销路径。算法采用迭代方式,每次迭代确定一个目的节点的最短路径,通过比较更新最短路径,并在迭代n次后得到所有节点的最短路径。
摘要由CSDN通过智能技术生成

链路状态算法(LS)

1.问题描述

输入:网络拓扑和链路开销
输出:每个节点的到其他节点的最低开销以及路径(这里简化为只求最低开销也就是dijkstra算法)

2.思路

  • 迭代次数:经过k次迭代之后,可以知道k个目的节点的最短开销路径
  • 变量说明
    distance(i):到算法本次迭代,从源节点到目的节点i的最低开销路径
    min_node 目前已知的到源节点的路径中,距离源节点最近的节点
    vist记录目前已经访问过的节点
  • 计算步骤
  1. 首先找与开始节点最近的点 min_node
  2. 然后更新最短路径。如果目的节点经过min_node 到达源节点更近,那就更新目的节点的最短路径
  3. 迭代n次

3.代码

// LS.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <vector>
#include <algorithm>
#define N 6
#define None 9999
#define NOREACH 9999
using namespace std;
//输入为点的关系以及出发点
//输出为出发点到各点的最短路径
vector<int> LS(vector<vector<int>>& graph, int start)
{
   
    
    vector<int> visit(N, 0);        //定义访问的数组,记录已经访问过哪些节点,0表示未访问,1表示已经访问过   
    vector<int> distance(N, NOREACH);//定义最短路径数组,记录目前已经访问过的节点距离起始点的最短路径   
   // visit[start] = 1;               //先把起始节点标记为访问过
    distance[start] = 0;            //起始点距离起始点的距离为0
    

    //循环N次,依次遍历每一个节点
    for(int j=0;j<N;j++)
    {
   
        int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值