我使用了一些来自在线资源的代码,用于化学建模项目的图论部分。我试图理解这一点。第一行代码对于课程的整体决定意味着什么?一个是第一个顶点,两个是类的第二个顶点。我不熟悉线性代数/离散数学,所以尽可能避免数学上强烈的解释。
public Edge(Vertex one, Vertex two, int length){
this.one = (one.getElement().compareTo(two.getElement()) <= 0) ? one : two;
this.two = (this.one == one) ? two : one;
this.length = length;
}
谢谢!
答案 0 :(得分:2)
写得不好。两个测试,一个人会做,几乎故意默默无闻。它只是试图将较小的顶点分配给one
而将另一个顶点分配给two
,以便保持边缘的一致性。更清晰的版本是:
public Edge(Vertex one, Vertex two, int length)
{
if (one.getElement().compareTo(two.getElement()) <= 0)
{
this.one = one;
this.two = two;
}
else
{
this.one = two;
this.two = one;
}
this.length = length;
}
答案 1 :(得分:0)
不确定你在这里尝试做什么,但第一行是使用Comparable接口,无论Vertex.getElement()
返回什么,都实现了。如果one
的元素与two
的元素“小于或等于”,则this
边缘one
设置为给定的one
,否则设置为two
到this
。然后第二行相应地设置two
的{{1}}(即,如果我们决定this.one = one
,则this.two = two
另有this.one = two
和this.two = one
。