Реализация направленного взвешенного графика - PullRequest
0 голосов
/ 08 апреля 2020

Хотите знать, было ли здесь что-то, что кажется неправильным? Единственное предложение, которое я получил, но не добавил, - заполнить матрицу целым числом. 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;
  }   
 }
}

1 Ответ

0 голосов
/ 08 апреля 2020
  • Метод isEdge не учитывает, что ребра могут иметь отрицательные веса
  • ИЛИ, если отрицательные веса не допускаются, addEdge должен проверить, является ли вес отрицательным
  • addEdge и removeEdge должны иметь какой-то способ сказать вам, был ли край действительно добавлен или удален. Например, вернуть логическое значение true, если график был изменен, ИЛИ выдать исключение, если оно не принято.
  • У вас не может быть дробных весов - возможно, это нормально для вашего варианта использования.
...