neo4j-contrib / neo4j-graph-algorithms

Efficient Graph Algorithms for Neo4j
https://github.com/neo4j/graph-data-science/
GNU General Public License v3.0
770 stars 194 forks source link

What is the function of graph type "kernel" and others #937

Open tsafs opened 4 years ago

tsafs commented 4 years ago

Hi,

I've been searching the docs, but haven't found anything on this. If I oversaw something, please link me there :)

I'm using version 3.5.4.1.

I tried writing my own implementation of shortestPath.deltaStepping and noticed in your tests that you are using three kernel types, i.e. light, heavy, kernel.

I don't quite understand their functions. I understand that you load a temporary projection of the database into memory and those graph types define how that projection looks like. What differences do they make? Where are their characteristics defined?

I have found the definition of the graph type huge here.

From experiments with my custom procedure, I noticed that light, heavy do not keep parallel relationships between a pair of nodes by default, but kernel does.

Also, using huge with duplicateRelationships: 'none', contrary to the docs, seem to deduplicate relationships, based on my experiments.

My experiments have been kind of pseudo and hence I'm not sharing them here. I am just looking for the exact definitions of the mentioned graph types. kernel does seem to do what I want, that is keeping parallel relationships between a pair of nodes, however I cannot find its documentation and thus I'm afraid of using it in production.

Thank you in advance!