Основные понятия
提出一種新的、多項式時間的算法來枚舉圖 G 中的所有測地線。該圖可以是有向的或無向的,也可以是加權的或不加權的。
Аннотация
本文首先介紹了測地線的定義和基本概念。作者提出了三個問題:
- 如何找到兩個固定頂點之間的一條測地線?(第2節)
- 如何找到兩個固定頂點之間的所有測地線?(第3節)
- 如何解決所有頂點對之間的問題(2)?(第4和6節)
作者指出,直接多次應用問題(2)的方法效率較低,因為它依賴於深度優先搜索(DFS),而作者提出的"Fast-APAG"算法則避免了DFS,從而在稀疏圖上表現更優。
對於有向圖和加權圖,作者也提出了相應的解決方案。具體而言,對於有向圖,作者利用強連通性來推廣第2和第3節的方法;對於加權有向圖,作者則採用了Dijkstra算法的變體。
最後,作者介紹了"Fast-APAG"算法的內部工作原理,並將其與度量誘導子圖的枚舉聯繫起來。
Статистика
對於隨機圖(1400, 20000, 4),Fast-APAG 在 847 秒內找到了 18,200,942 條測地線,而迭代 FindPath 只用了 300 秒。
對於隨機圖(1400, 5000, 7),Fast-APAG 在 93 秒內找到了 6,089,448 條測地線,而迭代 FindPath 用了 142 秒。
對於隨機圖(4000, 12000, 10),Fast-APAG 在 665 秒內找到了 44,527,596 條測地線,而迭代 FindPath 用了 3,996 秒。
對於隨機圖(6000, 20000, 9),Fast-APAG 在 5,733 秒內找到了 106,990,552 條測地線,而迭代 FindPath 在 10 小時後仍未完成。
Цитаты
"由於 FindPath[s,t,dist(s,t),All] 必須啟動 n(n-1) = 35,994,000 次,但平均只能找到 3 條測地線,而 Fast-APAG 則可以長時間不間斷地運行。"
"雖然計算距離矩陣 D(G) 的複雜度為 O(n^3 * δ) = O(n^4),但對於較小的 n 來說這並不是問題。例如對於 (6000, 20000) 的實例,用'簡潔'的方式計算 D(G) 只需 7.6 秒。"