2012-10-16 9 views
7

Ich wäre daran interessiert, genau zu wissen, welche Algorithmen D3 verwendet, um die Kraft gerichtete Grafik-Funktion in der Bibliothek zu erreichen. Nachdem ich der Geschichte der kraftgerichteten Graphen gelesen hatte, war ich ein bisschen verwirrt darüber, was genau der Algorithmus oder die Methode (Kombination von Algorithmen/Heuristiken) ist, die in der Bibliothek verwendet wird.Welche Algorithmen verwendet D3.js für den kraftgerichteten Graphen?

D3 API reference sagt Barnes-Hut-Algorithmus, um die Ladungen verwendet wird, berechnen auf Körpern wirkenden, einen O (N * log (N)) Betrieb. Kobourovs Artikel erwähnt, dass der Quigley-Eades-Algorithmus und Hu's Algorithmus Multilevel-Algorithmen sind, die Barnes-Hut verwenden. Wird einer von ihnen auf irgendeine Weise in D3 verwendet?

Das API-Wiki sagt, dass die Verlet-Integration für die Partikelpositionierung verwendet wird. Der source code erwähnt den Gauss-Seidel-Algorithmus, der wiederum sowohl in Hu's algorithm als auch in Dwyer's graph layout paper erwähnt wird. Ich denke, die Frage, auf die ich eine Antwort suche, ist der "integrative" Algorithmus D3; Kobourovs Artikel listet mehrere und D3-Kraft-orientierte Merkmale scheinen nicht direkt zu denen zu passen.

+1

Jetzt eine Frage, die ist zu finden! +1 – Ridcully

+0

Am besten mailen Sie diese Frage an Mike Bostock ... – akuhn

+0

@akuhn: Ich habe die E-Mail-Adresse des Schöpfers nicht auf der D3-Website gesehen. Es wäre nicht angebracht, solche Fragen direkt an ihn zu senden, dann würde jeder in der Gemeinschaft das tun. Ich habe gesehen, wie Mike hier auf SO Fragen beantwortet, also denke ich, dass dies das richtige Forum ist, um zu fragen. – amergin

Antwort

3

In der ursprünglichen d3 paper, Mike Bostock & al. schrieb, dass die Dwyer-Implementierung für das Force-Diagramm-Layout verwendet wird:

Das Force-Layout kombiniert physikalische Simulation und iterative Constraint-Relaxation [7

[7] T. Dwyer. Skalierbares, vielseitiges und einfaches eingeschränktes Diagrammlayout. In EuroVis, 2009.

Für weitere Informationen beschreibt Dwyer's paper detailliert den gesamten Algorithmus.