首页 > 编程语言 >路由选择算法简要介绍

路由选择算法简要介绍

时间:2024-02-18 11:45:51浏览次数:26  
标签:简要 Dx 路径 距离 算法 向量 邻居 节点 路由

本文仅对LS和DV进行简单的介绍, 由于作者初学计算机网络, 同时也没有学习图论的知识, 若有不妥之处还请指出.

一、链路状态算法(LS)

特殊量:

  • D(v):直到本次迭代,从源节点到节点v的最低路径开销
  • p(v):从源到v沿着当前最低开销路径的前一节点
  • N':已确定最短路径的节点集
  • c(a, b):两个相邻节点a, b,c(a, b)是a到b的距离

内容:

//初始化
N' = {u}  //将起点u初始化进N中
对于所有节点v
    if v与u相邻
        then D(v) = c(u,v) //将到u,v的距离记为到v的最小距离
//初始化时的最小距离不一定是真正的最小距离
    else D(v) = 正无穷
//循环
在还未记入N'的所有点中找到点w, 使得D(w)最少
将w节点加入N'
新的节点加入后,以这样一种法则更新每个节点的D(v)
	D(v) = min(D(v), D(w)+c(w,v))
	//看一下w加入后产生新的走法是否要更快
当N' = N 时,结束循环

该算法会不断更新N', 并进一步地更新最佳路径, 最终找到最短路径

二、距离向量路由选择算法(DV)

特殊量:

  • x到y的最短路径 = c(x, v) + v到y的最短路径

    其中,对于x的所有邻居, 存在一个节点v使上式满足

  • Dx = [Dx(y): y属于N]

    Dx是节点x的距离向量, 包含x到N之中的每一节点的开销估计值

  • 使用DV算法, 每个节点应当维护这几个值

    • 直接到每个邻居的距离c(x, v)
    • 节点x的距离向量Dx
    • 每个邻居的距离向量Dv
  • 那么由上述的方程x到y的最短路径 = c(x, v) + v到y的最短路径可以推出距离向量的更新方法:

    Dx(y) = min( c(x, v) + Dv(y) )
    即,先在x的所有节点中选择一个节点v, 使得c(x, v) + Dv(y)最小
    则,x到y的最短路径 = x到v的距离 + v到y的估计最短路径
    

    内容:

    //初始化
    对于N中的所有终点y:
    	Dx(y) = c(x, y)  //若x, y不为邻居, 则c(x, y)为正无穷
    对于x的每个邻居w
    	Dw(y) = ? for all destination y in N //估计w到y的开销, 式中以?替代
    对于x的每个邻居w
    	向每个w发送距离矢量Dx
    //循环
    	wait until 发现到邻居的链路开销变化 or 收到某个邻居w的距离向量
    对于N中的每一个y
    	Dx(y) = min( c(x, v) + Dv(y) )  //更新估计值
      if x 的距离向量变化了
      	则, 发送 x 的距离向量给每一个邻居
    

    ​ 通过邻里之间的联系不断更新最低开销的预估值, 由于总会有一个v(可能是邻居的邻居的...的邻居)与目的地y相连, Dv若是最短路径便可以依次传回, 最终被源节点x所接收.

标签:简要,Dx,路径,距离,算法,向量,邻居,节点,路由
From: https://www.cnblogs.com/Fgociallo/p/18019009

相关文章

  • day28 回溯算法part4 代码随想录算法训练营 78. 子集
    题目:78.子集我的感悟:看见弹幕是秒了,我有点不敢相信,自己试了试,没有通过,再看了一眼文字讲解。感觉懂了点理解难点:这题可以没有终止条件,开始我就疑惑这个终止条件怎么写注意这个nums[i]要添加进入是可以不写终止的,不会出现无线递归的,因为是从i+1开始,那会不会越界??,不会,最......
  • 今天练习2-回溯算法-93. 复原 IP 地址
    注意点&感悟:加油!题目链接:93.复原IP地址自己独立写的代码:classSolution:defrestoreIpAddresses(self,s:str)->List[str]:res=[]self.backtracking(s,0,[],res)returnresdefbacktracking(self,s,start_index,path,res......
  • 今天练习-回溯算法-93. 复原 IP 地址
    注意点&感悟:难吗?不难。难的是克服畏难的心里。题目链接:93.复原IP地址自己独立写的代码:fromtypingimportListclassSolution:defrestoreIpAddresses(self,s:str)->List[str]:res=[]self.backtracking(s,0,[],res)return......
  • day28 回溯算法part4 代码随想录算法训练营 93. 复原 IP 地址
    题目:93.复原IP地址我的感悟:加油!理解难点:开始没理解,start_index的含义start_index是切割后的位置信息。代码难点:代码示例:fromtypingimportListclassSolution:defrestoreIpAddresses(self,s:str)->List[str]:#找3个分割点?#最后......
  • 算法入门:搜索算法
    文章目录1.二分查找2.深度优先搜索(DFS)3.广度优先搜索(BFS)4.DFS与BFS区别 1.二分查找思想:二分查找是一种高效的查找算法,它基于分治思想,适用于已排序的数组。确定搜索范围:首先确定整个数组的搜索范围,通常是从数组的起始位置到结束位置。计算中间位置:计算搜索范围的中......
  • 排序算法总结
    冒泡排序稳定排序时间复杂度o(n2)空间复杂度o(1)点击查看代码staticvoidBubbleSort(){int[]data={1,8,5,7,9,4,6,99,88,74};inti,j,flag;//岗哨模式的冒泡排序for(i=data.Length-1;i>0......
  • Python 机器学习 逻辑回归算法
    ​ 1、理解逻辑回归逻辑回归建立在线性回归之上。在线性回归中,模型预测的是一个连续的数值。而在逻辑回归中,线性回归的输出被输入到Sigmoid函数中,用于预测某个类别的概率。Sigmoid函数是一个S形的曲线,它将任意实数映射到(0,1)区间,适合用来表达概率。逻辑回归广泛应用于各种......
  • 【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • 【数据结构】串的表示与模式匹配算法
    串串是内容受限的线性表(栈和队列是操作受限的线性表)串(string)是零个或多个任意字符组成的有限序列S:串名a1a2a3...an:串值n:串长当n=0时,表示空串,空串用\(\phi\)表示子串:一个串中任意个连续字符组成的子序列(含空串)例如“abc”的子串有“”、“a”、“b”、"c"、"ab"......
  • 对最大公约数求法和扩展欧几里得算法的简要概述
    目录1.最大公约数(gcd)1.1更相减损术时间复杂度分析1.2辗转相除法(欧几里得算法)时间复杂度分析2.最小公倍数(lcm)3.裴蜀定理(贝祖定理)3.1扩展欧几里得算法(exgcd)1.最大公约数(gcd)数论中,通常用\(d\|\a\)表示\(d\)能整除\(a\),即\(......