0

想知道这里是否有任何不正确的地方。我得到的唯一没有添加的建议是将矩阵填充到 integer.max_value。此外,权重必须是所有边的参数,当我们删除边时,权重变为 0,以防出现混淆。如果您发现任何不正确的地方,请告诉我(java)。

public class Graph {
private int size;
private int adjacentMatrix[][];


public Graph (int size) {
this.size = size;
adjacentMatrix = new int [size][size];
}


public void addEdge (int source, int destination, int weight) {
if (source < size && source >= 0 && destination < size && destination >= 0)
    adjacentMatrix [source][destination] = weight;
}


public void removeEdge (int source, int destination, int weight) {
if (source < size && source >= 0 && destination < size && destination >= 0)
    adjacentMatrix [source][destination] = 0; 
}


//function to check if edges are connected
public boolean isEdge(int source, int destination) {
if (source >= 0 && source < size && destination >= 0 && destination < size) {
    return adjacentMatrix[source][destination] > 0;
 }
else
    return false;
  }   
 }
}
4

1 回答 1

0
  • isEdge方法没有考虑边缘可能具有负权重
  • 或者,如果不允许负权重,addEdge则应检查权重是否为负
  • addEdge并且removeEdge应该有一些方法可以告诉您是否真的添加或删除了边缘。例如,true如果图形被修改,则返回布尔值,如果不被接受,则抛出异常。
  • 你不能有分数权重——也许这对你的用例来说没问题。
于 2020-04-08T20:43:14.133 回答