任意多个节点的贝尔曼-福特距离向量算法

2024-02-29

我正在尝试为模拟路由器的类编写一个程序,到目前为止我已经设置了基础知识(“路由器”可以通过模拟服务器向连接到该服务器的其他“路由器”发送和接收数据包)。每个数据包仅包含该路由器的距离向量。当路由器接收到数据包时,它应该使用贝尔曼-福特算法相应地更新它自己的距离向量。我遇到的问题是,我发现自己无法在不作弊和使用邻接矩阵的情况下实现实际算法。

例如,假设我有 3 个路由器,连接如下:

A ---1--- B ---2--- C

也就是说,A 和 B 以链路成本 1 连接,B 和 C 以链路成本 2 连接。因此,当路由器全部启动时,它们将向每个直接连接的邻居发送一个数据包,其中包含其距离矢量信息。因此,A 将发送路由器 B (0, 1, INF),B 将发送 A 和 C (1, 0, 2),C 将发送 B (INF, 2, 0),其中 INF 表示 2 个路由器未直接连接。

让我们看看路由器 A 从路由器 B 接收数据包。使用 Bellman-Ford 算法计算每个其他路由器的最小成本如下。

Mincost(a,b) = min((cost(a,b) + distance(b,b)),(cost(a,c) + distance(c,b))

Mincost(a,c) = min((cost(a,b) + distance(b,c)),(cost(a,c) + distance(c,c))

因此,我遇到的问题是,我一生都无法弄清楚如何实现一种算法来计算路由器到每个其他路由器的最小路径。如果您确切知道将有多少个路由器,那么制作一个路由器就很容易了,但是当路由器的数量可以任意大时,您会怎么做呢?


使用 DVMRP,您永远无法确定最短路径。 一方面,您没有网络的全局视图。每个路由器都在其所看到的范围内运行,并且它所看到的内容是有限的——可能会产生误导。查看DVMRP的循环问题。 DVMRP 永远无法处理完整的网络信息。

它也不可扩展。其性能越来越低 随着路由器数量的增加。这是因为 距离向量更新消息充斥着周围,以及这些消息的当前准确性。

它是最早的组播协议之一。其性能 与单播规模的RIP相匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

任意多个节点的贝尔曼-福特距离向量算法 的相关文章

  • 跨线反映点的算法

    给定一个点 x1 y1 和一条直线的方程 y mx c 我需要一些伪代码来确定反映直线上第一个点的点 x2 y2 花了大约一个小时试图弄清楚但没有运气 请参阅此处的可视化 http www analyzemath com Geometry
  • 对 Big O 表示法仍然有点困惑

    所以我一直在尽力理解 Big O 表示法 但仍然有一些事情我感到困惑 所以我一直读到如果某件事是 O n 那么它usually指的是算法的最坏情况 但它不一定要指最坏的情况 这就是为什么我们可以说插入排序的最佳情况是 O n 但是 我无法真
  • 独立于符号的字符串的模式匹配

    我需要一种算法 可以在数据中找到预定义的模式 以字符串的形式存在 独立于数据和模式的实际符号 字符 我只关心符号之间的关系 而不关心符号本身 数据中的同一符号具有不同的模式符号也是合法的 模式匹配算法必须强制执行的唯一一件事是保留模式中同一
  • 带回溯的 Dijkstra 算法?

    In a 相关主题 https stackoverflow com questions 28333756 finding most efficient path between two nodes in an interval graph
  • 最大流量算法的修改

    我试图解决一个关于最大流量问题 http en wikipedia org wiki Maximum flow problem 我有一个源和两个接收器 我需要找到该网络中的最大流量 这部分是一般的最大流量 然而 在这个特殊版本的最大流量问题
  • 使用动态编程理解正则表达式字符串匹配

    我遇到了这个问题 要求您实现一个支持 的正则表达式匹配器 和 其中 匹配任何单个字符 匹配零个或多个前面的元素 isMatch aa a false isMatch aa aa true isMatch aaa aa false isMat
  • 使用回溯(而不是 DFS)背后的直觉

    我正在解决单词搜索 https leetcode com problems word search description LeetCode com 上的问题 给定一个 2D 板和一个单词 查找该单词是否存在于网格中 该单词可以由顺序相邻单
  • 硬币兑换的空间优化解决方案

    给定一个值 N 如果我们想要找 N 分钱 并且我们有无限供应每种 S S1 S2 Sm 价值的硬币 我们可以有多少种找零方式 硬币的顺序并不重要 例如 对于 N 4 且 S 1 2 3 有四种解 1 1 1 1 1 1 2 2 2 1 3
  • 如何使用哈希表在最小堆上实现 O(1) 删除

    在某处阅读以下声明 可以使用附加的哈希表来快速删除 最小堆 问题 gt 如何组合priority queue and unordered map这样我就可以实现上面的想法了 include
  • 这个洗牌算法有什么问题吗?

    我一直在做一些休闲假期计算 我的迷你项目是模拟意大利游戏 tomboli 一个关键的组成部分是对以下过程的模拟 游戏由一名男子控制 他拿着一袋 90 个弹珠 编号为 1 到 90 他从袋中随机取出一颗弹珠 每次向玩家喊出弹珠编号 经过一番思
  • 如何对数组进行排序(索引)以使用这些索引将原始数组从最小到最大值排序

    例如我有这个数组 int a 6 10 16 11 7 12 3 9 8 5 我想像这样对其索引进行排序 6 9 0 4 8 7 1 3 5 2 所以我可以使用索引将 a 从最小到最大值排序 在我的代码中我得到了这个 6 9 4 8 7 4
  • C# 计算LRC(纵向冗余检查)

    我一直在到处研究这个问题 所有 LRC 实现似乎都没有给我正确的答案 花了几天时间后 我决定将我的代码放在这里 看看其他人是否可以发现问题 这是代码 C Input Data 31303030315E315E31303030325E315E
  • 有向图的并查/不交集数据结构

    我正在寻找一个高效的联查 aka 不相交集 https en wikipedia org wiki Disjoint set data structure 我的数据结构有向图 https en wikipedia org wiki Dire
  • Java:使用indexOf方法根据另一个数组对数组进行排序

    我想根据另一个数组 索引 的排序顺序迭代两个数组 A B 在本例中为 10 34 32 21 String A a b c d String B e f g h int indexes 10 34 32 21 为这里的坏例子道歉 我已经更新
  • 添加到数组连续数字

    这是我向SO提出的第一个问题 我希望能答对 在 PHP 中 如果你不会 Python 或伪语言也可以 给定一个包含 n 个元素的数组 old array 1 2 3 5 7 8 9 20 21 23 29 我需要向新数组添加连续数字 如果不
  • 检查数独字段的很酷的算法?

    有谁知道一个简单的算法来检查数独配置是否有效 我想出的最简单的算法是 对于大小为 n 的板 伪代码 for each row for each number k in 1 n if k is not in the row using ano
  • 如何在 dijkstra 算法中以 O(log n ) 时间更新优先级队列中的键?

    过去一周我一直在研究 dijkstra 算法 我在 java 中有正确的运行代码 它使用数组来计算标准 findMin 函数 该函数为您提供距离最小的顶点 显然它是 O n 现在我希望使用优先级队列 最小堆 来实现它 我的思考过程是 whi
  • 4 x 3 锁图案

    我遇到了这个 它要求计算在 4x3 网格中可以制作特定长度的锁定图案的方式数 并遵循规则 可能有些点不能包含在路径中 有效的模式具有以下属性 图案可以使用第一次接触的点序列来表示 与绘制图案的顺序相同 从 1 1 到 2 2 的图案与图案不
  • 交换两个向量之间的值,使两个向量的 max_element 之和最小

    这是 Codechef 的问题 但请耐心等待 https www codechef com ZCOPRAC problems ZCO16001 https www codechef com ZCOPRAC problems ZCO16001
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a

随机推荐

  • 在r中合并数据框和查找表,保留数据框中的所有记录

    我有一个 59720 ob s 的数据框 如下所示 我想为查找表中的每个观察值分配一个 MARKETNAME gt data a DAY HOUR LEAD Row Count DATE ITIME HOMEPHONE CITY STATE
  • 使用生成的波形数据在 .NET 中播放声音

    如何根据 NET 程序根据用户输入和数学函数生成的波形数据来播放声音 我所说的 波形数据 是指固定间隔时间序列 可能是 44 1 kHz 中的 SPL 声压级 值 我认为这需要某种流缓冲区安排 请注意 这必须是现场 实时的 因此仅创建一个
  • 是否可以将通用函数分配给变量?

    func function1 arg Int gt Int return arg func function2
  • strsplit 问题 - Pig

    我有以下元组 H1 我想将其 0 拆分为元组 但是我总是收到错误消息 DUMP H1 item32 item31 1 m FOREACH H1 GENERATE STRSPLIT 0 50 ERROR 1000 解析期间出错 第 1 行第
  • 如何让notepad++在cmd中像普通记事本一样工作?

    我喜欢使用命令提示符来编写和编译java 为了编写代码 我在cmd中输入 记事本MyJavaClass java 这将打开记事本并询问我是否要创建新文件 如果它尚不存在 对我来说 问题是我喜欢使用 notepad 作为文本编辑器 因为它有很
  • 同一应用程序的多个实例在堆栈中生成

    如果有一个应用程序有登录活动 并且它通过单击图标启动 此登录活动也可以由另一个意图启动 问题是当活动运行时 通过触摸应用程序图标启动 当它收到不同的意图调用时 它会启动另一个登录活动 当收到不同的意图调用来启动登录活动时 如何在关闭当前正在
  • 在 Enum 中搜索字符串并返回 Enum

    我有一个枚举 public enum MyColours Red Green Blue Yellow Fuchsia Aqua Orange 我有一个字符串 string colour Red 我希望能够返回 MyColours Red f
  • MATLAB > MEX 文件 > 托管 DLL 中的内存泄漏

    My MEX file http en wikipedia org wiki MEX file用 C CLI 编写并调用用 C 编写的 DLL 当 gcnew 一个对象时 当 mexFunction 返回时它不应该被垃圾收集吗 它的引用应该
  • 如何使用谷歌地图 API 制作一个在特定半径范围内搜索项目的表单?

    我正在研究一个website https jsfiddle net n8aofgtz 9 embedded result我想在谷歌地图上围绕当前位置或一些手动地址画一个圆圈 用户可以选择决定是否要围绕当前位置或他们提供的某个随机地址进行环绕
  • 从 DataGridViewComboBoxColumn 选择值?

    我想知道如何选择 DataGridViewComboBoxColumn 值作为默认值 在 DataGrid 中 有 4 列以及一个 DataGridViewComboBoxColumn 数据表正在绑定网格 但对于 DataGridViewC
  • 撤消/重做实施[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给我一些如何实现撤消 重做功能的想法 就像我们在文本编辑器中一样 我应该使用什么算法以及我可以阅读什么 谢谢 我知道撤消类型有两大类
  • 路径中的 SVG 图像 - HTML

    我遇到了一个棘手的问题 我似乎无法弄清楚 它有很多不同的文件 所以我们先不添加任何代码或文件文档 所以我得到了一个 SVG 图像 上面有很多方形路径 我在 Inkscape 中的一条方形路径上放置了一张方形图像 然后我将 SVG 文件嵌入到
  • R:使用 mouseadds lm.cluster 进行聚类稳健标准误差 - 子集和权重的误差

    我正在尝试使用 mouseadds 包中的 lm cluster 函数来获取多重插补数据集的稳健聚类标准误差 我能够运行它的标准版本 但当我尝试添加子集或权重时出现以下错误 Error in eval substitute subset d
  • .height(item.height()) jquery 在 IE 中太慢了!备择方案?

    我正在尝试设置绝对定位项目的高度以匹配其容器元素的高度 问题是这些元素有数百个 标题中的标准代码在 chrome 中运行得很好 但在 IE 中却拖得很慢 我应该如何缓解这个问题 Too SLOW in IE var starttime ne
  • 反射,从方法中获取返回值

    我们如何执行一个方法并从Reflection中获取返回值 Type serviceType Type GetType class true var service Activator CreateInstance serviceType s
  • 为什么我无法访问静态函数中的私有构造函数,如下所示? [复制]

    这个问题在这里已经有答案了 我目前正在编写一个弱引用资源管理器 如下所示 编译器抱怨管理器有一个私有构造函数 我的问题是 为什么我无法访问静态函数中的私有成员函数 ifndef TENSOR MANAGER H define TENSOR
  • 我需要实现什么接口才能允许 VBA 中的 ForEach 作用于用 delphi 编写的 COM 对象?

    想象一下 我想在 VBA 伪代码 中执行类似的操作 并假设我有一个可枚举属性 IDList Dim MyObject object set MyObject CreateObject MyObjectClass for each Item
  • 无法安装h5py

    我正在尝试安装h5py http www h5py org 但是当我这样做时pip install h5py or use python setup py install从源代码来看 致命错误 hdf5 h No such file or
  • speex解码出错

    我使用 speex 对一些音频数据进行编码并通过 UDP 发送 然后在另一端对其进行解码 我用 speex 进行了一些测试 发现如果我在编码后立即解码数据包 则解码后的数据与原始数据相差甚远 缓冲区开头的大部分字节都是 0 因此 当我解码通
  • 任意多个节点的贝尔曼-福特距离向量算法

    我正在尝试为模拟路由器的类编写一个程序 到目前为止我已经设置了基础知识 路由器 可以通过模拟服务器向连接到该服务器的其他 路由器 发送和接收数据包 每个数据包仅包含该路由器的距离向量 当路由器接收到数据包时 它应该使用贝尔曼 福特算法相应地