[怎样生成最小的DirectFB]本文介绍了怎样生成一个最小(或接近最小)的DirectFB,以及相关的测试用例的安装和测试,对编译中的参数MMX,SSE,SDL,VNC的概念给出了较为详细的介绍 实验平台: FC5(Fedora Core5) Direct...+阅读
把main函数改成:
main(){
graphmatrix graph = {
"abcd",
{{7,8,max,15},{12,100,6,20},{max,100,4,13},{max,4,8,10}},
};
edge mst[max];
int i,j;
prim(graph,mst);
for(j=0;j{
printf("%c\t",mst[j].stop_vex);
printf("%c\t",mst[j].start_vex);
printf("%d\n",mst[j].weight);
}
}
还有graphmatrix结构体里的vexs数组最好定义为vexs[vn+1]给字符串末尾的‘\0'留地方。
急!数据结构最小生成树prim算法C语言实现
Kruskal算法:
void Kruskal(Edge E[],int n,int e)
{
int i,j,m1,m2,sn1,sn2,k;
int vset[MAXE];
for (i=0;i k=1; //k表示当前构造最小生成树的第几条边,初值为1 j=0; //E中边的下标,初值为0 while (k { m1=E[j].u;m2=E[j].v; //取一条边的头尾顶点 sn1=vset[m1];sn2=vset[m2]; //分别得到两个顶点所属的集合编号 if (sn1!=sn2) //两顶点属于不同的集合,该边是最小生成树的一条边 { printf(" (%d,%d):%d/n",m1,m2,E[j].w); k++; //生成边数增1 for (i=0;i if (vset[i]==sn2) //集合编号为sn2的改为sn1 vset[i]=sn1; } j++; //扫描下一条边 } } Prim算法: void prim(MGraph g,int v) { int lowcost[MAXV],min,n=g.vexnum; int closest[MAXV],i,j,k; for (i=0;i { lowcost[i]=g.edges[v][i]; closest[i]=v; } for (i=1;i { min=INF; for (j=0;j if (lowcost[j]!=0 & lowcost[j] { min=lowcost[j];k=j; } printf(" 边(%d,%d)权为:%d/n",closest[k],k,min); lowcost[k]=0; //标记k已经加入U for (j=0;j if (g.edges[k][j]!=0 & g.edges[k][j] { lowcost[j]=g.edges[k][j];closest[j]=k; } } } 算法同样是解决最小生成树的问题。 其算法为:在这n个点中的相通的边进行排序,然后不断地将边添加到集合中(体现了贪心的算法特点),在并入集合之前,必须检查一下这两点是不是在一个集合当中,这就用到了并查集的知识。直到边的集合达到了n-1个。 与prim算法的不同:prim算法为单源不断寻找连接的最短边,向外扩展,即单树形成森林。而Kruskal算法则是不断寻找最短边然后不断将集合合并,即多树形成森林。 复杂度的不同:prim算法的复杂度是O(n^2),其中n为点的个数。Kruskal算法的复杂度是O(e*loge),其中e为边的个数。两者各有优劣,在不同的情况下选择不同的算法。 Prim算法用于求无向图的最小生成树 设图G =(V,E),其生成树的顶点集合为U。 ①、把v0放入U。 ②、在所有u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树。 ③、把②找到的边的v加入U集合。如果U集合已有n个元素,则结束,否则继续执行②。 其算法的时间复杂度为O(n^2) Prim算法实现:(1)集合:设置一个数组set(i=0,1,..,n-1),初始值为 0,代表对应顶点不在集合中(注意:顶点号与下标号差1) (2)图用邻接阵表示,路径不通用无穷大表示,在计算机中可用一个大整数代替。 {先选定一个点,然后从该点出发,与该点相连的点取权值最小者归入集合,然后再比较在集合中的两点与其它各点的边的权值最小者,再次进入集合,一直到将所有的点都归入集合为止。} 虽然以前做过,不过现在还要修改,内容太多,我分2部分说明!以下是程序 /*普里姆算法构造最小生成树*/ #define MAXVEX 30 #define MAXCOST 1000 void prim(int c[MAXVEX][MAXVEX],int n) /*己知图的顶点为{1,2,...,n},c[i][j]和c[j][i]为边(i,j)的权,打印最小生成树 的每条边*/ { int i,j,k,min,lowcost[MAXVEX],closest[MAXVEX];; for (i=2;i Prim算法:#include#includetypedef int VRType; typedef char InfoType;#define MAX_NAME 3/*顶点字符串的最大长度+1*/#define MAX_INFO 20/*相关信息字符串的最大长度+1*/ typedef char VertexType[MAX_NAME];#define INFINITY 32767/*用整型最大值代替无穷大*/#define MAX_VERTEX_NUM 20/*最大顶点个数*/ typedef enum{DG,DN,AG,AN} GraphKind;/*{有向图,有向网,无向图,无向网}*/ typedef int PathMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef int ShortPathTable[MAX_VERTEX_NUM]; typedef struct { VRType adj; /*顶点关系类型。对无权图,用1(是)或0(否)表示相邻否*/ /*对带全图,则为权值类型*/ InfoType *info; /*该弧相关信息的指针(可无)*/ }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { VertexType vexs[MAX_VERTEX_NUM]; /*顶点向量*/ AdjMatrix arcs; /*邻接矩阵*/ int vexnum,arcnum; /*图的当前顶点数和弧数*/ GraphKind kind; /*图的种类标志*/ }MGraph; int LocateVex(MGraph G,VertexType u) { /*初始条件:图G存在,u和G中顶点有相同特征*/ /*操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返回-1*/ int i; for(i=0;i 以下为关联文档: 如何快速生成随机数 RSA算法可以采用32bit RSA算法 设A从2~(N-1) C=(A EXP D) mod N 满足如下条件: D是素数,N是两个素数(P,Q)之积, (D * E) mod ((P-1) * (Q-1))=1 因为:若 C=(A EXP D)mod N 有: A=(C EXP E)... Kruskal算法和Prim算法构造它的一棵最小代价生成树的过程Prim算法复杂度:O(n2), 与边无关,适合求边稠密的网的最小生成树。 算法思想:假设N={V,{E}}是连通网,TE是N上最小生成树中边的集合。算法从U={u0},TE ={}开始,重复执行下述操作:在所... 利用Prim普里姆算法构造最小生成树程序算法同样是解决最小生成树的问题。 其算法为:在这n个点中的相通的边进行排序,然后不断地将边添加到集合中(体现了贪心的算法特点),在并入集合之前,必须检查一下这两点是不是在一个... 无权无向图只给出节点个数怎么用Prim算法求最小生成树Prim算法的主要运行时间花在过程②的选边中。看起来复杂度是O(VE)=O(V^3)不是么,效率也太低了吧…… 为了比较快速地选边,我们用两个数组lowcost、closest动态地维护每一个点... 利用kruska prim算法求解图的最小生成树并比较算法的效率adjmatrix GA 邻接矩阵GA struct edgeset { int fromvex; 起始点 int endvex; 终点 int weight; 权值 } void prim(adjmatrix GA,edgeset CT,int n) { int i,j,k,min,t,m,w; fo... 生成树协议的演进是怎样的和其他协议一样,生成树协议也是随着网络的不断发展而不断更新换代的。本文按照技术发展的主线,介绍了生成树协议的发展历程、近期热点和未来的发展方向。 生成树协议是一种二... java随机生成10个60 100的随机整数用选择排序的算法按从大到小public class random { public static void main(String[] args) { int[] a = new int[10]; int n = 0; while (n < 10) { int b = (int) (Math.random() * 100) + 1; if (b... asp生成html全部ID该怎样生成'只要将你上面的代码打包成一个函数就可以了: function createhtml(id) dim f,name,html,strout,fso set f=server.createobject("adodb.recordset")f.open "select * from temp... 请问什么是珠心算法 ?哪里有珠心算法的全部视频1、概念 珠心算又称珠算式心算或珠脑速算。珠心算是将数变成脑海中算盘上的算珠进行计算的一种方法。它是在珠算的基础上发展而成的。目前在东南亚一带甚为流行,日本、新加坡...利用Prim普里姆算法构造最小生成树程序
实现prim算法或kruscal算法中的一种最小生成树算法