图论2 图的建立与遍历

Posted rtrtrt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图论2 图的建立与遍历相关的知识,希望对你有一定的参考价值。

在c++中我们应如何表示一张图呢?

表示完成后又应如何调用呢?

 

1.图的建立

我们有许多方法存住一张图,在csp-s考试范围常用的方法有:

  1.邻接矩阵  2.数组模拟链表(前向星)    (当然还有许多其他方法)

邻接矩阵理解很简单:

对于一个二维数组 a [i] [j],a [i] [j]的值即为 点 i 到点 j 的边的边权【注释1】

就是说我们总是将 从i 到 j 的单向边的边权赋给 用以存这个边的二维数组的对应位置。

void add(int start,int end,int length)
{
    len[start][end]=length;
    len[end][start]=length;
    return;
}

这便是邻接矩阵的存边法,其实就是将i j之间无向边的“长度”权值赋给了len[i] [j]和len[j] [i]。

#注意这里存在两次赋值,仔细观察发现其实是存了两条有向边 i j和j i。【注释2】我们通过构建两条反向有向边达到了模拟无向边的效果。

以上是关于图论2 图的建立与遍历的主要内容,如果未能解决你的问题,请参考以下文章

图论广度优先搜索

数据结构实验之图论二:图的深度遍历-java代码

模板 - 图论 - 图的存储和遍历

图论 - 图的遍历 - 深度优先搜索 - n皇后问题

20162308 2017-2018-2 《程序设计与数据结构》第11周学习总结

一起玩转图论算法之二:图的深度优先遍历