从起始节点中找到最合适的节点,起始节点和结束节点间接连接,边被加权

问题描述

下图中是我显示的整个图形的子图。我有三种不同类型的节点,绿色、蓝色和紫色。

绿色和紫色通过蓝色节点间接连接。

蓝色节点通过加权的有向边相互连接。蓝色边缘被加权,但绿色或紫色边缘没有加权。

我要解决的问题如下:我想找到最适合绿色节点的紫色节点。,例如我想说对于绿色节点GA来说,三个最合适的紫色节点是V1V4V42.

什么使节点适合?

完美匹配是当绿色节点连接到紫色节点连接的所有蓝色节点时。但是,绿色节点可以连接到更多蓝色节点。这仍然是紫色节点的最佳分数。

如果绿色和紫色不连接到同一个蓝色节点,而是连接到相互连接的蓝色节点,则算法需要考虑蓝色节点之间边的权重。这不能导致完美匹配,但仍然是一个很好的匹配。

是什么让它更适合或更不适合?

连接蓝色节点所需的蓝色节点之间的跳数越多,连接绿色和紫色节点的紫色节点的分数越小。另外如果蓝色节点之间的权重越小,紫色节点的得分越小,这里考虑的是从绿色到紫色的方向。

如果绿色没有连接到一些蓝色节点,那将是一个惩罚,紫色节点的分数会更小。

你能想到哪些图算法来解决这个问题?

我打算使用 neo4j 数据库

my subgraph

解决方法

完美匹配是当绿色节点连接到所有蓝色节点时 紫色节点连接到的节点。

认为这意味着有一条从绿色节点到紫色节点的路径,只通过一个蓝色节点。如果有多个紫色节点且距离绿色节点仅一个蓝色节点,那么您需要所有此类紫色节点。请确认这一点。

如果我对您的要求的猜测是正确的,那么 Dijsktra 算法会给您答案。该算法会告诉您每个紫色节点与每个绿色节点的距离 - 因此您可以过滤掉恰好相距两跳的那些。

你有样本数据集吗?