Graph 如何在Java中比较两个多维数组之间的相似性

Graph 如何在Java中比较两个多维数组之间的相似性,graph,compare,similarity,multidimensional-array,Graph,Compare,Similarity,Multidimensional Array,我已经做了一个程序,建立了3个图形(弧和节点)。 这些图是基于1和0的2D数组构建的。 第一个图是理想图,其他两个图将与之进行比较。我想知道是否有一种方法可以比较两个图之间的相似性,即图2中有多少顶点与图1中的顶点相似 备选问题: 这些图是基于1和0的2D数组构建的,因此,如果有一种方法可以将图1的2D数组与图2的数组进行比较,那么这将解决我的问题 我不希望你们都能编写代码,但我只是想了解是否有一种方法可以做到这一点。如果是的话,如何做到这一点。 非常感谢您的帮助 大家好 让我们更清楚一点: 我

我已经做了一个程序,建立了3个图形(弧和节点)。 这些图是基于1和0的2D数组构建的。 第一个图是理想图,其他两个图将与之进行比较。我想知道是否有一种方法可以比较两个图之间的相似性,即图2中有多少顶点与图1中的顶点相似

备选问题: 这些图是基于1和0的2D数组构建的,因此,如果有一种方法可以将图1的2D数组与图2的数组进行比较,那么这将解决我的问题

我不希望你们都能编写代码,但我只是想了解是否有一种方法可以做到这一点。如果是的话,如何做到这一点。 非常感谢您的帮助

大家好

让我们更清楚一点: 我有两个二维数组,如下所示:


double[]]MatrixOfOriginalGraph={{1,1,1},
{0,1,0,0},
{0,0,1,0}, 
{0,0,0,1}};
double[]MatrixTobed与Original={{1,0,0,1},
{0,1,1,0},
{0,0,1,1},
{0,0,0,1};

第一个数组用于绘制第一个图,第二个数组用于绘制第二个图。第一个图基本上是一个4节点图,其中第一个节点连接到所有其他节点。其他节点彼此不连接。第二个图是混合的。我想知道图2中顶点中有多少节点是相同的与图1中的相同

谢谢,
jetnori.

希望我没弄错。你有一个图,你的数组矩阵ForiginalGraph将是以下邻接矩阵的表示:

1111
0100
0010
0001
相似性是由相似的联系定义的吗

也许一个好的起点可以是一对节点之间的距离,每个节点都来自一个图

所以

双[][]矩阵原图={{1,1,1,1},{0,1,0,0},{0,0,1,0},{0,0,0,1};
double[]MatrixTobedComparedwithOriginal={1,0,0,1},{0,1,1},{0,0,1,1},{0,0,0,1}

会导致类似于

int node1 = computeDistance({0,1,0,0}, {0,1,1,0});
int node2 = computeDistance({1,1,1,1}, {1,0,0,1});
以此类推。但请记住,使用汉明距离时,在两个比较结构中必须有等量的变量。我不知道这是否是对您的问题的限制。如果这是一个限制,您可以改为尝试


距离越小,节点就越相似。然后你可以把所有节点的海明距离加起来(实际上你可以计算出整个一到零序列的距离)或者计算平均值和偏差等,这取决于你需要什么或者你如何定义相似性。

你能给出一些样本数据吗?指数之间有什么关系?@Mathew Cox Hi Mathew。假设我有两个1和0的2D数组。我可以从它们中绘制图形,想象一个1和0的正方形,如果变量a和B之间的交点是1然后画一条线。我发布了两个数组。第一个是绘制原始图的矩阵。原始图的第一个节点连接到所有其他3个节点。第二个图是混合的。希望我能帮助澄清一下。double[][]MatrixOfOriginalGraph={{{1,1,1,1},{0,1,0,0},{0,0,1,0},{0,0,0,0,0,1};double[]MatrixTobedComparedwithOriginal={{1,0,0,1},{0,1,0},{0,0,1,1},{0,0,0,1};@TheMorph是的,我相信这就是我想要的,但仍然有点不确定如何实现它。两个矩阵的大小相同,都是19x19。它们都用1和0填充。我的问题的相似性就是这样定义的。如果两个矩阵的同一位置都有1,这是真的正的,如果两个矩阵的同一位置都有0ces这是真负数。如果原始矩阵上有1,同一位置的第二个矩阵上有0,这是假负数,如果原始矩阵中有0,同一位置的第二个矩阵中有1,这是假正数。所以你只想计算两个图之间有多少节点不同?抱歉,我错过了这部分你的问题,这使得我的答案对你来说毫无用处。你如何定义两个节点是相等的:它们是否需要有相同的输出边,相同的输入边,或者两者都需要?你所说的{true}false}{positive}negative}是什么意思我不太明白。你只是想说0101==0101->true,0111==0101->false吗?