摘要: Prim算法和Kruskal算法都能从连通图找出最小生成树。区别在于Prim算法是以某个顶点出发挨个找,而Kruskal是先排序边,每次选出最短距离的边再找。 一、Prim(普里姆算法)算法: Prim算法实现的是找出一个有权重连通图中的最小生成... 阅读全文
posted @ 2014-09-02 18:15 _tham 阅读(908) 评论(0) 推荐(0) 编辑
摘要: 最小生成树之prim算法 边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权。 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最... 阅读全文
posted @ 2014-09-02 18:04 _tham 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 求上面这个图的最小生成树 参考文档 :http://www.cnblogs.com/biyeymyhjob/archive/2012/07/30/2615542.html 1.prim算法 基本思想:假设G=(V,E)是连通的,TE是G上最小生成树中边的集合。算法从U={u0}(u0... 阅读全文
posted @ 2014-09-02 17:50 _tham 阅读(1470) 评论(0) 推荐(0) 编辑
摘要: Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结... 阅读全文
posted @ 2014-09-02 17:31 _tham 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 邻接表是图的一种链式存储结构。对图的每个顶点建立一个单链表(n个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。又称链接表。 1.在有向图的邻接表中不易找到指向该顶点的弧。 2.在有向图的邻接表中,对每个顶点,链接的是以该顶点为弧尾的邻接点。 #include... 阅读全文
posted @ 2014-09-02 17:17 _tham 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 图的遍历一般由两者方式:深度优先搜索(DFS),广度优先搜索(BFS),深度优先就是先访问完最深层次的数据元素,而BFS其实就是层次遍历,每一层每一层的遍历。 1.深度优先搜索(DFS) 我一贯习惯有举例的方法来讲,示例如下:红色代表的是正搜索,蓝色代表回溯,最下面为标志数组。 ... 阅读全文
posted @ 2014-09-02 17:14 _tham 阅读(469) 评论(0) 推荐(0) 编辑
摘要: #include#include#include //定义节点 typedef struct BiNode{ char data; struct BiNode *lch; struct BiNode *rch;}BiNode,*BiTree; //先序拓... 阅读全文
posted @ 2014-09-02 17:08 _tham 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大... 阅读全文
posted @ 2014-09-02 16:32 _tham 阅读(241) 评论(0) 推荐(0) 编辑