From 8a9933e4decb3b6a57b47b6409474bd476920c24 Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Fri, 27 Sep 2024 01:22:49 +0200
Subject: [PATCH] demo show image
---
stundenplan/src/pygraph/shortestpath.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 52 insertions(+), 1 deletions(-)
diff --git a/stundenplan/src/pygraph/shortestpath.py b/stundenplan/src/pygraph/shortestpath.py
index 4426f95..5d3e2af 100644
--- a/stundenplan/src/pygraph/shortestpath.py
+++ b/stundenplan/src/pygraph/shortestpath.py
@@ -1,9 +1,10 @@
import collections
+from typing import Mapping
from pygraph.graphdemo import Graph
-def bfs(g: Graph, start: int) -> {int:int|None}:
+def bfs(g: Graph, start: int) -> Graph:
"""
:param g:
@@ -26,3 +27,53 @@
g.merge_attribute(v, visited)
queue.append(v)
return tree
+
+
+def bfs_dict(g: Graph, start: int) -> Mapping[int, int|None]:
+ tree = {start:None}
+ queue = collections.deque()
+ VISITED = "visited"
+ not_visited = {VISITED: False}
+ visited = {VISITED: True}
+ g.for_each_vertices(lambda v : g.merge_attribute(v, not_visited))
+ queue.append(start) # append() is the enqueue() operation of a Queue
+ g.merge_attribute(start, visited)
+ while queue:
+ u = queue.popleft() # popleft() is the dequeue() operation of a Queue
+ for v in g.adjacent_of(u):
+ if not g.get_attribute(v)[VISITED]:
+ tree[v] = u
+ g.merge_attribute(v, visited)
+ queue.append(v)
+ return tree
+ pass
+
+
+def find_path(g: Graph, u: int, v: int) -> list[int]:
+ tree = bfs_dict(g, v)
+ path = [u]
+ while (current := path[-1]) != v:
+ precedent = tree[current]
+ path.append(precedent)
+ return path
+
+
+def find_path_gpt(g: Graph, u: int, v: int) -> list[int]:
+ # Erstelle einen BFS-Baum, beginnend bei Knoten v
+ bfs_tree = bfs_dict(g, v)
+
+ # Wenn u nicht in bfs_tree ist, gibt es keinen Pfad von u nach v
+ if u not in bfs_tree:
+ return [] # Kein Pfad gefunden
+
+ # Den Pfad von u nach v rekonstruieren
+ path = []
+ current = u
+ while current is not None:
+ path.append(current)
+ current = bfs_tree[current]
+
+ # Den Pfad umkehren, da wir rückwärts von u nach v gehen
+ path.reverse()
+
+ return path
\ No newline at end of file
--
Gitblit v1.10.0