Thorup-Zwick 當年在仿真圖上面的想法,是選取許多叢集中心當作障礙物、以每個點為中心張出一顆氣球,直到撞到任何一個障礙物為止。這樣的概念可以應用在非常非常多的演算法中。如果暫時不關心構造出 Distance Oracle 的時間,只在乎「我們儲存了多少東西」的話,可以發現,Throup-Zwick 的 3倍近似最短距離資料結構只需要 n^1.5 的儲存空間。而事實上,存在某些很糟的圖,如果要做到保證 3倍近似最短距離,真的必須要存 n^1.5-bits。類似地,如果是 2倍近似最短距離,那麼某些情形下真的得存到 n^2-bits 的儲存空間。
在 2010 年,羅馬尼亞出生 MIT畢業進入紐約 AT&T 實驗室的 Mihai Pătrașcu (可惜 Pătrașcu 在 2012 年因為腦癌離世了,享年 29 歲,是非常非常年輕且厲害的理論電腦科學家) 與以色列巴伊蘭大學教授 Liam Roditty 注意到,得用到 n^2-bits 儲存空間的那些圖,都必須是稠密圖。他們以此設計出了一個期望 n^{4/3}m^{1/3}-個數字的資料結構。也就是說,當圖相當稀疏(比方說,邊數 m 不到 n^2) 的時候,需要的儲存空間也少了很多。
當時在念伊利諾大學香檳分校 UIUC 的 Rachit Agarwal (現在是康乃爾大學的教授) 以及他的指導教授 Philip Brighten Godfrey (只花了三年就拿到柏克萊 PhD 了) 在 2013 年發表了一個比較簡單的兩倍近似最短距離資料結構 2-Stretch Distance Oracle。今天就來簡單介紹這個資料結構存了哪些東西。
如此一來就可以在常數時間回傳近似最短距離啦。有兩個部分要證明:一個是如何正確選取 α 使得資料結構大小恰好是期望 n^{4/3}m^{1/3}。二是要證明回傳的長度真的保證在 2倍最短距離之內。這兩個部份的證明就請大家參考下面的短論文囉~
http://www.cs.cornell.edu/~ragarwal/pubs/stretch2.pdf