Bachelorarbeit, 2026
60 Seiten
1. Einleitung
1.1. Problemstellung und Motivation
1.2. Zielsetzung der Arbeit
1.3. Aufbau der Arbeit
2. Grundlagen
2.1. Einführung in die Graphentheorie
2.2. Mathematische und theoretische Grundlagen
2.2.1. Allgemeine ungerichtete Graphen
2.2.2. Typische Strukturen ungerichteter Graphen
2.2.3. Gerichtete Graphen
2.2.4. Kürzester Pfad
2.2.5. Der A*-Algorithmus
2.2.6. Bestimmung des optimalen Pfades mit A*
2.3. Speicherung von Graphen
2.3.1. Adjazenzmatrix
2.3.2. Adjazenzliste
2.4. Traversierungsverfahren
2.4.1. Tiefensuche (Depth-First Search, DFS)
2.4.2. Analyse der Tiefensuche
2.4.3. Implementierung der Tiefensuche
2.4.4. Codeanalyse der Tiefensuche
2.4.5. Ablauf der rekursiven Tiefensuche
2.4.6. Breitensuche (Breadth-First Search, BFS)
2.4.7. Implementierung der Breitensuche
2.4.8. Codeanalyse der Breitensuche
2.4.9. Ablauf der iterativen Breitensuche
2.4.10. Komplexitätsanalyse von Breitensuche und Tiefensuche
2.5. Labyrinthe als Graphen
3. Konzept
3.1. Graphentyp
3.2. Programmiersprache
3.3. Algorithmen
3.3.1. Tiefensuche (DFS)
3.3.2. A*-Algorithmus
3.3.3. Vergleich der Algorithmen
3.4. Softwarearchitektur
4. Implementierung
5. Ergebnisse
6. Zusammenfassung und Ausblick
Das Hauptziel dieser Bachelorarbeit liegt in der Konzeption, Implementierung und Analyse einer interaktiven Anwendung zur Visualisierung von Graphdurchlauf- und Pfadfindungsalgorithmen anhand eines zweidimensionalen Labyrinthproblems. Im Fokus steht dabei die didaktische und transparente Aufbereitung der Tiefensuche (Depth-First Search, DFS) mit Backtracking sowie deren vergleichende Gegenüberstellung mit alternativen Verfahren, insbesondere dem heuristischen A*-Algorithmus. Die Arbeit untersucht die praktische Eignung unterschiedlicher Implementierungsvarianten, deren algorithmische Effizienz sowie die didaktische Wirksamkeit einer animierten Schritt-für-Schritt-Darstellung.
3. Konzept
Das Labyrinth wird als Graph modelliert, dessen Struktur auf einem zweidimensionalen Raster aus Zellen basiert. In der Implementierung wird jede Zelle durch ein Objekt der Klasse Cell (vgl. cell.py) repräsentiert. Jede dieser Zellen entspricht genau einem Knoten des Graphen und beschreibt eine begehbare Position innerhalb des Labyrinths.
Formal lässt sich das Labyrinth als Graph G =(V,E) auffassen, wobei V die Menge aller Zellen darstellt. Die Zellen sind anhand ihrer kartesischen Koordinaten (x, y) eindeutig identifizierbar und werden in einer spaltenweise organisierten zweidimensionalen Liste gespeichert. Die Kantenmenge E ergibt sich nicht aus einer expliziten Datenstruktur, sondern wird implizit über den Wandzustand der einzelnen Zellen definiert.
Jede Zelle besitzt vier potenzielle Wände (oben, rechts, unten, links), die angeben, ob eine Bewegung in die jeweilige Richtung möglich ist. Existiert zwischen zwei benachbarten Zellen keine trennende Wand, so wird dies als Kante im Graphen interpretiert. Umgekehrt entspricht das Vorhandensein einer Wand dem Fehlen einer Kante. Durch diese implizite Modellierung lassen sich Nachbarschaftsbeziehungen effizient bestimmen, ohne eine separate Kantenliste oder Adjazenzmatrix zu benötigen.
Die Nachbarschaft einer Zelle ist dabei auf die vier orthogonal angrenzenden Zellen beschränkt; diagonale Verbindungen sind ausgeschlossen. Diese Einschränkung folgt direkt aus der Rasterstruktur und ist konsistent mit der grafischen Darstellung des Labyrinths in der Benutzeroberfläche.
Die Graphstruktur entsteht dynamisch während der Labyrinthgenerierung. Zu Beginn sind alle Zellen vollständig voneinander getrennt, sodass keine Kanten existieren. Während des Generierungsprozesses werden schrittweise Wände zwischen benachbarten Zellen entfernt. Jede entfernte Wand entspricht dem Hinzufügen einer Kante im Graphen. Dieser Prozess wird durch ein stackbasiertes Tiefensuchverfahren mit Backtracking (sog. Recursive-Backtracker-Algorithmus) umgesetzt, das in den Modulen algo.py und maze.py implementiert ist.
1. Einleitung: Dieses Kapitel führt anhand historischer und mythologischer Beispiele in die Thematik der Labyrinthe ein, erläutert die Problemstellung der mangelnden Nachvollziehbarkeit abstrakter Suchalgorithmen in der Lehre und formuliert die zentralen Forschungsfragen und Ziele der Arbeit.
2. Grundlagen: Hier werden die mathematischen Fundamente der Graphentheorie, typische Graphenstrukturen, Repräsentationsformen wie Adjazenzmatrix und Adjazenzliste sowie Traversierungsverfahren wie Tiefensuche, Breitensuche und der A*-Algorithmus inklusive Komplexitätsanalysen und Labyrinth-Eigenschaften detailliert dargelegt.
3. Konzept: Das Kapitel beschreibt den konzeptionellen Aufbau des Gesamtsystems, einschließlich der impliziten Graphenmodellierung über Zellwände, der Wahl von Python und Tkinter sowie des Softwareentwurfs mit modularer Aufteilung in spezialisierte Skripte.
4. Implementierung: Im Mittelpunkt stehen die praktische Programmierung des Labyrinthgenerators mittels Backtracking, die Umsetzung der Suchalgorithmen zur Pfadfindung und das statische Softwaredesign, veranschaulicht anhand eines UML-Klassendiagramms.
5. Ergebnisse: Dieses Kapitel präsentiert die entwickelte Anwendung, validiert deren Funktionsumfang und wertet quantitative Messungen bezüglich Rechenzeit, Anzahl besuchter Knoten sowie den didaktischen Mehrwert der Visualisierung systematisch aus.
6. Zusammenfassung und Ausblick: Die Arbeit schließt mit einer Bündelung der gewonnenen Erkenntnisse über algorithmische Pfadsuche und Visualisierungsgrenzen ab und skizziert Möglichkeiten für künftige Erweiterungen wie weitere Algorithmen oder Web-Plattformen.
Labyrinthproblem, Graphentheorie, Tiefensuche, Depth-First Search, A*-Algorithmus, Breitensuche, Backtracking, Python, Tkinter, Pfadfindung, Heuristik, Adjazenzliste, Adjazenzmatrix, Visualisierung, Suchalgorithmen
Die Arbeit befasst sich mit der Konzeption und technischen Umsetzung einer Desktop-Anwendung in Python, welche die Arbeitsweise graphbasierter Suchverfahren – insbesondere der Tiefensuche – bei der Generierung und Lösung von Labyrinthstrukturen visuell nachvollziehbar macht.
Zu den zentralen Feldern zählen die theoretische Graphentheorie, Datenstrukturen zur Graphenrepräsentation, Algorithmen zur Traversierung und Pfadfindung (DFS, BFS, A*), Softwareentwicklung mit GUI-Frameworks sowie didaktische Methoden zur Visualisierung abstrakter Codeabläufe.
Das primäre Ziel ist es, zu untersuchen, wie sich die Funktionsweise der Tiefensuche durch eine animierte Darstellung transparenter vermitteln lässt, wie das Backtracking-Verfahren optimiert werden kann und wie sich die Tiefensuche hinsichtlich Effizienz und Pfadqualität im Vergleich zum A*-Algorithmus verhält.
Die Arbeit verbindet eine theoretische Literatur- und Komplexitätsanalyse mit einem konstruktiven Softwareentwicklungsprozess nach dem Prototyping-Ansatz sowie einer empirisch-quantitativen Evaluation anhand experimenteller Laufzeit- und Knotenmessungen.
Der Hauptteil umfasst die formale Modellierung eines zellbasierten Labyrinths als ungerichteter Graph, die Erstellung der modularen Softwarearchitektur in Python, die Implementierung der Labyrinthgenerierung und -lösung sowie die detaillierte Codeanalyse der verwendeten Datenstrukturen.
Die Arbeit wird maßgeblich durch die Begriffe Labyrinthproblem, Graphentheorie, Tiefensuche (DFS), A*-Algorithmus, Breitensuche (BFS), Backtracking, Python und visuelle Simulation charakterisiert.
Das Labyrinth wird als ungerichteter Graph abgebildet, bei dem jede Zelle im zweidimensionalen Raster einen Knoten darstellt. Kanten werden nicht über Matrizen gespeichert, sondern implizit durch das Fehlen trennender Wände zwischen horizontal und vertikal benachbarten Zellen repräsentiert.
Während die Tiefensuche uninformiert und ohne Berücksichtigung von Distanzen Pfade tief verfolgt und oft suboptimale, längere Lösungswege findet, nutzt der A*-Algorithmus die Manhattan-Distanz als Heuristik, um zielgerichtet den tatsächlich kürzesten Pfad zu ermitteln.
Bei kleinen Instanzen fällt der zusätzliche Rechen- und Verwaltungsaufwand des A*-Algorithmus für die Heuristikberechnung und die Verwaltung der Prioritätswarteschlange über heapq stärker ins Gewicht als der einfache Stack-Mechanismus der Tiefensuche.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

