转:johnson算法的现实意义

article/2025/9/25 20:07:37

Johnson算法是一种用于解决边数与节点数之间关系为O(n^2)的带权图的最短路径问题的算法。它是一种结合了Dijkstra算法和Bellman-Ford算法的技术,通过使用一个负权重的环检测器来消除负权重的影响。这种算法的时间复杂度为O(n^2+m log n)。

Johnson算法是一种用于解决多源最短路径问题的算法。它通过将图中的边权转换为虚拟起点的边权来解决问题。

Johnson算法的一个明显缺点是,在边权取负值之后,有负权边的图上不能使用该算法。这是因为负权边会导致最长路径不存在。另外,Johnson算法的时间复杂度为O(n^2 * log(n) + m * log(n)),其中n为顶点数,m为边数。相比于其他多源最短路径算法,Johnson算法的时间复杂度较高。还有一点就是Johnson算法需要先对图做一个Bellman-Ford或者Dijkstra来判断负环,并且需要多次使用堆优化的Dijkstra算法,所以空间复杂度也比较大。

例如,假设有一个图,其中包含5个节点(A、B、C、D、E)和7条边(A-B、B-C、C-D、D-E、A-D、B-E、C-E)。现在,如果要求从A、B、C三个起点到E终点的最短路径,可以使用Johnson算法。

首先,将虚拟起点S加入图中,并将S到A、B、C的边权设为0。然后,使用Bellman-Ford算法求S到其他各点的最短路径。接着,将图中所有边权加上S到该边的两个端点的最短路径长度。最后,使用Dijkstra算法求A、B、C到E的最短路径。

在这个例子中,Johnson算法将会得到A到E、B到E、C到E的最短路径分别为 [A,D,E], [B,E]。


http://chatgpt.dhexx.cn/article/Z9NVoadg.shtml

相关文章

软件定义网络SDN基础实验:MiniNet常用命令、创建网络拓扑、OpenFlow流表操作

此实验基于《软件定义网络实验1-5》,主要内容为: MiniNet常用命令如何创建网络拓扑OpenFlow流表操作 00x1 搭建SDN环境 SDN 环境配置:Mininet Ryu 1. 测试环境是否搭建成功 启动Ryu,进入 /ryu/app,启动一个交换机…

软件定义网络基础(SDN②)

一.传统网络设备 1.传统设备控制平面和数据平面 2.数据平面的任务 在传统网络中,数据平面是指实际传输和处理数据的部分。它包括网络设备(如交换机和路由器),它们通过将数据包从一个接口转发到另一个接口来实现数据传输。数据平面…

软件定义网络SDN

一、为什么使用软件定义网络 传统网络及其设备只可配置,不可编程。网络的分布式控制与管理架构带来的制约,网络的部署、配置与管理需要落到每台设备上去手工完成,每个设备下都紧耦合了三个平面(管理平面、控制平面、数据平面&…

软件定义网络技术现状分析

作者:郭春梅,启明星辰资深研究员,研究方向为云计算、虚拟化、SDN技术及安全 转载自:https://mp.weixin.qq.com/s?__bizMzAxNzExNjQ5NA&mid211287920&idx1&snd49893e9187e6055e79db8bb37e44408&scene1&fromg…

SDN软件定义网络相关概念

总结 软件定义网络,已经逐渐成为云计算所依赖的重要技术支一,软件定义网络作为一种新型的网络架构,把网络控制平面和数据平面进行分离,其中控制平面拥有网络全局视图,集中控制网络资源,数据平面只转发数据…

软件定义网络基础(SDN④)

一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑。 对底层网络交换设备进行集中管理,状态监测、转发决策以及处理和调 度数据平面的流量;通过北向接口向上层应用开放多个层次的可编程能力。 1.典型的SDN控制器体系架构 SDN控…

软件定义网络(SDN)工作原理

传统网络分布式控制架构: 管理平面: 管理设备(SNMP) 主要包括设备管理系统和业务管理系统,设备管理系统负责网络拓扑、设备接口、设备特性的管理,同时可以给设备下发配置脚本。业务管理系统用于对业务进行管理,比如业务…

认识软件定义网络(SDN)(一)

一、SDN体系结构简介 在传统IP网络中,网络设备内部同时集成了控制逻辑和数据逻辑,控制平面需要实现各种类型的网络协议和功能,为数据平面构造和配置路由转发表,而数据平面则根据路由转发表实现数据包的转发。一般来说&#xff0c…

SDN(Software Defined Network) 软件定义网络学习

SDN(Software Defined Network) 软件定义网络学习 SDN是啥? 简单来说就是软件定义网络!其旨在对现有的网络架构进行重构,使得我们能够像安装软件一样对网络进行修改,加快部署,提高网络可编程能…

软件定义网络 Software Defined Network (一)概述

软件定义网络 Software Defined Network 本文将从以下3个问题对SDN进行阐述 1、为什么要有SDN? 伴随云计算、移动互联网和物联网的蓬勃兴起,应用与业务日益多元,而且快速且多变。网络系统的亚健康问题逐渐明显起来。传统网络工程的弊端日益…

浅谈软件定义网络(SDN)技术研究现状和发展趋势

浅谈软件定义网络(SDN)技术研究现状和发展趋势 友情全文PDF链接:浅谈软件定义网络(SDN)技术研究现状和发展趋势.pdf-网络基础文档类资源-CSDN下载 长久以来,硬件在网络世界中保持着至高无上的地位。直到2008年斯坦福大学的学者提出 OpenFlow[1]&#xf…

软件定义的网络(中)

SDN的出现打破了传统网络设备制造商独立而封闭的控制面结构体系,将改变网络设备形态和网络运营商的工作模式,对网络的应用和发展将产生直接影响。 从技术层面和应用层面来看,SDN的特点主要体现在以下几个方面: 数据平面与控制平…

软件定义网络(PART 3)

软件定义网络PART 3 数据平面SDN数据平面传统网络数据平面传统网络数据平面的特点SDN数据平面SDN数据平面的特点OpenFlow Switch通用转发模型通用可编程转发模型 OpenFlow 概述OpenFlow架构三个组成部分OpenFlow主要版本及特性单流表到多级流表的架构 Open Flow 流表什么是流表…

软件定义网络SDN----新型网络体系结构

1.传统路由器 传统路由器的功能: 为主机间的通信提供转发服务路由选择 路由器之间的传送信息: 主机间的分组路由信息 SDN这种新型网络体系结构的核心思想:把网络的控制层面和数据层面分离,而让控制层面利用软件来控制数据层面…

软件定义网络SDN(计算机网络-网络层)

目录 软件定义网络SDN 数据平面和控制平面 SDN 最重要的三个特征 控制平面与数据平面分离 SDN 的数据平面 软件定义网络SDN SDN的本质特点是控制平面和数据平面的分离以及网络的可编程性,从而实现了网络流量的灵活控制,方便用户管理和配置网络以及部…

软件定义的网络(下)

我们在这里对这两种SDN实现方案分别做个简单描述。 (1)以网络为中心的SDN 以网络为中心的SDN的技术核心是OpenFlow协议,OpenFlow技术最早由斯坦福大学于2008年提出,它是一种通信协议,用来提供对网络设备诸如交换机和…

【计算机网络详解】——软件定义网络SDN(学习笔记)

目录 🕒 1. 概念🕒 2. OpenFlow 协议 🕒 1. 概念 软件定义网络(Software Defined Network,SDN)的概念最早由斯坦福大学的Nick McKeown教授于2009年提出。SDN最初只是学术界讨论的一种新型网络体系结构。SD…

软件定义的网络(上)

数据中心作为IT资源的集中地,是数据计算、网络传输、存储的中心,为企业和用户的业务需求提供IT支持。 网络作为提供数据交换的模块,是数据中心中最为核心的基础设施之一,并直接关系到数据中心的性能、规模、可扩展性和管理性。随着…

SDN(软件定义网络)数据平面

数据平面 传统网络数据平面 数据平面主要执行网络控制逻辑,数据包的处理主要通过查询由控制平面所生成的FIB表来完成 FIB表是转发信息表(Forwarding Information Base的缩写,它是网络设备根据路由表生成的转发表,用来指导数据包的…