16、图数据结构:邻接表与邻接矩阵实现解析

图数据结构:邻接表与邻接矩阵实现解析

1. 图的基本概念

图是一种能够捕捉对象之间关系的数据结构,由通过边连接的顶点组成。在现实世界中,像社交网络和全球廉价航班预订网络都可以用图来表示。

图可以分为加权图、有向图和无向图:
- 加权图 :每条边都有一个与之关联的权重,代表使用这条边的成本。例如在航空业中,顶点可以表示州或国家,边表示两个地点之间的航线,边的权重就是两地之间的机票价格。借助加权图,我们可以为精打细算的数字游民找到从旧金山到新加坡的最便宜航班。
- 有向图 :图中的边具有方向,遍历有一定限制,因为边可能只允许沿一个方向遍历。
- 无向图 :可以看作是所有边都是双向的有向图。在无向图中,两个相连的顶点之间有来回的边,并且边的权重适用于两个方向。

2. 图的通用操作协议

为了规范图的操作,我们定义了一个协议 Graph ,该协议描述了图的常见操作:

public enum EdgeType {
    case directed
    case undirected
}

public protocol Graph {
    associatedtype Element
    func createVertex(data: Element) -> Vertex<Element>
    func addDirectedEdge(from source: Vertex<E
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值