首页 存档 技术 查看内容

算法:深度优先算法和广度优先算法(基于邻接矩阵)

2018-3-30 13:00 |来自: 互联网 630 0

摘要: 1. 写在前面 深度优先算法和广度优先算法在搜索方面有着重要的应用,例如经典的分酒问题以及最短线路等问题   图的存储结构有两种:一种是基于二维数组的邻接矩阵表示法。             另一种是基于链 ...

1. 写在前面

深度优先算法和广度优先算法在搜索方面有着重要的应用,例如经典的分酒问题以及最短线路等问题

  图的存储结构有两种:一种是基于二维数组的邻接矩阵表示法。

            另一种是基于链表的的邻接表。

  在邻接矩阵中,可以如下表示顶点和边连接关系:

    

说明:

  将顶点对应为下标,根据横纵坐标将矩阵中的某一位置值设为1,表示两个顶点向联接。

  图示表示的是无向图的邻接矩阵,从中我们可以发现它们的分布关于斜对角线对称

  我们在下面将要讨论的是下图的两种遍历方法(基于矩阵的)

    

  我们已经说明了我们要用到的是邻接矩阵表示法,那么我首先要来构造图:

  矩阵图的数据结构如下表示:

#define MaxVnum 50
typedef double AdjMatrix[MaxVnum][MaxVnum];   //表示一个矩阵,用来存储顶点和边连接关系
typedef struct {
    int vexnum,arcnum;               //顶点的个数,边的个数
    AdjMatrix arcs;                 //图的邻接矩阵
}Graph;

  这样我们可以首先来创建上述图,为了方便,我们直接在代码中书写矩阵,而不用每次调试手动输入了

void CreateGraph(Graph
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部