2017-01-06 53 views
5

मेरे पास एक ग्राफ है जिसमें दो प्रकार के नोड्स शामिल हैं: कंपनियां और व्यक्ति।किसी कंपनी के शेयरधारकों के स्वामित्व प्रतिशत की गणना

एक कंपनी नोड में किनारों की एक सूची है जो शेयरधारकों का प्रतिनिधित्व करती है। एक शेयरधारक के पास शेयरों का प्रतिशत होता है और या तो एक कंपनी या व्यक्ति होता है। एक व्यक्ति नोड हमेशा एक पत्ता है।

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 

तीर उलट किया जा सकता है, चाहे वे शेयर या मालिकों

Company shareholders

कौन सच में कंपनी की और क्या प्रतिशत के साथ मालिक का प्रतिनिधित्व के आधार पर:

यहाँ एक उदाहरण है। इस उदाहरण में, हमें यह पता होना चाहिए कि यूजरए का 66.66% कंपनी ए और यूजरबी का 33.33% कंपनीबी है।

यह एक संक्रमण मैट्रिक्स का उपयोग करके गणना की जा सकती है और इसे कई बार गुणा कर सकती है, like this

अफसोस की बात है, यह एक अनुमान है और बहुत सटीक होने के लिए बहुत सारे पुनरावृत्तियों की आवश्यकता है। मुझे संदेह है कि सटीक उत्तर पाने का एक तरीका है। मैंने eigenvalues ​​देखा है, लेकिन मुझे लगता है कि मेरे गणित मुझे असफल कर रहे हैं। Matrices के मामले में, मुझे लगता है कि मैं एक संक्रमण मैट्रिक्स (या मार्कोव चेन) के स्थिर वितरण की तलाश में हूं।

शायद मैं इसे खत्म कर रहा हूं? मुझे लगता है कि मैट्रिस को हल किए बिना और रिकर्सिव एल्गोरिदम के बिना इस परिणाम को प्राप्त करने का कोई तरीका होना चाहिए। विशेष रूप से इस बात पर विचार करते हुए कि ग्राफ में बहुत सारी पत्तियां हैं और मुझे केवल एक ही कंपनी (ग्राफ के "रूट") के शेयरधारकों में दिलचस्पी है।

मैं जावा में अंतिम समाधान लागू करूंगा। तीसरे पक्ष के पुस्तकालयों का उपयोग किया जा सकता है।

धन्यवाद!

+0

Eigenvalues ​​वास्तव में जाने का रास्ता है। विशेष रूप से स्पैर मैट्रिस के लिए उनकी गणना बहुत कुशलता से की जा सकती है। –

+0

@WillemVanOnsem किसी भी विचार का कारण है कि जब मैं इस उदाहरण के लिए बाएं eigenvalues ​​प्राप्त करने का प्रयास करता हूं, तो मुझे मूल्य '1' के साथ दो eigenvalues ​​मिलता है? [मुझे यकीन नहीं है कि इसकी व्याख्या कैसे करें] (https://www.wolframalpha.com/input/?i=eigenvectors (% 7B% 7B0, .5, .5,0% 7 डी,% 7 बी.5, 0,0, .5% 7 डी,% 7 बी 0,0,1,0% 7 डी,% 7 बी 0,0,0,1% 7 डी% 7 डी)) – GuiSim

+0

@ गुईसिम क्या आपने इस प्रश्न को [गणित स्टैक एक्सचेंज] पर पूछने की कोशिश की है (https://math.stackexchange.com/)? वे आपको इससे भी अधिक प्राप्त कर सकते हैं .. इसके अलावा ... अगर आपको एक – zelusp

उत्तर

1

मुझे लगता है कि अपने मैट्रिक्स की लेबलिंग कम या ज्यादा तो

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 

जहां सीए/बी को दर्शाता है कंपनी ए/बी, जबकि uA/बी उपयोगकर्ता ए/बी के लिए खड़ा है की तरह है।

चलिए इस मैट्रिक्स को A के रूप में इंगित करते हैं। फिर अभिव्यक्ति (1, 0, 0, 0).A हमें कंपनी ए में "निवेश" 1 "इकाई" के बाद तत्काल "संसाधनों का वितरण" देता है। इस मामले में परिणाम वास्तव में (0, 0.5, 0.5, 0) है, यानी, कंपनी बी को 50% और उपयोगकर्ता ए को 50% भी मिलता है। हालांकि, संसाधनों कंपनी बी के लिए जिम्मेदार ठहराया "प्रचार" आगे, इसलिए आदेश "संतुलन" वितरण खोजने के लिए, हम n की सीमा अनंत के लिए जा रहा में

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

गणना करनी है। बाएं ईजेनवेक्टरों के संदर्भ में, मूल मैट्रिक्स A को फिर से लिखा जा सकता है (माना जाता है कि यह विकर्ण है) A=Inverse[P].w.P, जहां w एक विकर्ण मैट्रिक्स है जो eigenvalues ​​युक्त है। फिर एक

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

इस विशेष मामले में है, eigenvalues ​​1, 1, 0.5, -0.5 हैं इसलिए जब n अनंत को जाता है, केवल eigenvalue 1 जीवित रहने (रों)। इस प्रकार w^n की सीमा DiagonalMatrix[{1,1,0,0}] है।अंतिम परिणाम के रूप में इसलिए

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

जो पैदावार

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

अंत में, eigenvectors eigenvalue 1 के लिए इसी (0, 0, 1, 0) और (0, 0, 0, 1) हैं लिखा जा सकता है। इसका अर्थ यह है कि यदि उपयोगकर्ता ए/बी में संसाधनों की 1 इकाई "निवेश" करता है, तो संबंधित उपयोगकर्ता "सबकुछ रखता है" और कुछ भी आगे फैलता नहीं है, यानी, एक संतुलन पहले से ही पहुंच चुका है। तब दो बार उपयोगकर्ता (पत्ते) होते हैं क्योंकि eigenvalue दोगुनी गिरावट होती है।

संबंधित मुद्दे