环和有向无环图

1. 概念

  • 有向图的可达性:深度优先搜索和广度优先搜索,可应用于内存管理中内存回收
    有向无环图:一幅不含有向环的有向图
    实际应用:用于条件排序,如任务调度、课程安排、继承、排队等
  • 拓扑排序:对有向图的所有顶点排序,使所有有向边均从排在前面的元素指向排在后面的元素,只有有向无环图才能实现拓扑排序

2. 有向环的检测问题

思路:深度优先搜索或广度优先搜索,遍历顶点,遇到顶点被标记过则有向图存在环


图片

代码实现:

public class DirecttedCycle
{
    private boolean[] marked;   //标记数组
    private int[] edgeTo;            //从起点到一个顶点的已知路径上的最后一个顶点
    private Stack<Integer> cycle;   // 有向环的所有顶点
    private boolean[] onstack;         // 遍历的所有顶点?
    public DirectedCycle(Digraph G)
    {
        onstack = new boolean[G.V()];
        edgeTo = new int[G.V()];
        marked = new boolean[G.V()];
        for(int v = 0; v < G.V(); v++)
        {
        if(!marked[v]) dfs(G, v);
        }      
   }
   private void dfs(Digraph G, int v)
   {
   }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://zh.visualgo.net/graphds 浅谈图形结构https://zh.visualgo...
    狼之独步阅读 4,258评论 0 0
  • 图是一种比线性表和树更复杂的数据结构,在图中,结点之间的关系是任意的,任意两个数据元素之间都可能相关。图是一种多对...
    Alent阅读 2,364评论 1 22
  • 现实生活中有很大一类问题可以用简洁明了的图论语言来描述,可以转化为图论问题。 相关定义 图可以表示为G=(V, E...
    芥丶未央阅读 1,776评论 0 7
  • 前言 图的搜索指的是系统化地跟随图中的边来访问图中每一个结点,并不是随意地访问图中的结点。图的搜索算法可以用来发现...
    某昆阅读 638评论 0 5
  • 五、图 图是比较复杂的数据结构,它由顶点和顶点之间的弧组成。任何两个顶点之间都可能存在弧,利用计算机存储图的完整信...
    MinoyJet阅读 263评论 0 1