【學習筆記】圖的實現和特徵

1.圖的屬性和分類

本部分圖的內容,面試的時候應該根據被面試公司的情況看是否需要準備更多內容,文末有相關學習鏈接
在這裏插入圖片描述
圖的屬性
Graph(V, E):圖是點和邊的集合構成的

  • V -vertex:點
  1. 度:入度和出度
  2. 點與點之間:連通與否
  • E - edge:邊
  1. 有向和無向(單行線)
  2. 權重(邊長)
    圖的表示和分類

圖的表示方法有兩種,分別是:

  • 鄰接矩陣:
  1. 有相鄰的邊加權重,沒有的話如果有邊加1,沒有邊的化加 0
  2. 如果是有向圖的話,其鄰接矩陣是對稱矩陣
  • 鄰接表:
  1. 用鏈表來存儲和點相連的點的信息,鏈表最後一個元素爲None, 用 / 表示
    在這裏插入圖片描述
    圖的分類
    無向無權圖
    有向無權圖
    無向有權圖
    有向有權圖
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

2.基於圖相關的算法

DFS代碼------遞歸寫法
visited visited visited =set() set() set() set() # 和樹中的 DFS 最大的區別

visited = set()  # 用來記錄訪問過的點
def dfs(node,visited):
    if node in visited: # terminator
        # already visited
        return 
    
    visited.add(node)
    
    # proces current node here 
    ...
    for next_node in node.children():
        if not next_node in visited:
            dfs(next_node,visited)

BFS 代碼
visited visited visited =set() set() set() set() # 和樹中的 BFS 最大的區別

def BFS(graph,start,end):
    
    queue = []
    queue.append([start])
    
    visited = set()  # 和樹中 BFS 的最大區別
    
    while queue:
        node = queue.pop()
        visited.add(node)
        
        process(node)
        nodes = generate_related_nodes(node)
        queue.push(nodes)

圖的高級算法
1.連通圖的個數
2.拓撲排序
3.最短路徑(Dijkstra)
4.最小生成樹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章