diff options
-rw-r--r-- | src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java index 8782569..ec4a35d 100644 --- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java +++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java @@ -221,14 +221,15 @@ public final class Graph { final ArrayList<Set<Vertex>> sets, final AbstractGraph g ) { AbstractGraph h = new AdjListGraph(); - Map<Set<Vertex>, String> label = new HashMap<>(); + Map<Set<Vertex>, String> groupLabel = new HashMap<>(); for (Set<Vertex> groupSet : sets) { - // canonical string name - strings sortes alphabetically + // create a string for each group of module selections String name = groupSet.stream() .map(Vertex::toString) .sorted() // avoid differently sorted duplicates - .collect(Collectors.joining(",", "{", "}")); - label.put(groupSet, name); + .collect(Collectors.joining(", ", "{", "}")); + // formatting of groups as vertices + groupLabel.put(groupSet, name); // map group to name of group } for (Set<Vertex> s: sets) { @@ -236,6 +237,9 @@ public final class Graph { if (t == s) { continue; } + if (s.hashCode() > t.hashCode()) { + continue; // process each pair no more than once + } int sum = 0; for (Vertex v: s) { // students with this choice @@ -248,7 +252,7 @@ public final class Graph { } } h.insertEdge( - label.get(s), label.get(t), sum); + groupLabel.get(s), groupLabel.get(t), sum); } } |