neo4j图算法来计算最终实控人

       

       传统实现方法:我们需要通过分析股权关系,递归循环出股东与目标公司的所有直接间接关系,再定义全局变量来存储每个股东计算出来的股权占比,最后再做比较,取最大的那个。


neo4j图算法:(一句cql搞定以上复杂逻辑)
原理分析:以计算上海起航为例,计算上海起航股东最终持股数
(1)根据neo4j可以直观看出上海起航所有股东一层占比
(2)其中股东蔡裕龙直接持股59.53%,间接通过 上海最客 持股98%*4.76% 间接通过 上海泰一 持股66%*14.27%
(3)股东蔡裕龙最终持股 59.53% + 98%*4.76%+66%*14.27% = 73.613%
最终计算结果可以看出,股东最终占比只需要计算目标节点与一层股东节点之间的所有路径占比求和即可。

 
Cql实现逻辑:
MATCH (n:Company{name:'上海起航'})<-[r]-(m) WITH n,m MATCH (m)-[r*]->(n) with m,REDUCE(x = 1, a IN r | x * a.radio/100) AS radio
ORDER BY radio DESC
return distinct m.name,sum(radio) AS radio limit 1

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值