算法C++ 面试常考拓扑排序理解 面试复习用(第四章)
发布日期:2021-06-30 22:29:35 浏览次数:2 分类:技术文章

本文共 1193 字,大约阅读时间需要 3 分钟。

文章目录


造轮子博客链接


参考博文



闲聊

我对于一些我实在看不下去的东西 有的时候也忘记了 感觉不是很重要的话 我就会去网上搜索 这个东西面试会不会考察 发现要考察的时候 还是觉得要写一篇博客 来记录一下 因为毕竟我对于我不是很想看的东西的话 我的理解相对来说就没有那么好 写一篇总比没写好


拓扑排序的理解

图分为无向图和有向图 无向图与有向图的区别就是 无向图中的线段 仅代表连接上了两个点 但是有向图的线段却有方向

拓扑排序是有向图中的一种类型 是属于无环类型的有向图 如果是有环的话 我记得以前的一个例子 就是讲大学学科的优先级比例 就是拿的拓扑排序来的

如果是有环图的话 那么何从谈起 这一个点之前的项目都必须是要完成的 环都循环了 那哪里来的优先级呢


思路分析 代码如何输出拓扑序


理论功夫我确实感觉到部分吃力 毕竟我觉得 编程编程 吃的是码量嘛哈哈哈哈 但还是要多花点时间记一下这些理论东西

首先就是在处理有向图的时候我们是用什么图来处理

是用邻接表来处理呢 还是用邻接矩阵处理
其实我感觉都差不多 算法书上好像直接把邻接矩阵给pass掉了
但是我们不能否认的是 邻接矩阵在面对很稠密的数据输入的时候 确实也浪费不了多少空间 而且访问也是常数时间的

那就用邻接表嘛 在处理数据的时候我们需要留一个心眼

就是对于 出度和入度 我觉得我们是需要有所记录的
因为毕竟我们的拓扑序的输出顺序就是按照入度数来进行排序的

其实核心问题就是记录 入度数 在每当排出一个点时 我们需要把那个点指向的所有点的入度数减去一 我们的优先级就是把每一个入度数为0的弄出来 然后又会多出来几个入度数为0的 知道全部给pop出来了


拓扑排序有关的题目 实践出真知

相关力扣题目


相关知识点 拓扑排序的就是入度

把这道题写了 感觉很多东西也都开了 刚刚才被通知 下下周考高数
但现在一点没学 只能现在先预习起走了 下一周的编程可能要先放下了 把考试给应付一下

这里我还是想再写一下 不重复检测环的方式 因为发现自己这个地方理解有点薄弱

我们可以利用unorder_map<int,int> 来记录 或者是用一个栈

如果是用unorder_map<int,int>来记录访问的话 则是
一个节点为0 表示未访问过 节点为1 表示当前路线正在访问 节点为2表示已经访问过了 可以跳过 而用栈的话 其实也就记录了一个 正在访问的路线上的节点 如果有环则当前栈中必定有那个元素 并且我们可以拿一个vector<bool>来记录是否访问过 免得重复检测那些已经检测过的路线

针对拓扑排序的题 我们恰好在求拓扑序的时候 得到的结果是小于节点数的话 就说明有环 因为总存在一个时间点 所有的节点都有入度 而无法BFS

ok了 上面是对有环和 拓扑序的总结 如果之后忘记了可以反复回看一下思路 免得忘记


检测回环相关题目


转载地址:https://love6.blog.csdn.net/article/details/115800753 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Leetcode 210. 课程表 II(DAY 89) ---- 拓扑排序相关题目 打周赛去了
下一篇:算法C++ DepthFirstSearch BreadthFirstSearch代码模式示范实现(第四章)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月28日 16时05分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Oracle 作业记录 2019-04-30
putty连接AWS配置(multimedia project) 2019-04-30
Hourglass Network 沙漏网络 (pose estimation姿态估计) 2019-04-30
OpenCV实战(二)——答题卡识别判卷 2019-04-30
目标检测神经网络的发展历程(52 个目标检测模型) 2019-04-30
Boundary loss 损失函数 2019-04-30
神经网络调参实战(一)—— 训练更多次数 & tensorboard & finetune 2019-04-30
tensorflow使用tensorboard进行可视化 2019-04-30
神经网络调参实战(二)—— activation & initializer & optimizer 2019-04-30
凸优化 convex optimization 2019-04-30
数据库索引 & 为什么要对数据库建立索引 / 数据库建立索引为什么会加快查询速度 2019-04-30
IEEE与APA引用格式 2019-04-30
research gap 2019-04-30
pytorch训练cifar10数据集查看各个种类图片的准确率 2019-04-30
Python鼠标点击图片,获取点击点的像素坐标 2019-04-30
路径规划(一) —— 环境描述(Grid Map & Feature Map) & 全局路径规划(最优路径规划(Dijkstra&A*star) & 概率路径规划(PRM&RRT)) 2019-04-30
神经网络调参实战(四)—— 加深网络层次 & 批归一化 batch normalization 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(1)—— 假设检验(μ&卡方检验&方差检验(F检验))&相关系数(皮尔逊&斯皮尔曼) 2019-04-30
RRT算法(快速拓展随机树)的Python实现 2019-04-30
路径规划(二) —— 轨迹优化(样条法) & 局部规划(人工势能场法) & 智能路径规划(生物启发(蚁群&RVO) & 强化学习) 2019-04-30