gpt4 book ai didi

java - 图数据结构

转载 作者:行者123 更新时间:2023-11-30 05:04:59 24 4
gpt4 key购买 nike

假设我有 MyClass{ private LargeMatrix mtrx; hashCode(){...}}

JGraphT(也许所有图形数据结构)似乎使用哈希表来映射顶点。那么,当我使用 MyClass 而不是 String l1,l2,l3 时,这会影响速度吗?

这种情况下有什么优点和缺点?我应该覆盖哈希码(删除矩阵哈希码)吗?是否有使用引用而不是哈希表的图表?

所以我的代码是:

package ann;

import org.jgrapht.DirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleDirectedGraph;

/**
* @author marmoush
*
*/
public class Network
{
DirectedGraph<String, DefaultEdge> diGraph;
String l1="hello1";
String l2="hello1";
String l3="hello3";
/**
*
*/
public Network()
{

diGraph = new SimpleDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
diGraph.addVertex(l1);
diGraph.addVertex(l2);
diGraph.addVertex(l3);

diGraph.addEdge(l1, l2);
System.out.println(diGraph.containsEdge(l1,l2));
// TODO Auto-generated constructor stub
}

}


Exception in thread "main" java.lang.IllegalArgumentException: loops not allowed
at org.jgrapht.graph.AbstractBaseGraph.addEdge(Unknown Source)
at ann.Network.<init>(Network.java:28)
at test.TestNetwork.main(TestNetwork.java:9)

因为(我认为)l1.hashCode()==l2.hashCode()

编辑:矩阵有时可能为零或一,它们随着时间的推移而变化,所以我会尝试想出一些区分这些对象的东西,这似乎是愚蠢的解决方案。为什么图形不能仅通过 vector 或其他位置中的位置选择顶点?

我应该重新发明轮子吗?使用 vector 而不是哈希表的图表?或者有解决办法吗?

最佳答案

我将创建一个 Vertex 类并适本地实现 equals()hashcode() 。对速度的影响并不大,如果顶点的 id 是数字的话,速度甚至会更快。

关于java - 图数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5406224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com