圖論基礎知識(三)

本文轉載自 個人公衆號文章,原文是 lee 神寫的,已獲原文做者受權。

本期給你們帶來圖論基礎知識的最後一部分總結。算法

Slides 的製做素材大部分來源於網絡,出處大多無從查起,這裏感謝原創內容。但我相信知識的分享是無價的,正如魯迅所說:「有人翻印,功德無量。」網絡

咱們重點來介紹一下鄰接矩陣。數據結構

  • 用矩陣的理論和分析方法來研究圖論,將圖的一些問題轉換爲矩陣運算問題,更適合於計算機處理。
  • 圖在計算機中就是以矩陣形式存貯和讀取的,也可藉助圖的理論和方法研究矩陣中的問題

這裏插播一道例題,騎士撥號器。ide

這題最樸素的思路是把電話號碼轉化成圖,用有memo的DFS來作這道題。下面給出Discussion區@peritan的答案。優化

這題同時很好詮釋DP & BFS & DFS 三者之間微妙的關係,讀者能夠悉心體會甄別其間異同。在上一期的講解中咱們提到了這幾者的關係。spa

下面咱們再來看一下,一樣很Straight Forward的iteration解法。能夠看到,迭代計算的部分,就是圖的邊的關係。3d

下面的圖表中,給出了每一個號碼的初始值,和他們增加的效果。我我的以爲有點像馬爾可夫鏈的效果,很容易和矩陣運算聯繫到一塊兒。 code

因此咱們能夠把他們的轉化關係用矩陣來表示,每一步的路徑數目,用矩陣冪運算來計算。矩陣冪運算能夠優化到O(logN),矩陣運算的模版網上不少,不是模版黨暫且不表,手擼也至關好寫。一樣的方法也能夠用在不少地方,個別題難點會體如今關係矩陣的構造上,其本質就是線性變化,能遞推就能夠快速冪。blog

回到咱們的主題,下面講一下,算法題中我常常使用的,存儲圖的數據結構,鄰接表。token

以上就是咱們圖論基礎知識的總結。練好圖中通常的DFS和BFS寫法,就成功了一大半。常涉及的進階圖論知識,還有一些用人名命名的各類算法,包括不限於: 兩種最小生成樹MST,三種最短路徑,公共祖先LCA。鑑於我和他們這些人也不太熟,暫且不表啦,期待其餘老師投稿啦。


qrcode_green.jpeg

相關文章
相關標籤/搜索