gpt4 book ai didi

java - 有向加权图的实现

转载 作者:行者123 更新时间:2023-12-01 17:31:41 33 4
gpt4 key购买 nike

想知道这里是否有任何不正确的地方。我得到的唯一未添加的建议是将矩阵填充为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;
}
}
}

最佳答案

  • isEdge 方法没有考虑边可能具有负权重
  • 或者,如果不允许负权重,addEdge 应检查权重是否为负
  • addEdgeremoveEdge 应该有某种方式告诉您边缘是否真的被添加或删除。例如,如果图形被修改,则返回 boolean 值 true,或者如果不接受则抛出异常。
  • 您不能使用分数权重 - 也许这适合您的用例。

关于java - 有向加权图的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61109491/

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