From 5052ead7740365ceb6c84b47b2fbc492f8f21058 Mon Sep 17 00:00:00 2001
From: Ian Valentin Christensen <valentianchristensen@gmail.com>
Date: Tue, 29 Apr 2025 12:45:05 +0200
Subject: fix duplicate sets of groups as vertices in moduleGroups

---
 src/dk.biks.bachelorizer/dk/biks/bachelorizer/Graph.java | 14 ++++++++++++--
 1 file 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);
 			}
 		}
 
-- 
cgit v1.2.3