aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java14
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);
}
}