I could not find algorithm that suits my case. So, if anyone from community can help will be greatly appreciated

Here is what I am trying to achieve.

I have multiple source vertices, with each source vertex having some importance_weightage, I want to find all the vertices from the source vertices that is of a certain type (say RETURN_VERTEX_TYPE). Max hop can be k, in my case it is 2.

In ranking function I want to use the number of source vertices that are connected to target as well.

For instance say I have 15 source vertices and in 2 hops, say I find 50 vertex of RETURN_VERTEX_TYPE. The vertices that have a path from source vertices in depth 2, should have more importance.

So, the ranking function of the return vertices should consider the following:

- Number of Source vertices that are connected to RETURN_VERTEX_TYPE nodes in k hops.
- importance_weightage of each vertices passed as input. Use max if multiple source connects to target.
- edge_weight of edges

and each of these ranking parameters should be weighted too.

Ex: f() = w1*(source_vertices_count) + w2*max(importance_weightage) + w3*(edge_weight)

If there are any similar algorithm, please point out. Happy to explore that as well