图的大体架构以及主要知识

来源:互联网 发布:adb devices 端口 编辑:程序博客网 时间:2024/05/18 20:47

首先把图分为4点来定义

1.什么是图 

图的定义图就是由两个集合组成的含有定点集合以及边集合

分为有向图无向图

2.图的存储

邻接矩阵:


行:表示尾(通过遍历非0元素个数可以知道入度)

列:标示头(通过遍历非0元素个数可以知道出度)

const int MaxVex=100;                      //图中最大顶点数  typedef  char  VertexType;     typedef  struct  vertex  {        int adjvex;                               VertexType  data;                 //顶点的位置   }VType;     typedef  struct  graph  {      int n,e;                                            //n为顶点数,e为边数      VType vexs[MaxVex];                  //顶点集合       int  edges[MaxVex][MaxVex];       }AdjMatrix;

关联矩阵:

表示定点与边的关联关系的矩阵


邻接矩阵:

typedef   struct   node{   int  adjvex;       //邻接点域,存放与Vi邻接的点在表头数组中的位置    struct  node  *next;   //链域,指示下一条边或弧指向的点}JD;表头接点:typedef   struct  tnode{   int  vexdata;     //存放顶点信息     JD  *firstarc;    //指示第一个邻接点}TD;TD   ga[M];  //ga[0]不用

首先有一个表头之后存放n个结点每一个结点后跟n个结点包括指向指针结点域与后一个指针

边集数组:

typedef   struct   node{       int  fromvex;       //起点     int  tovex;           //终点     int weight;          //权}EdgeElem;EdgeElem   EdgeSet[EdgeNum];


3.图的遍历

深度优先遍历

从图的某一顶点V0出发,访问此顶点;然后依次从V0的未被访问的邻接点出发,

深度优先遍历图,直至图中所有和V0相通的顶点都被访问到;若此时图中尚有顶点未被访问,

则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止。

广度优先遍历


跟着边一层一层的访问

4.生成树

生成树:按照遍历的方式生成


最小生成数算法

普里姆算法

n个城市建立通讯网花费最低问题


第一步找与初始连接的权值最小的边

第二步找与这条边相连的边中最小的边

一直迭代知道所有的点都连接

#define M 30#define MAX 100void minispantree_PRIM(int ad[][M],int n)    //n为起始顶点号{  int i,j,k,p,q,wm;   q=p=n-1;   ad[q][q]=1;   for(k=0;k<(n-1);k++)                            //每次找一条边,共需n-1条边   {  wm=MAX;      for(i=0;i<n;i++)                                  //对n个点进行扫描         if(ad[i][i]==1)            for(j=0;j<n;j++)                              //查找与已联入的点边权值最小的边               if( (i!=j) && (ad[i][j]<wm) && (ad[i][j]>0) && (ad[j][j]==0) )               {   wm=ad[i][j];                   p=i;                   q=j;               }      ad[q][q]=1;      printf("%d   %d   %d\n",p+1,q+1,ad[p][q]);     ad[p][q] =ad[q][p]= -ad[p][q];  }}
迪杰斯特拉算法

求最短路径算法


依次迭代上一个数的最小值与n条路径比较








0 0
原创粉丝点击