Ich habe mit einigen Sachen herum gespielt und die Idee des Versuchens ausgearbeitet, Kevin Bacon Zahlen herauszufinden. Ich habe Daten für eine Seite, die zu diesem Zweck wir ein soziales Netz betrachten können. Nehmen wir an, dass es Facebook ist (zur Vereinfachung der Diskussion). Ich habe Leute und ich habe eine Liste ihrer Freunde, also habe ich die Verbindungen zwischen ihnen. Wie kann ich die Entfernung von einer Person zur anderen berechnen (im Grunde eine Kevin Bacon Nummer)?Berechnung "Kevin Bacon" Zahlen
Meine beste Idee ist eine Bidirectional search, mit einer Tiefenbegrenzung (um die Komplexität der Berechnung zu begrenzen und das Problem von Menschen zu vermeiden, die einfach nicht in der Grafik verbunden werden können), aber ich weiß, dass dies ziemlich brachiale Kraft ist.
Könnte es besser sein, kleine Untergraphen zu erstellen (sagen Sie etwas, das zu Gruppen auf Facebook äquivalent ist), die kürzesten Abstände zwischen ihnen zu berechnen (vielleicht vor der Zeit) und dann THOSE zu benutzen, um einen Link zu finden? Während dies eine Vorberechnung erfordert, könnte es möglich sein, viel weniger Knoten zu durchsuchen (Knoten können Gruppen anstelle von Individuen sein, wodurch der Graph viel kleiner wird). Dies wäre jedoch immer noch eine bidirektionale Suche.
Ich könnte auch die Anzahl der Personen, mit denen eine Person verbunden ist, vorausberechnen, indem ich die Knoten nach "populären" Leuten durchsuche, da sie die beste Chance haben, sich mit der gegebenen Zielperson zu verbinden. Mir ist klar, dass dies eine Abwägung der Geschwindigkeit für den kürzesten Weg wäre. Ich würde denken, dass ich auch eine Suche nach Tiefentiefe anstelle der Suche mit der größten Breite, die ich in den anderen Fällen verwenden möchte, verwenden möchte.
Kann jemand an einen einfacheren/schnelleren Weg denken? Ich würde gerne die kürzeste Länge zwischen zwei Personen finden, also ist es nicht so einfach wie immer den gleichen Endpunkt zu haben (wie beim Kevin Bacon Problem).
Ich erkenne, dass es Probleme gibt, wie ich Ketten von 200 Leuten und so bekommen konnte, aber das kann gelöst werden, meine Begrenzung auf die Tiefe habend, die ich suche bin.
BTW, da es nicht um Filme geht, gibt es keinen zwingenden Grund, es eine Kevin Bacon Nummer zu nennen, anstatt die bekanntere (zu einigen ;-)) Erdős Nummer: http://en.wikipedia.org/wiki/Erdos_number – ShreevatsaR
Ich habe diesen Begriff gesehen, während ich etwas recherchiert habe, aber wenn ich ihn Kevin Bacon nenne, weiß jeder sofort, wovon ich spreche. Ich dachte, das würde das Erklären reduzieren. – MBCook
"Grad der Trennung" wäre auch sinnvoll –