1,最小生成树的特征: 1,选取的边是图中权值较小的边: 2,所有边连接后不构成回路: 2,prim 算法是以顶点为核心的,最下生成树最大的特征是边,但 prim 算法非要以顶点为核心来进行,有些复杂和难以理解: 3,既然最小生成树关心的是如何选择 n - 1 条边,那么是否可以直接以边为核心进行算法设计? 4,简单尝试: 1,由 4 个顶点构成的图,选择 3 条权值最小的边: 2,还要设法避免回路: 5,需要解决的问题: 1,如何判断新选择的边与已选择的边是否构成回路? 6,技巧:前驱标记数组…
04图与网络 1.最短路 (1) 自己写的dijstra算法 format compact; clc,clear all a=zeros(6); a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10; a(2,3)=15;a(2,4)=20;a(2,6)=25; a(3,4)=10;a(3,5)=20; a(4,5)=10;a(4,6)=25; a(5,6)=55; a=a+a' a(find(a==0))=inf %将a=0的数全部替换为无强大 pb(1:length…
c/c++ 图的创建及图的相关函数(链表法) 图的概念 图由点和线组成 知道了图中有多少个点,和哪些点之间有线,就可以把一张图描绘出来 点之间的线,分有方向和无方向 创建图 创建图,实际就是创建出节点,和节点之间的线. 下面的代码实现了上面的图的创建 graph_link.h #ifndef __graph_link__ #define __graph_link__ #include <stdio.h> #include <malloc.h> #include <assert…
1,运营商的挑战: 1,在下图标出的城市间架设一条通信线路: 2,要求: 1,任意两个城市间都能够通信: 2,将架设成本降至最低: 2,问题抽象: 1,如何在图中选择 n - 1 条边使得 n 个顶点间两两可达,并且这 n - 1 条边的权值之和最小? 3,最小(大)生成树: 1,仅使用图中的 n - 1 条边连接图中的 n 个顶点: 2,不能使用产生回路的边: 3,各边上的权值总和达到最小(大): 4,寻找最小生成树: 5,使用 prim 方法手工寻找最小生成树: 6,最小生成树算法步骤(pr…
在图论中,树是指无回路存在的连通图.一个连通图的生成树是指包含了所有顶点的树.如果把生成树的边的权值总和作为生成树的权,那么权值最小的生成树就称为最小生成树.因为最小生成树在实际中有很多应用,所以我们有必要了解怎样生成最小生成树.构造最小生成树的两种常用方法:Kruskal算法.Prim算法.本文介绍Kruskal算法,Prim算法在下篇文章中介绍.       Kruskal算法是从另一条途径来求网络的的最小生成树.设G=(V, E)是一个有n个顶点的连通图,则令最小生成树的初值状态为只有n个…
代码部分有点问题,具体算法没问题, 最近期末考,要过段时间才会修改 //邻接矩阵,具体情况看上一篇的图的实现template<class T>class MGraph {public:    MGraph(T a[], int n, int e);    void DFS(int v);    void BFS(int v);private:           //edge为边用来表示无向图,arc为弧用来表示有向图,vertex为顶点    T vertex[MAXSIZE];    in…
1,Dijkstra 算法一次性求得起始顶点到所有其它顶点的最短路径,如果想要求解任意两个顶点之间的最短路径,可将图中顶点作为起始顶点执行 n 次 Dijkstra 算法就可以了: 2,可能解决方案: 1,算法执行结束后,i 到 j 最短路径值存储于 dist[i][j] 中.最短路径前驱结点存储于 path[N][N] 中: 2,这种方法比较土: 3,问题的提法: 1,已知一个各边权值均大于 0 的带权有向图,对每一对顶点 vi != vj,求出 vi 与 vj 之间的最短路径值以及最短路径上…
1,最短路径的概念: 1,从有向图中某一顶点(起始顶点)到达另一顶点(终止顶点)的路径中,其权值之和最小的路径: 2,问题的提法: 1,给定一个带权有向图 G 与起始顶点 v,求从 v 到 G 中其它顶点的最短路径(每条边上都存在有意义的权值): 2,Dijkstra 算法核心是通过已知最短路径寻找未知最短路径: 3,解决思路: 1,Dijkstra 提出按路径长度的递增次序,逐步产生最短路径: 1,首先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,直到从起始顶点 v…
OpenJudge 799:Heavy Transportation 总时间限制: 3000ms 内存限制: 65536kB 描述BackgroundHugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand business. But he needs a clever man who tells him whether there really is a way from the…
今天更新这篇文章超级激动,因为我会最小生成树的算法了(其实昨天就开始研究了,只是昨天参加牛客网的算法比赛,结果又被虐了,好难过~) 最小生成树的算法,其实学了数据结构就会有一定的基础,Kruskal算法是贪婪法的一种,一直在所有边中选择最小边(当然不能形成环,因为最小生成树是没有环的).首先遇到的问题就是如何表示这个图,想用邻接矩阵还是关联矩阵.但是这两种矩阵都要输入好多,感觉太浪费空间了.于是,我自己定义了一个类,是边的类.只要一个图的每一条边都关联两个点,两个端点.于是这个类中包括一个关联点…