DCN 教程

数据通信与计算机网络 DCN 概述 DCN 什么是计算机网络 DCN 计算机网络的用途 DCN 计算机网络类型 DCN 网络 LAN 技术 DCN 计算机网络模型 DCN 计算机网络安全

网络组件

DCN 组件 DCN 交换机 DCN 中继器 DCN 网关 DCN 网桥 DCN 网络接口卡 DCN NIC:优点和缺点 DCN 网络端口

计算机网络拓扑

DCN 计算机网络拓扑 DCN 点对点拓扑 DCN 总线拓扑 DCN 星型拓扑 DCN 环形拓扑 DCN 网状拓扑 DCN 树形拓扑 DCN 混合型拓扑

网络模型

DCN TCP/IP 模型 DCN OSI 模型 DCN OSI 模型的层 DCN TCP/IP 与OSI 模型

物理层

DCN 物理层简介 DCN 数字传输 DCN 模拟传输 DCN 传输介质 DCN 无线传输 DCN 传输损伤 DCN 多路复用 DCN 网络交换

数据链路层

DCN 数据链路层简介 DCN 数据链路控制和协议 DCN RMON DCN 令牌环网络 DCN 汉明码 DCN 字节填充 DCN 通道分配 DCN MAC 地址 DCN 循环冗余校验 DCN 错误控制 DCN 流量控制 DCN 帧 DCN 错误检测和更正 DCN 纠错码 DCN 奇偶校验位

网络层

DCN 网络层简介 DCN 网络寻址 DCN 路由 DCN 互联网 DCN 网络层协议

传输层

DCN 传输层简介 DCN 传输控制协议 DCN 用户数据报协议 DCN 拥塞控制 DCN TCP 服务模型

应用层

DCN 应用层简介 DCN 客户端-服务器模型 DCN 应用协议 DCN 网络服务 DCN 虚拟专用网络 DCN 负载削减 DCN 最优性原则 DCN 服务原语 DCN 网络安全服务 DCN 超文本传输​​协议 DCN 文件传输协议 DCN 安全套接字层

网络协议

DCN ALOHA 协议 DCN 纯 ALOHA 协议 DCN 滑动窗口协议 DCN 停止和等待协议 DCN 链路状态路由 DCN 链路状态路由协议

网络算法

DCN 最短路径算法 DCN 路由算法 DCN 漏桶算法

无线网络

DCN 无线局域网 DCN 无线局域网和 IEEE 802.11 DCN IEEE 802.11 无线局域网标准 DCN IEEE 802.11 网络

杂项

DCN 最短路径路由 DCN B-ISDN 参考模型 DCN 层的设计问题 DCN 选择性重复 ARQ DCN 泛洪 DCN 电子邮件格式 DCN 密码学 DCN 单播、广播和多播 DCN 网络虚拟化

DCN 有用资源

DCN 快速指南 DCN 有用资源


计算机网络中的最短路径算法

在计算机网络中,最短路径算法旨在找到网络节点之间的最佳路径,从而最小化路由成本。它们是图论中提出的最短路径算法的直接应用。

解释

假设一个网络由 N 个顶点(节点或网络设备)组成,这些顶点通过 M 条边(传输线)连接。每条边都与一个权重相关联,表示传输线的物理距离或传输延迟。最短路径算法的目标是沿着边找到任意一对顶点之间的路由,因此边的权重总和最小。如果边的权重相等,最短路径算法旨在找到具有最少跳数的路由。

常见的最短路径算法

一些常见的最短路径算法是 -

  • Bellman Ford 算法

  • Dijkstra 算法

  • Floyd Warshall 算法

以下部分介绍了这些算法中的每一个。

Bellman Ford 算法

输入 - 表示网络的图;以及源节点 s

输出 - 从 s 到所有其他节点的最短路径。

  • 将从 s 到所有节点的距离初始化为无穷大 (∞);到自身的距离初始化为 0;一个大小为 |V|(节点数)的数组 dist[],除 dist[s] 外,所有值均为 ∞。

  • 迭代计算最短距离。对除 s 之外的每个节点重复 |V|- 1 次 −

    • 对连接顶点 u 和 v 的每个边重复此操作 −

      • 如果 dist[v] > (dist[u] + 边 u-v 的权重),然后

        • 更新 dist[v] = dist[u] + 边 u-v 的权重

  • 数组 dist[] 包含从 s 到每个其他节点的最短路径。

Dijkstra 算法

输入 - 表示网络的图;以及源节点 s

输出 - 以 s 为根节点的最短路径树 spt[]。

初始化 -

  • 一个距离数组 dist[],大​​小为 |V|(节点数),其中 dist[s] = 0 和 dist[u] = ∞(无穷大),其中 u 表示图中除 s 之外的节点。

  • 一个数组 Q,包含图中所有节点。当算法运行完成时,Q 将变为空。

  • 一个空集 S,访问过的节点将添加到其中。当算法运行完成时,S 将包含图中的所有节点。

  • 当 Q 不为空时重复 -

    • 从 Q 中删除具有最小 dist[u] 且不在 S 中的节点 u。在第一次运行中,dist[s] 被删除。

    • 将 u 添加到 S,将 u 标记为已访问。

    • 对于与 u 相邻的每个节点 v,将 dist[v] 更新为 −

      • 如果 (dist[u] + 边 u-v 的权重) < dist[v],然后

        • 更新 dist[v] = dist[u] + 边 u-v 的权重

  • 数组 dist[] 包含从 s 到每个其他节点的最短路径。

Floyd Warshall 算法

输入 - 成本邻接矩阵 adj[][],表示网络中节点之间的路径。

输出 - 最短路径成本矩阵 cost[][],显示图中每对节点之间的成本最短路径。

  • 按如下方式填充 cost[][]:

    • 如果 adj[][] 为空,则 cost[][] = ∞(无穷大)

    • 否则 cost[][] = adj[][]

  • N = |V|,其中 V 表示网络中的节点集。

  • 重复 k = 1 到 N −

    • 重复 i = 1 到 N −

      • 重复 j = 1 到 N −

        • 如果 cost[i][k] + cost[k][j] < cost[i][j],则

          • 更新 cost[i][j] := cost[i][k] + cost[k][j]

  • 矩阵 cost[][] 包含从每个节点 i 到每个其他节点 j 的最短成本。