cancel
Showing results for 
Search instead for 
Did you mean: 

Choosing the right graph algorithm

kamilpz
Node

I have neo4j graph database. There are nodes and relationships called 'related'. Each relation has weight property called 'score'. Given a list of nodes, I would like to score them based on how much related are those each other. For example if they are connected with 'related' relation I would say they are highly related. If they share common neibour or neibours I would also say they are highly related. I would like to eliminate outliers from the list based on that logic. Could you please point me in the direction of proper graph algorithm? I'm experimenting with personalised page rank from neo4j but it's giving me back all my nodes from the list with high scores and some neibourhood nodes. The good think is that it's not giving me back neibourhood of outliers, only the one from nodes highly related but it also scores high outliers which is bad for me.

2 REPLIES 2

david_allen
Neo4j
Neo4j

There's no real "right" algorithm, it always depends on what you're trying to do.

What you're describing sounds like clustering to me.  You want to maybe identify "islands" of nodes in a bigger graph based on what is related to what, and if things are interrelated then you might say they're similar to one another.  

Have a look here, in the community detection section: https://neo4j.com/docs/graph-data-science/current/algorithms/

There are many different ways to do this. I would start with some of those community detection algorithms, and then if you find they don't do the right thing for you, ask another question with more specifics about why they're not right and what additional you're looking for. Ultimately there is a big set of graph algorithms and they all do slightly different things, so it's a wide space to choose from, but to get a good algorithm recommendation you need to be specific about which outcome you want.

kamilpz
Node

Thanks for the help! I'm going to experiment with path-finding algorithms as well as community detection and will go back with the details probably as I see it's more complex than I thought.