Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以使用neo4j gds最短路径算法进行乘法而不是加法吗?_Neo4j_Cypher_Neo4j Apoc_Graph Data Science - Fatal编程技术网

我可以使用neo4j gds最短路径算法进行乘法而不是加法吗?

我可以使用neo4j gds最短路径算法进行乘法而不是加法吗?,neo4j,cypher,neo4j-apoc,graph-data-science,Neo4j,Cypher,Neo4j Apoc,Graph Data Science,我使用neo4j数据库来计算节点之间的最短路径。整个图包括400K个节点。当我使用加法运算计算权重时,我可以使用下面的最短路径算法,但是如果我想使用乘法运算来计算节点的权重,我该怎么办 MATCH (sourceNode:entity{name: $name}) CALL gds.alpha.shortestPath.deltaStepping.stream({ startNode: sourceNode, nodeProjection: "*",

我使用neo4j数据库来计算节点之间的最短路径。整个图包括400K个节点。当我使用加法运算计算权重时,我可以使用下面的最短路径算法,但是如果我想使用乘法运算来计算节点的权重,我该怎么办

MATCH (sourceNode:entity{name: $name}) 
CALL gds.alpha.shortestPath.deltaStepping.stream({
     startNode: sourceNode, 
     nodeProjection: "*", 
     relationshipProjection: {
         all: {
         type: "*", 
         properties: "weight",
         orientation: "UNDIRECTED" 
         } 
     }, 
     relationshipWeightProperty: "weight", 
     delta: 1.0 
     })
YIELD nodeId, distance 
WHERE gds.util.isFinite(distance) 
RETURN sourceNode.name, 
       gds.util.asNode(nodeId).name AS aim_entity,
       distance 
ORDER BY distance;

您可以通过取对数将
weight
字段映射到
logWeight
字段,然后在对数空间中加法就是在正则空间中乘法

可使用的功能:


然后,如果您计算(使用对数权重)到节点
n
的最短路径是
n.ShortestDistance
,您可以通过执行当前不可用的
exp(n.ShortestDistance)

来获得所有权重的乘积(预对数):