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] = 0dist[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 的最短成本。