Ich habe das folgende Beispiel für die Details des Markov-Clustering-Algorithmus durchgearbeitet:
Ich habe den Eindruck, dass ich den Algorithmus korrekt dargestellt habe, aber ich bekomme nicht die gleichen Ergebnisse, die zumindest dieser Leitfaden für diesen Input erhalten hätte.
Der aktuelle Code lautet: Ссылка
Ich bin mir nicht sicher, ob ich vielleicht gerade eine kleine Tatsache verpasst habe oder nur eine kleine Verbesserung brauche, aber ich habe ein paar Variationen ausprobiert, einschließlich:
Alle haben das gleiche Ergebnis zurückgegeben - der Knoten beeinflusst nur sich selbst.
Ich habe sogar eine ähnliche Algorithmusimplementierung in VB gefunden: Ссылка
Und mein Code scheint mit Ausnahme ihrer Nummerierung übereinzustimmen (600 - Abstand zum Beispiel).
Dies ist die Erweiterungsfunktion
%Vor%Und das ist die Inflationsfunktion
%Vor%Und schließlich die Hauptdurchgangsfunktion
%Vor%Ihre Implementierung ist korrekt. Das Beispiel ist einfach falsch.
Die drei Ergebnismatrizen auf der Folie "Schritte 5 und 6 wiederholen, bis ein stetiger Zustand erreicht ist (Konvergenz)" sind die Ergebnisse, wenn NUR die Inflation durchgeführt wird.
Um einige Punkte über den Algorithmus zu klären.
Was Ihren Code betrifft.
Das Ergebnis, bei dem alle Einsen in der ersten Zeile stehen, wird erwartet, was interpretiert wird, da sich alle Elemente im selben Cluster befinden.
Die Verwendung von currentMatrix.slice zum Klonen einer Matrix wirkt verdächtig. Es ist ein seichter Klon, und da du mutierst, kann das Ärger machen.
Die Verwendung von Runde sieht auch ein wenig seltsam aus, da Rundung nicht als Teil des Normalisierungsschritts in dieser PowerPoint-Präsentation erwähnt wird.
Tags und Links javascript cluster-analysis markov