Ich habe ein Diagramm, das zwei Arten von Knoten enthält: Firmen und Personen.Berechnen der Anteilseignerprozentsatz eines Unternehmens
Ein Unternehmensknoten hat eine Liste von Kanten, die Anteilsinhaber darstellen. Ein Anteilinhaber hat einen Prozentsatz von Aktien und ist entweder eine Gesellschaft oder eine Person. Ein Personenknoten ist immer ein Blatt.
Hier ist ein Beispiel:
CompanyA has 50% of CompanyB's shares
UserA has 50% of CompanyA's shares
UserB has 50% of CompanyB's shares
CompanyB has 50% of CompanyA's shares
Die Pfeile umgekehrt werden kann, je nachdem, ob sie repräsentieren Aktien oder Eigentümer
Wer in Wahrheit CompanyA und mit welchem Prozentsatz besitzt. In diesem Beispiel sollten wir erhalten, dass UserA 66,66% von CompanyA besitzt und UserB 33,33% von CompanyB besitzt.
Dies kann mit einer Übergangsmatrix berechnet werden und multipliziert es selbst mehrere Male, like this.
Leider ist dies eine Schätzung und erfordert eine ganze Reihe von Iterationen, um eine sehr genaue zu erhalten. Ich vermute, dass es eine Möglichkeit gibt, eine genaue Antwort zu bekommen. Ich habe mir Eigenwerte angeschaut, aber ich denke, meine Mathematik versagt mir. In Bezug auf Matrizen denke ich, dass ich nach der stabilen Verteilung einer Übergangsmatrix (oder Markov Chain) suche.
Vielleicht bin ich dies zu kompliziert? Ich habe das Gefühl, dass es eine Möglichkeit geben sollte, dieses Ergebnis zu erhalten, ohne auf Matrizen und einen rekursiven Algorithmus zu reagieren. Vor allem, wenn man bedenkt, dass das Diagramm viele Blätter enthält und ich mich nur für die Aktionäre einer einzelnen Firma interessiere (die "Wurzel" des Graphen).
Ich werde die endgültige Lösung in Java implementieren. Third-Party-Bibliotheken können verwendet werden.
Danke!
Eigenwerte ist in der Tat der Weg zu gehen. Sie können besonders effizient für dünn besetzte Matrizen berechnet werden. –
@WillemVanOnsem eine Idee warum, wenn ich versuche, die linken Eigenwerte für dieses Beispiel zu bekommen, bekomme ich zwei Eigenwerte mit dem Wert '1'? [Ich bin mir nicht sicher, wie ich das interpretiere] (https://www.wolframalpha.com/input/?i=eigenvectors (transpose% 7B% 7B0, .5, .5,0% 7D,% 7B.5, 0,0, .5% 7D,% 7B0,0,1,0% 7D,% 7B0,0,0,1% 7D% 7D)) – GuiSim
@GuiSim haben Sie versucht, diese Frage auf der [Math Stapel Exchange] zu stellen (https://math.stackexchange.com/)? Sie können Sie weiter bringen, als wir können. Auch ... würde gerne die Antwort wissen, wenn Sie eine gefunden hätten – zelusp