Während die meisten Fragen zum Gruppieren von Knoten auf der Grundlage von Ähnlichkeit (Taubenlöcher) sind, möchte ich Knoten basierend auf ihrer Nähe gruppieren.Knoten effizient gruppieren?
Ich habe eine große, dichte Sammlung von Knoten - Potenziell Millionen. Auf dem Bildschirm nehmen sie etwas Platz in Anspruch, so dass sie als Größe betrachtet werden können.
Was ich versuche zu tun ist, diese Knoten in einzelne Knoten effizient zu gruppieren, sowohl in der Verarbeitungszeit als auch in der Sammlung von mehr Knoten pro Container.
Meine aktuellen Versuche waren entweder zu langsam oder funktionierten nicht, sondern basieren alle auf der gleichen Lösung, die mir vorschwebt: Berechnen Sie eine Menge möglicher Container, indem Sie einen Knoten und seine umgebenden Knoten nach dem Zufallsprinzip und Gruppieren Sie sie und wählen Sie dann den effektivsten Container aus.
Was sind Ihre Ideen, nicht speziell in irgendeiner Sprache, aber ich werde dafür PHP oder JavaScript verwenden.
Edit
Ich vergaß zu erwähnen, dass die Knoten strömte werden, so braucht es unbegrenzte Knoten zu übernehmen, sie in Behälter setzen, wie sie kommen, die Schaffung neuer Container oder auch bei Bedarf zu löschen, für bis zu Millionen von Behälter. Das wäre am idealsten.
Ich habe den Begriff Clustering in meinem eigenen Code verwendet und es ist genau das, was ich will. Danke für die Algorithmen. Ich schaue mir sie an und lasse Sie wissen, ob es sich um geeignete Lösungen handelt. – DanRedux
Mit Blick auf diese Algorithmen entwarf ich eine, die für mich funktionieren würde, es ist eine Mischung aus ihnen. Ich werde meine "k" -Behälter nach dem Zufallsprinzip platzieren, den nächsten Container zu jedem Knoten finden, diese Gruppen bedeuten, und den Container dorthin bewegen, ein paar Mal wiederholen. Der Teil, den ich verbessern muss, ist die Schleife. Einige Knoten sind außerhalb des Bereichs, und ich frage mich, ob es einen schnelleren Weg gibt, nur durch die Knoten zu laufen, die in der Reichweite anderer Knoten liegen würden. aber es kann sehr spärliche Bereiche mit Knoten außerhalb der Reichweite geben. – DanRedux
Haben Sie den Artikel über DBSCAN schon gelesen? Das scheint das zu sein, was du willst. – Basti