2012-10-16 64 views
7

我很想知道D3使用什麼算法來實現庫中的力定向圖形功能。閱讀了力指向圖的歷史的Kobourov's summary,讓我對圖書館中使用的確切算法或方法(算法/啓發式算法的組合)是什麼感到困惑。D3.js使用什麼算法來使用力指向圖?

D3 API reference表示Barnes-Hut算法用於計算作用於身體的電荷,即O(N * log(N))操作。 Kobourov的文章提到Quigley-Eades算法和Hu算法是使用Barnes-Hut的多級算法。其中一個在D3中以某種方式使用?

API維基進一步說Verlet集成被用於粒子定位。 source code提到Gauss-Seidel算法,其在Hu's algorithm和Dwyer的graph layout paper中都被提及。我想我正在尋找答案的問題是什麼「集成」算法D3利用; Kobourov的文章列出了幾個D3和D3強制導向的功能似乎不適合任何這些功能。

+1

發現現在這是一個問題! +1 – Ridcully

+0

你最好通過電子郵件發送該問題給Mike Bostock ... – akuhn

+0

@akuhn:我還沒有在D3網站上看到創建者的電子郵件。我不認爲將這些問題直接發送給他是恰當的,然後社區中的每個人都會這樣做。我看到Mike在這裏回答問題,所以我認爲這是一個正確的論壇。 – amergin

回答

3

在原來的d3 paper中,Mike Bostock & al。寫道,Dwyer的實現用於強制圖形佈局:

爲了穩定的圖形佈局,力佈局結合了物理模擬和迭代約束鬆弛[7]。

[7] T.Dwyer。可擴展,多功能和簡單的約束圖形佈局。在EuroVis,2009.

欲瞭解更多信息,Dwyer's paper詳細介紹了整個算法。