【发布时间】:2016-03-17 13:15:04
【问题描述】:
所以,我已经成功地完全使用 JGraphX 可视化了一个图形。现在,我想创建一个邻接矩阵。我能想到的一种方法是获取特定单元格目标(或指向)的所有单元格以及所有它的父单元格。但是,我似乎无法从文档中找到合适的 JGraphX 方法。
实际上有任何 JGraphX 方法吗?否则,您是否可以建议任何替代方式或方法?
谢谢。
不知何故,我已经想出了办法。但我会留下这个问题以防其他人需要它。
我的方法:
我创建了两个ArrayList,matrixListFrom 和matrixListTo。每次连接边时,我都会将顶点一的标签添加到 matrixFrom 并将顶点二的标签添加到 matrixTo。然后我把它和这个方法关联起来:
public int createAdjacencyMatrix(int adMatrix, String strFromVertex, String strToVertex)
{
for(int k = 0;k<matrixListFrom.size();++k)
{
if((matrixListFrom.get(k)).equals(strFromVertex) && (matrixListTo.get(k)).equals(strToVertex))
{
adMatrix = 1;
break;
}
else if((matrixListFrom.get(k)).equals(strToVertex) && (matrixListTo.get(k)).equals(strFromVertex))
{
adMatrix = -1;
for(int j = 0;j<matrixListFrom.size();++j)
{
if((matrixListFrom.get(j)).equals(strFromVertex) && (matrixListTo.get(j)).equals(strToVertex))
{
adMatrix = 1;
break;
}
}
break;
}
else if(!(matrixListFrom.get(k)).equals(strFromVertex) && !(matrixListTo.get(k)).equals(strToVertex))
{
adMatrix = 0;
}
else if(strFromVertex.equals(strToVertex))
{
adMatrix = 0;
break;
}
else
{
adMatrix = 0;
}
}
return adMatrix;
}
假设我们将顶点 A、B、C、D、E 存储在 ArrayList 中,命名为 vertices
matrixListFrom 由 {A, C, D E} 组成
matrixListTo 由 {D, E, C, B}
表示A-->D,C-->E,D-->C,E-->B
因此,使用该方法,将这两个列表的内容一一检查。
strFromVertex 等于第 0 列中的顶点,strToVertex 是要使用 for 循环从后续列中比较的相应顶点。然后,使用这两个矩阵列表,检查 strFromVertex 和 strToVertex 是否分别等于 matrixListFrom 和 matrixListTo。如果它们完全相等,则返回 1,如果它们相反相等(第二个 if),则返回 -1(这意味着第 0 列中的顶点是终端而不是源),如果根本没有连接,则返回 0。
但是我认为这种方法并不是很有效,尤其是在删除顶点时。但不知何故,我设法让它发挥了作用。
【问题讨论】:
-
如果您有其他方法,为什么不将其作为答案发布呢?它可能对其他人有用...
-
@NiekeAerts 因为我认为它不是很有效。但是好的,我会发布它