无向简单图怎么判断_无向图的基本算法

本文详细介绍了无向图的概念及其在生活中的广泛应用。重点阐述了图的API表示,包括邻接矩阵和邻接列表等表示方法。接着,深入探讨了深度优先搜索(DFS)和广度优先搜索(BFS)算法,包括它们的工作原理、代码实现以及在迷宫探索问题中的应用。此外,还提到了连通分量的计算。这些基础算法是图处理和后续复杂算法的核心。
摘要由CSDN通过智能技术生成

根据性质,图可以分为无向图和有向图。本文先介绍无向图,后文再介绍有向图。之所以要研究图,是因为图在生活中应用比较广泛。

无向图

图是若干个顶点(Vertices)和边(Edges)相互连接组成的。边仅由两个顶点连接,并且没有方向的图称为无向图。在研究图之前,有一些定义需要明确,下图中表示了图的一些基本属性的含义,这里就不多说明。

图的API表示

在研究图之前,我们需要选用适当的数据结构来表示图,有时候,我们常被我们的直觉欺骗,如下图,这两个其实是一样的,这其实也是一个研究问题,就是如何判断图的形态。

要用计算机处理图,我们可以抽象出以下的表示图的API:

Graph的API的实现可以由多种不同的数据结构来表示,最基本的是维护一系列边的集合,

如下:还可以使用邻接矩阵来表示:

也可以使用邻接列表来表示:

由于采用如上方式具有比较好的灵活性,采用邻接列表来表示的话,可以定义如下数据结构来表示一个Graph对象。

public classGraph

{private readonly int verticals;//顶点个数

private int edges;//边的个数

private List[] adjacency;//顶点联接列表

public Graph(intvertical)

{this.verticals =vertical;this.edges = 0;

adjacency=new List[vertical];for (int v = 0; v < vertical; v++)

{

adjacency[v]=new List();

}

}public intGetVerticals ()

{returnverticals;

}public intGetEdges()

{returnedges;

}public void AddEdge(int verticalStart, intverticalEnd)

{

a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值