Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void floyd() {
- Stop from, to;
- double weight;
- int n = numberOfVertices();
- matrixD = new double[n][n];
- matrixA = new int[n][n];
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- matrixA[i][j] = -1;
- matrixD[i][j] = (i == j) ? 0 : Double.MAX_VALUE;
- }
- }
- for (Entry<Stop, TreeMap<Stop, Double>> e1 : adjacencyMap.entrySet()) {
- for (Entry<Stop, Double> e2 : e1.getValue().entrySet()) {
- from = e1.getKey();
- to = e2.getKey();
- weight = e2.getValue();
- matrixD[vertexToIndex.get(from)][vertexToIndex.get(to)] = weight;
- }
- }
- for (int k = 0; k < n; k++) {
- for (int i = 0; i < n; i++) {
- if (i == k) continue;
- for (int j = 0; j < n; j++) {
- if (j == k || i == j) continue;
- if (matrixD[i][k] == Double.MAX_VALUE || matrixD[k][j] == Double.MAX_VALUE)
- continue;
- if ((matrixD[i][k] + matrixD[k][j]) < matrixD[i][j]) {
- matrixD[i][j] = matrixD[i][k] + matrixD[k][j];
- matrixA[i][j] = k;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement