图数据结构:邻接表与邻接矩阵实现解析
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
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



