算法学习笔记(一):拓扑排序与传递闭包(通过bfs&&dfs)

这篇博客介绍了拓扑排序的概念及其在有向无环图(DAG)中的应用。拓扑排序可以使用DFS或队列实现,其中DFS需要处理环的判断,而队列实现则需预处理节点的入度。作者还提出了如何利用拓扑排序求最长路和判断DAG是否为哈密顿回路的问题,并提及传递闭包的相关算法。同时,作者抱怨了CSDN博客编辑器,并询问Ubuntu下更好的博客编辑软件建议。
摘要由CSDN通过智能技术生成
       今天写一下关于拓扑排序与dfs的一点学习经验。

    首先说说拓扑排序吧

    拓扑排序可以用dfs,经典的队列算法(也能用堆栈实现)

    首先说一下什么是拓扑排序,有时候一些任务会产生依赖关系。即做A需要先做B,则A依赖与B

    然后通过拓扑排序,产生一个序列,满足这些先后依赖关系。

    关于拓扑排序的几个算法:

    一  dfs

void dfs(int x){
        assert(visit[x]==false);
        visit[x]=true;
        for(vector<int>::iterator it=G[x].begin() ;  it != G[x].end() ; it++ ){
                if( !visit[*it] ){
                        dfs(*it);
                }
        }
        ans[an++]=x;
}


v
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值