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%
最终计算结果可以看出,股东最终占比只需要计算目标节点与一层股东节点之间的所有路径占比求和即可。
neo4j图算法来计算最终实控人_第1张图片
 
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) radio limit 1

neo4j图算法来计算最终实控人_第2张图片

 

你可能感兴趣的:(neo4j)