码迷,mamicode.com
首页 > 其他好文 > 详细

北大ACM暑期培训课程目录(三)

时间:2014-07-23 00:10:07      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:算法

本文出自:http://blog.csdn.net/svitter




一.图的生成树 

    .必然含有n-1条边。 
    .无向带权图。
    .如何求最小生成树。
    .prime | kruskal
        Prime: 从点里面找一个最短的边。
        kruskal: 从边里面找。
    .密集图使用邻接矩阵来存储。
    .稀疏图用邻接表来存储。

    .开一个邻接表,一个vector的一维数组。
        时间复杂度(ElogV)
        一般情况下邻接表更加优秀
        题目:poj1258(邻接矩阵)
        使用prime+堆完成。priority_queue(就是二叉堆)(当初不做错,也不知道)
    

    .kruskal算法

        .构造过程
         选权值最小的边,利用并查集,判断是否有回路
         构造边的集合。
         排序的函数:规定权值小的放在前面.
         sort();
         题目:POJ2349 Arctic_Network
         

    .次小生成树

        .给定的图最小生成树是否唯一。
        .求出次小生成树,是否权值于最小生成树
        .最小生成树的邻集里包含次小生成树。
        .如何从一个最小生成树生成一个次小生成树?
        .T0是一颗次小生成树,T(n-1)一定是次小生成树且跟t一条边。

    .最优生成树



二.最短路径

.一次求所有的最短路径
.单元最短路 Dijkstra‘s有向无向图。
*没有负权
.贪心思想。p是最短路已经求出的点。离S最近的点
.一开始就是空
.dijkstra不适用于无向图
例题:POJ3159 Candies

*Bellman-Ford算法

也是求单元最短路,可以处理有向图负权边。
不能处理带。负环。负值回路。(负无穷)
构建一个最短路径长度序组.
dist[]为滚动数组
POJ3259

*Floyd_alogrithm

用二维数组存边

*SPFA算法

SPFA算法利用队列来动态更新最小值。

*Floyd_alogrithm

O(n^3)时间复杂度。  


三.强连通分支

    Korasaju算法 "忽略
    强连通分支:
        最大连通子图。任意顶点互相可达,则是强连通的。
        极大强连通子图就是强连通分支。
    
    有向图出度为0,在任何点都可以出发可达。
    无环 “有向无环图” 
    POJ2186
    求出所有的连通分量。
    有向无环图DAG/无向无环图:树;
    
    POJ1236
    加边变成强连通图。


    有向图强连通分支 Taijan算法
    有向图利用深度优先搜索就是搜索树。dfn值。
    


    










    

北大ACM暑期培训课程目录(三)

标签:算法

原文地址:http://blog.csdn.net/svitter/article/details/38047181

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!