数据结构与算法之有向图的拓扑排序

  图的基础介绍和基础算法深度优先搜索,广度优先搜索在我前两篇博文中。

  http://blog.csdn.net/xinzhi8/article/details/62222154 图介绍与深度优先搜索

  http://blog.csdn.net/xinzhi8/article/details/62222154 广度优先搜索

  

  当图的边有方向时,即有向图,这时图的搜索策略将发生变化。




  一,有向性在数组中的表现为单向的,不像无向图的双向。

         


 二,搜索规则

        规则1:找到没有后继的顶点

        规则2,在图中删除没有后继顶点的顶点


三,找到没有后继的顶点

       有一种图此算法是无法处理的,比如环图,如图所示

       

      在N个顶点的图中,如果没有环,边的个数小于等于n-1 。

      找后继顶点的算法如下:只要找到数组一行中全是0的行号,即是没有后继的顶点,当找不到这种行号,图中必然存在环。

      

四,删除顶点

        图中删除顶点操作反应在二维数组中是:将属于顶点的行和列删除,同时在顶点与脚标的对应的一维数组VtertexList[nvertex++] = new Vertex(v)中,将顶点删除。

        二维数组行的删除:将被删除顶点所在行之下的所有行向上移一格,这样便覆盖了被删除顶点的行。

        二维数组列的删除:将被删除顶点所在列之右的所有列向左移一格,这样便覆盖了被删除顶点的列。

       一维对应数组的删除:将被删除顶点后面的顶点向前移一格。



五,根据规则设计算法:


 其余算法部分与前两篇博文一致,不再阐述

此篇文章参考Java数据结构算法,转载请标识来源。

 要源码可向我留言。


       

  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值