2017-01-06 2 views
5

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

Company shareholders

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!

+0

Eigenwerte ist in der Tat der Weg zu gehen. Sie können besonders effizient für dünn besetzte Matrizen berechnet werden. –

+0

@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

+0

@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

Antwort

1

Ich gehe davon aus, dass die Kennzeichnung Ihrer Matrix ist mehr oder weniger wie so

cA cB uA uB 
cA 0 0.5 0.5 0 
cB 0.5 0 0 0.5 
uA 0 0 1 0 
uB 0 0 0 1 

wo cA/B Gesellschaft bezeichnet A/B während uA/B Benutzer A/B steht.

Wir bezeichnen diese Matrix als A. Dann gibt der Ausdruck (1, 0, 0, 0).A uns die sofortige "Verteilung von Ressourcen" nach dem "Investieren" von 1 "Einheit" in Firma A. In diesem Fall ist das Ergebnis tatsächlich (0, 0.5, 0.5, 0), d.h. Firma B erhält 50% und Benutzer A erhält ebenfalls 50%. Allerdings sind die an dem Unternehmen B zugeschrieben Ressourcen „propagieren“ weiter, so um die „Gleichgewicht“ Verteilung zu finden, die wir

(1, 0, 0, 0).A^n 

in der Grenze von n geht bis ins Unendliche berechnen müssen. In Bezug auf die linken Eigenvektoren kann die ursprüngliche Matrix A umgeschrieben werden (unter der Annahme, dass sie diagonalisierbar ist) wie A=Inverse[P].w.P, wobei w eine diagonale Matrix ist, die die Eigenwerte enthält. Dann hat man

A^n = (Inverse[P].w.P)^n = Inverse[P].w^n.P 

In diesem speziellen Fall sind die Eigenwerte sind 1, 1, 0.5, -0.5 so, wenn n bis ins Unendliche geht, nur der Eigenwert 1 überleben (s). Somit ist die Grenze von w^nDiagonalMatrix[{1,1,0,0}].Das Endergebnis kann daher als

Inverse[P].DiagonalMatrix[{1,1,0,0}].P 

geschrieben werden, die

0. 0. 0.666667 0.333333 
0. 0. 0.333333 0.666667 
0. 0. 1. 0. 
0. 0. 0. 1. 

Schließlich ergibt, die Eigenvektoren zum Eigen 1 entsprechen, sind (0, 0, 1, 0) und (0, 0, 0, 1). Die Bedeutung davon ist, dass, wenn man 1 Einheit von Ressourcen in Benutzer A/B "investiert", der entsprechende Benutzer "alles behält" und sich nichts weiter ausbreitet, d. H. Ein Gleichgewicht wurde bereits erreicht. Der Eigenwert ist dann doppelt entartet, da es zwei Benutzer (Blätter) gibt.

Verwandte Themen