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

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

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

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.kler.cn/news/356704.html

相关文章:

  • GitLab 老旧版本如何升级?
  • 玩转大模型(二)启动一个大模型
  • 怎样将pdf转换成ppt?关于几种PDF转PPT的方法介绍
  • web端使用高德地图逆地理编码
  • GOT-OCR-2-GUI - 一个强大的AI文本识别模型 OCR文字识别 图片文字识别 本地一键整合包下载
  • 【ROS2实操五】通信机制补充
  • 2024年诺贝尔物理学奖揭晓:AI背后的“造梦者”是谁?
  • Thread的基本用法
  • MySQL 中utfmb3和utfmb4字符集区别
  • 算法——python实现归并排序
  • 中小型企业网络的设计与实现
  • 基于语音识别的停车共享小程序(lw+演示+源码+运行)
  • 桂林旅游助手:一个SpringBoot开发的平台
  • 【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制
  • URP学习四
  • 关于串口中断时的一些问题
  • “一篇长文教你进行全方位的使用appium“
  • 使用开源的 Vue 移动端表单设计器创建表单
  • Flink Kubernetes Operator
  • 【实战指南】Vue.js 介绍组件数据绑定路由构建高效前端应用