随笔分类 - 图论
摘要:树有通常三种遍历方法:前序遍历,中序遍历,后序遍历,还有一种层序遍历。如果只单单知道其中一种遍历方法,是无法确定一颗树的,但是如果有两种遍历方法能否确定一颗树呢?这里不是二叉树,只是简单的树,也就是当只有一个儿子的时候不严格区分是左儿子还是右儿子,统一当作是第一个儿子。 对于二叉树来说,如果确定了中
阅读全文
摘要:连通无回路的无向图称之为树,如果无向图G的生成子图T是树,则称T是G的生成树,生成树不止一种,其中各边权值和最小的树被称为最小生成树。 边数等于点数减一 没有环 图连通并且边都为桥(就是说去掉任意一条边,图就不再连通) 两点间路径唯一 边权和最小 其中(1)为原无向图,(2)为其中一种生成树,(3)
阅读全文
摘要:通过dij,ford,spfa等算法可以快速的得到单源点的最短路径,如果想要得到图中任意两点之间的最短路径,当然可以选择做n遍的dij或是ford,但还有一个思维量较小的选择,就是floyd算法。 多源最短路径算法 Floyd算法 思维 先直观做个思考,一张图,任意两个点,已知两点间的路径权值,如果
阅读全文
摘要:说完dijkstra算法,有提到过朴素dij算法无法处理负权边的情况,这里就需要用到Bellman Ford算法,抛弃贪心的想法,牺牲时间的基础上,换取负权有向图的处理正确。 单源最短路径 Bellman Ford算法 思维 一张有向图,有n个点,m条边,用dis[]数组保存源点到各点的最短距离,可
阅读全文
摘要:一般最短路径算法习惯性的分为两种:单源最短路径算法和全顶点之间最短路径。前者是计算出从一个点出发,到达所有其余可到达顶点的距离。后者是计算出图中所有点之间的路径距离。 单源最短路径 Dijkstra算法 思维 本质上是贪心的思想,声明一个数组dis来保存源点到各个顶点的最短距离和一个保存已经找到了最
阅读全文