【问题标题】:Computing a company's shareholders ownership percentage计算公司的股东持股比例
【发布时间】:2017-01-06 21:32:40
【问题描述】:

我有一个包含两种类型节点的图表:公司和人员。

公司节点具有代表股东的边列表。股东拥有一定比例的股份,可以是公司或个人。 Person 节点始终是叶子。

这是一个例子:

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

箭头可以颠倒,具体取决于它们代表股份还是所有者

谁实际上拥有 CompanyA 以及拥有多少百分比。在这个例子中,我们应该得到 UserA 拥有 CompanyA 66.66% 的股份,而 UserB 拥有 CompanyB 33.33% 的股份。

这可以使用转换矩阵计算,并将其与自身相乘多次,like this

遗憾的是,这是一个估计值,需要进行大量迭代才能获得非常精确的估计值。我怀疑有办法得到准确的答案。我看过特征值,但我认为我的数学让我失望了。在矩阵方面,我想我正在寻找转移矩阵(或马尔可夫链)的稳定分布。

也许我过于复杂了?我觉得应该有一种方法可以在不解析矩阵和递归算法的情况下获得这个结果。特别是考虑到图表包含很多叶子,并且我只对单个公司的股东感兴趣(图表的“根”)。

我将在 Java 中实现最终解决方案。可以使用第三方库。

谢谢!

【问题讨论】:

  • 特征值确实是要走的路。它们可以非常有效地计算,尤其是对于稀疏矩阵。
  • @WillemVanOnsem 知道为什么当我尝试获取此示例的左特征值时,我得到两个值为 1 的特征值? I'm not sure how to interpret this
  • @GuiSim 你试过在math stack exchange 上问这个问题吗?他们可能会让你比我们更进一步......另外......如果你找到答案,很想知道答案
  • @zelusp 事后看来,我应该在数学堆栈交换中发帖!我们决定采用一种不需要太多数学的不同方法。当我们遇到一个循环时,我们会回溯到循环的根源,并在此过程中按比例分散循环的份额。

标签: java matrix graph linear-algebra graph-algorithm


【解决方案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

其中 cA/B 表示公司 A/B,而 uA/B 表示用户 A/B。

让我们将此矩阵表示为A。那么表达式(1, 0, 0, 0).A给了我们在A公司“投资”1个“单位”后立即的“资源分配”。在这种情况下,结果确实是(0, 0.5, 0.5, 0),即B公司得到50%,用户A得到50 % 也是如此。但是归属于 B 公司的资源会进一步“传播”,所以为了找到“均衡”分布,我们需要计算

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

n 的极限内趋于无穷。就左特征向量而言,原始矩阵A 可以重写(假设它是可对角化的)为A=Inverse[P].w.P,其中w 是包含特征值的对角矩阵。然后有一个

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

在这种特殊情况下,特征值是1, 1, 0.5, -0.5,因此当n 趋于无穷大时,只有特征值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.

最后,特征值1对应的特征向量是(0, 0, 1, 0)(0, 0, 0, 1)。这意味着如果一个人“投资”了 1 个单位的资源给用户 A/B,则相应的用户“保留一切”并且没有进一步传播,即已经达到平衡。由于有两个用户(叶子),因此特征值会双重退化。

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2020-10-06
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多