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

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(使用前将#替换为@)

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

  • 用于整数分区的优雅 Python 代码 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我尝试编写代码来解决标准整数分区问题 维基百科 http en wikipedia org wiki Partition 28numb
  • 所有可能的骑士在普罗梅拉的棋盘上移动

    是否有可能用马从初始位置 I J 绕过大小为 N N 的棋盘 并且只访问每个方格一次 define A True A I J false active proctype method bit I 4 bit J 3 bit K 1 bit
  • 用于基本要素匹配的最坏情况 NlogN 算法

    查找两个相同大小数组的元素之间的唯一映射 https stackoverflow com questions 4411940 find the unique mapping between elements of two same size
  • 识别鼠标移动的算法

    我想知道是否有任何研究 算法可以指定鼠标在识别 等字符时的偏差量使用鼠标绘制 某种光学字符识别 但可能是一个更简单的版本 是否有某种算法可以让我说用户绘制的问号确实是一个问号 而不是其他具有一定准确性的东西 就像 Windows 平板电脑软
  • 直观地执行不同的排序算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 图像算法上的物体计数

    我又接到学校任务了 这次 我的老师给我的任务是创建算法来计算图片上有多少只鸭子 该图与此类似 我想我应该使用模式识别来搜索上面有多少只鸭子 但我不知道每只鸭子适合哪种图案 我认为你可以通过分割鸭嘴并计算鸭嘴的数量来解决这个问题连接的组件 h
  • 计算具有 3 个循环的算法的复杂度

    我尝试解决以下练习 以下代码片段最坏情况运行时间的增长顺序是什么 作为 N 的函数 int sum 0 for int i 1 i lt N i for int j 1 j lt i i j for int k 1 k lt j j k s
  • Google 文档如何处理编辑冲突?

    我一直在尝试编写自己的 Javascript 编辑器 其功能类似于 Google Docs 允许多人同时使用 我不明白一件事 假设用户 A 和用户 B 直接相互连接 网络延迟为 10 毫秒 我假设编辑器使用 diff 系统 据我了解 Doc
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 如何为多边形创建内部螺旋?

    对于任何形状 我如何在其内部创建类似形状的螺旋 这与边界 使用 Minkowski 和 类似 尽管它会是相同形状的螺旋 而不是在形状内部创建相同的形状 我找到了这个 http www cis upenn edu cis110 13su le
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait

随机推荐

  • 在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 因此 当我解码通
  • 任意多个节点的贝尔曼-福特距离向量算法

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