aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Valentin Christensen <valentianchristensen@gmail.com>2025-04-29 12:45:05 +0200
committerIan Valentin Christensen <valentianchristensen@gmail.com>2025-04-29 12:45:05 +0200
commit5052ead7740365ceb6c84b47b2fbc492f8f21058 (patch)
tree32a80061a6e65c278a21f148e053c106f76e92ff
parent597f219826fee4898c3692e33c45018e255c7949 (diff)
fix duplicate sets of groups as vertices in moduleGroups
-rw-r--r--src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java
index f9d3606..9d8e12f 100644
--- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java
+++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java
@@ -219,6 +219,17 @@ public final class Graph {
final ArrayList<Set<Vertex>> sets, final AbstractGraph g
) {
AbstractGraph h = new AdjListGraph();
+ Map<Set<Vertex>, String> label = new Map<>();
+ for (Set<Vertex> groupSet : sets) {
+ // canonical string name - strings sortes alphabetically
+ String name = groupSet.stream()
+ .map(Vertex::toString)
+ .sorted() // avoid differently sorted duplicates
+ .collect(Collecters.joining(",", "{", "}"));
+ label.put(groupSet, name);
+ h.insertVertex(name);
+ }
+
for (Set<Vertex> s: sets) {
for (Set<Vertex> t: sets) {
if (t == s) {
@@ -226,7 +237,6 @@ public final class Graph {
}
int sum = 0;
for (Vertex v: s) {
-
// students with this choice
for (Vertex w: t) {
Integer weight =
@@ -237,7 +247,7 @@ public final class Graph {
}
}
h.insertEdge(
- s.toString(), t.toString(), sum);
+ label.get(s), label.get(t), sum);
}
}