当前位置: 首页 > news >正文

无向图中的一些问题与处理(上接无向图知识简记)

一、有向图中的排序与调度

1、深度优先搜索的排序

使用深度优先搜索对图中顶点进行排序,根据数据结构性质与递归保存顺序,有以下三种排列顺序

(1) 前序:在递归调用之前将顶点加入队列。
(2)后序:在递归调用之后将顶点加入队列。
(3)逆后序:在递归调用之后将顶点压入栈。

几个结论:

(1)一幅有向无环图的拓扑顺序即为所有顶点的逆后序排列

(2)使用深度优先搜索对有向无环图进行拓扑排序所需的时间和 V+E 成正比。

(3)在有向图中,深度优先搜索标记由一个集合的顶点可达的所有顶点所需的时间与被标记的所有顶点的出度之和成正比。

2、拓扑排序与任务调度

解决任务调度类应用通常需要以下 3 步:
(1)指明任务和优先级条件;
(2)不断检测并去除有向图中的所有环,以确保存在可行方案的;
(3)使用拓扑排序解决调度问题。

调度方案的任何变动之后都需要再次检查是否存在环,然后再计算新的调度安排。

二、有向图中的连通性与可达性

1、问题描述

强连通性问题:给定一幅有向图,回答“给定的两个顶点是强连通的吗?这幅有向图中含有多少个强连通分量? ”等类似问题。

顶点对的可达性问题 给定一幅有向图,回答“是否存在一条从一个给定的顶点 v 到另一个给定的顶点 w 的路径? ”等类似问题。

2、Kosaraju 算法

Kosaraju 算法是一种在有向图中高效计算强连通分量的算法。

Kosaraju 算法使用深度优先搜索查找给定有向图 G 的反向图 GR,根据由此得到的所有顶点的逆后序再次用深度优先搜索处理有向图 G,其构造函数中的每一次递归调用所标记的顶点都在同一个强连通分量之中。

3、步骤

(1)在给定的一幅有向图 G 中,使用 DepthFirstOrder (深度优先)来计算它的反向图 GR 的逆后序排列。
(2)在 G 中进行标准的深度优先搜索,但是要按照刚才计算得到的顺序而非标准的顺序来访问
所有未被标记的顶点。

(3)所有在同一个递归 dfs() 调用中被访问到的顶点都在同一个强连通分量中,将它们识别出来。

http://www.lryc.cn/news/463819.html

相关文章:

  • AIGC助力小学生编程梦:C++入门不再难!
  • AI开发-三方库-Hugging Face-Pipelines
  • 【Python网络编程】学习Socket编程,打造网络应用!
  • docker (desktopcompose) download
  • 即时通讯:单聊消息逻辑
  • Libevent源码剖析之reactor
  • 分享一套SpringBoot+Vue民宿(预约)系统
  • Linux——应用软件的生命周期
  • 【Linux】exec系列函数详细介绍
  • ARINC 429总线协议
  • Qt解决槽函数中发送的信号的参数会变化带来的错误
  • C C++ 如何编写库级接口
  • 安装TDengine数据库3.3版本和TDengine数据库可视化管理工具
  • 详解CAS
  • 《环境感知方案:探索未来智能世界的关键技术》
  • Android 编译时出现Android resource linking failed.without required default value.
  • golang ws升级为wss
  • FFMPEG录屏(17)--- 使用 DwmRegisterThumbnail 捕获指定窗口图像数据
  • 点亮一个LED(51)
  • Flink窗口分配器WindowAssigner
  • 【Tinymce】富文本编辑器在vue项目中的使用;引入付费格式刷,上传视频、图片
  • Java实现简单的5阶m序列密钥生成
  • 013_django基于大数据的高血压人群分析系统2024_dcb7986h_055
  • OpenCV高级图形用户界面(21)暂停程序执行并等待用户按键输入函数waitKey()的使用
  • 其他css的用途
  • json路径 [‘a‘].b.c[0].d[‘1‘].f,具体代表什么意思
  • 等保测评:如何进行有效的安全合规性审查
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发二 : 18.04ubuntu安装,linux 下build ffmpeg 4.3 源码 并测试
  • 将两张图片的不同标记出来
  • HarmonyOS开发(State模型)