From 478693d804680fa6c206ce47159c0740a6f32d51 Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Mon, 30 Jun 2025 10:10:52 +0200
Subject: [PATCH] greedy funktion

---
 stundenplan/src/graphdemo_tests.py |   30 ++++++++++++++++++++++++++++++
 stundenplan/src/graphdemo.py       |   24 ++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/stundenplan/src/graphdemo.py b/stundenplan/src/graphdemo.py
index 9b0ac22..0bf2579 100644
--- a/stundenplan/src/graphdemo.py
+++ b/stundenplan/src/graphdemo.py
@@ -113,3 +113,27 @@
 
     def to_dot(self) -> str:
         pass
+
+    def greedy_color(self, vertex_order:[int]) -> dict[int,int]:
+        pass
+
+
+def first_available(color_list:[]) -> int:
+    color_set = set(color_list)
+    count = 0
+    while True:
+        if count not in color_set:
+            return count
+        count += 1# count = count + 1
+    pass
+
+def greedy_color(g:Graph, vertex_order:[int]) -> dict[int,int]:
+    color:dict[int,int] = {}
+    for vertex in vertex_order:
+        used_neighbor_colors = []
+        for nbr in g.adjacent_of(vertex):
+            if nbr in color:
+                used_neighbor_colors.append(color[nbr])
+        color[vertex] = first_available(used_neighbor_colors)
+        pass
+    return color
diff --git a/stundenplan/src/graphdemo_tests.py b/stundenplan/src/graphdemo_tests.py
index 0744753..644c32e 100644
--- a/stundenplan/src/graphdemo_tests.py
+++ b/stundenplan/src/graphdemo_tests.py
@@ -1,6 +1,7 @@
 import unittest
 
 from graphdemo import Graph
+from src.graphdemo import greedy_color
 
 
 class GraphTestCase(unittest.TestCase):
@@ -98,6 +99,35 @@
             pass
         pass
 
+    def test_greedy_color(self):
+        g = Graph()
+        g.add_edges(0, [1, 2, 3])
+        g.add_edges(1, [0, 3, 2])
+        g.add_edges(2, [0, 1])
+        g.add_edges(3, [1])
+        print(g)
+        vertices = [1, 3, 0, 2]
+        colors = greedy_color(g, vertices)
+        print(colors)
+
+    def test_greedy_color_2(self):
+        g = Graph()
+        g.add_edges(0, [1,2, 3])
+        g.add_edges(1, [0, 2, 4])
+        g.add_edges(2, [0, 1, 5])
+        g.add_edges(3, [0, 4, 5])
+        g.add_edges(4, [1, 3, 5])
+        g.add_edges(5, [2, 3, 4])
+        print(g)
+        vertices = [0, 3, 4, 2, 5, 1]
+        #vertices = [0, 5, 3, 4, 2, 1]
+        colors = greedy_color(g, vertices)
+        print(colors)
+        for vertex in g.vertices():
+            color = colors[vertex]
+            for nbr in g.adjacent_of(vertex):
+                self.assertNotEqual(color, colors[nbr])
+
 
 if __name__ == '__main__':
     unittest.main()

--
Gitblit v1.10.0