Database Reference
In-Depth Information
Als Nächstes müssen wir den Algorithmus selbst importieren und ihm unse-
ren GraphJung und den Transformer übergeben.
import edu.uci.ics.jung.algorithms.scoring.BarycenterScorer
barycenter = new BarycenterScorer<Vertex,Edge>( j, t )
Damit erhalten wir die BarycenterScorer-Wertung für jeden Knoten. Sehen
wir uns Kevin Bacons Wertung an.
bacon = g.V.filter{it.name=='Kevin Bacon'}.next()
bacon _ score = barycenter.getVertexScore(bacon)
~0.0166
Sobald wir Kevin Bacons Wertung kennen, können wir jeden Knoten durch-
gehen und diejenigen festhalten, deren Wertung kleiner ist.
connected = [:]
Es dauert wirklich lange, die BarycenterScorer-Wertung für jeden Schauspie-
ler in der Datenbank zu berechnen. Darum lassen wir den Algorithmus nur
über Kevins Co-Stars laufen. Das dauert, je nach Hardware, ein paar Mi-
nuten. BarycenterScorer ist schnell, doch wenn wir ihn über alle Co-Stars
laufen lassen, summiert sich das ganz schön.
bacon.costars.each{
score = b.getVertexScore(it);
if(score < bacon _ score) {
connected[it] = score;
}
}
Alle Schlüssel, die sich in der connected -Map befinden, sind eine bessere
Wahl als Kevin Bacon. Aber ein bekannter Name ist schöner, deshalb geben
wir sie alle aus und wählen uns einen, den wir mögen. Ihre Ausgabe kann
variieren, da die Daten der Filmdatenbank ständig ergänzt werden.
connected.collect{k,v -> k.name + " => " + v}
==> Donald Sutherland => 0.00925
==> Clint Eastwood => 0.01488
...
Donald Sutherland erscheint in der Liste mit einem respektablen Wert von
~0,00925. Hypothetisch gesehen sind die „Six Degrees“ von Donald Suther-
land leichter zu spielen als die traditionellen „Six Degrees“ von Kevin Bacon.
Search WWH ::




Custom Search