Informatik II Backtracking
|
|
|
- Carsten Mann
- vor 9 Jahren
- Abrufe
Transkript
1 6//0 lausthal Informatik II Backtracking. Zachmann lausthal University, ermany Allgemeines Problem-Statement egeben: Eine Reihe von Variablen, für die man eine Belegung sucht onstraints zwischen den Variablen, d.h., Belegungen, die sich gegenseitig ausschließen esucht: eine (oder alle) Belegungen der Variablen, die keinen onstraint verletzen (a.k.a. Konflikt) Dabei bestehen oft folgende Probleme: Falls man eine konfliktfreie Teilbelegung hat, hat man i.a. nicht genug Informationen, um die restlichen Variablen sofort konfliktfrei zu belegen man muß ausprobieren; Manche Teilbelegungen können gar nicht zu einer konfliktfreien Belegung erweitert werden (eine "Sackgasse") Backtracking ist der methodische Weg, verschiedene Folgen von Belegungen zu probieren, bis eine gefunden wird, die konfliktfrei ist. Zachmann Informatik SS 0 Backtracking
2 6//0 Beispiele Ausweg aus einem Labyrinth: Finde einen Weg vom Startpunkt zum Zielpunkt An jeder Kreuzung gibt es - Entscheidungsmöglichkeiten: gerade aus, rechts, links "Faden der Ariadne" = früheste Beschreibung des Backtracking-Verfahrens Theseus in the Labyrinth. Sir Edward Burne-Jones (6). Zachmann Ariadne. John William Waterhouse (9) Informatik SS 0 Backtracking Färben einer Landkarte: Eine Karte soll mit nur Farben gefärbt werden Bedingung: benachbarte Länder (gemeinsame renze) müssen verschieden gefärbt werden Solitaire (Brettspiel): Alle Löcher, bis auf eins, sind mit Stiften besetzt Man darf mit einem Stift über einen anderen springen Übersprungene Stifte werden entfernt Ziel: alle Stifte, bis auf den letzten, zu entfernen. Zachmann Informatik SS 0 Backtracking
3 6//0 Der abstrakte Algorithmus Sackgasse? Sackgasse Start Sackgasse?? Sackgasse? Sackgasse? Erfolg explore( node ): if node ist Blatt: if node == Zielknoten: return Erfolg else: return Sackgasse foreach Kind c von node: explore( c ) if c erfolgreich: return Erfolg return Sackgasse Backtracking kann als Suche nach einem speziellen "Zielblatt" in einem sog. Such-Baum gesehen werden Achtung: dieser Baum wird beim Backtracking nie real aufgebaut! Wesentliche Komponente: ein Kriterium, so daß Sackgassen möglichst weit oben erkannt werden Realisierung der Pfadrückverfolgung durch Rekursion. Zachmann Informatik SS 0 Backtracking Zusammenhang zu Depth-First-Search Ein Knoten wird als nützlich bezeichnet, falls er zu einer Lösung führen könnte, sonst nicht nützlich Hauptidee: Backtracking besteht aus der Anwendung von DFS auf den Such-Baum, wobei für jeden Knoten entschieden wird ob er nützlich ist weiter absteigen; ob er nicht nützlich ist zurück zum Vaterknoten (back-tracking) Weitere Betrachtungsweise: Der Suchraum wird durch den Baum ausgefüllt und mit Hilfe von Rekursion und Backtracking durchsucht, um eine Lösung zu finden. Zachmann Informatik SS 0 Backtracking 6
4 6//0 Ein Färbungsproblem Der Vier-Farben-Satz: Jede Landkarte in der Ebene lässt sich mit höchstens Farben so färben, daß keine Länder mit gemeinsamer renze die gleiche Farbe haben.. Zachmann Informatik SS 0 Backtracking 7 Naive Lösung: erschöpfende Suche (exhaustive search) Länder werden durchnummeriert, dito die Farben Erzeugung aller möglichen Färbungen durch die "Tacho-Mehode": Jedes Rädchen = ein Land Starte mit Zählerstand 0 0 Drehe rechtes Zählrädchen einmal durch alle Ziffern (= Farben) Bei Übergang von 0 im rechten Rädchen: drehe zweitrechtes Rädchen Ziffer weiter Bei jedem Zählerstand: überprüfe Konsistenz (-Farben-Bedingung). Zachmann Informatik SS 0 Backtracking
5 6// Zachmann Informatik SS 0 Backtracking 9 Nachteile: Im ungünstigsten Fall müssen fast alle Kombinationen durchprobiert werden - Im average case müssen die Hälfte aller Kombinationen probiert werden Der Algorithmus zählt weiter, obwohl klar ist, daß einige Kombinationen übersprungen werden können. Zachmann Informatik SS 0 Backtracking 0
6 6//0 Eine Backtracking-Lösung Idee: ein Land färben und dann versuchen, das nächste zu färben, so daß folgende Bedingungen erfüllt sind: Die benachbarten, bereits gefärbten Länder haben unterschiedliche Farben Deines der benachbarten, noch ungefärbten Länder wird unfärbbar Diese lokalen Bedingungen können erfüllt sein, aber dennoch zu keiner Lösung führen (Sackgasse). Zachmann Informatik SS 0 Backtracking 7 ist unfärbbar geworden! Backtracking 7 wieder unfärbbar. Zachmann Informatik SS 0 Backtracking 6
7 6//0 Vorteil: wesentlich effizienter als erschöpfende Suche Nachteil: abhängig von der Nummerierung, d.h. bei ungünstiger Nummerierung ist der Aufwand ebenfalls enorm hoch Die Datenstruktur muß folgendes speichern: Länder sind Instanzen einer Klasse Land Zu jedem Land alle seine Nachbarn (Liste von Zeigern) Ein Array der Länge : - Wert an der Stelle i = Land ist in der Farbe i gefärbt - Wert - = Land kann mit Farbe i gefärbt werden - 0 = Land kann nicht mit der Farbe i gefärbt werden - Initialisiere alle Stellen (= Farben) mit -. Zachmann Informatik SS 0 Backtracking Beispiel-Implementierung in Python Achtung: Im folgenden wird die "Unfärbbar"-Heuristik weggelassen Es gibt nur Klasse für alle Länder zusammen Bessere Implementierung à la vorige Folie Übungsaufgabe Datenstruktur: Klasse Map mit internen Arrays Array colors, wobei colors[i] die Farbe des i-ten Landes ist Array neighbors mit den benachbarten Ländern - Beispiel: neighbors[][] == bedeutet: Land ist zu Land benachbart (hier ist es zufällig das dritte Land in der Liste der zu Land benachbarten Länder). Zachmann Informatik SS 0 Backtracking 7
8 6//0 class Map(object): def init (self): self.neighbors = 7 * [None] self.neighbors[0] = [,,, ] self.neighbors[] = [ 0,,6, ] self.neighbors[] = [ 0,,,6, ] self.neighbors[] = [,,6 ] self.neighbors[] = [ 0,,6,, ] self.neighbors[] = [,6,,0 ] self.neighbors[6] = [,,,, ] self.colors = 7 * [None] 0 6. Zachmann Informatik SS 0 Backtracking def main(): map = Map() print map.explore(0, "red" ) print map.colors # Fortsetzung von class Map def explore( self, country, color ): if country >= len( self.neighbors ): return True if oktoolor( country, color ): self.colors[country] = color for c in [ "red", "yellow", "green", "blue" ]: if explore( country+, c ): return True return False. Zachmann Informatik SS 0 Backtracking 6
9 6//0 # Teste, ob irgend ein Nachbar von 'country' # die Farbe 'color' hat def oktoolor( self, country, color ): for n in map[country]: if self.colors[ map[country][n] ] == color : return False return True. Zachmann Informatik SS 0 Backtracking 7 Erläuterung Es werden alle Länder rekursiv durchlaufen, begonnen wird mit Land 0 Für jedes Land wird eine Farbe gewählt: Die Farbe muß von denen aller Nachbarn verschieden sein Wenn keine Farbe gefunden werden kann, wird ein Fehler gemeldet Wenn eine Farbe gefunden wird, wird sie benutzt und mit dem nächsten Land fortgefahren Wenn alle Länder durchlaufen sind (alle wurden gefärbt), wird Erfolg gemeldet Nach der Rückkehr vom obersten Aufruf ist der Algorithmus fertig. Zachmann Informatik SS 0 Backtracking 9
10 6//0 Komplexität Exponentieller Aufwand: Anzahl der Kombinationen steigt exponentiell Anzahl der möglichen Sackgassen steigt ebenfalls exponentiell, daher ist Backtracking oftmals deutlich schneller als erschöpfende Suche Fällt in die Klasse NP-vollständig: D.h., es gibt wahrscheinlich keinen effizienten (= polynomiellen) Algorithmus. Zachmann Informatik SS 0 Backtracking 9 Anwendungen Stundenplanproblem Veranstaltungen = Länder Veranst., die nicht gleichzeitig ablaufen können, sind "benachbart" Anzahl der Farben, die zum Einfärben benötigt werden = Anzahl der verschiedenen Zeitfenster (minimale Anzahl = chromatic number des raphen) Registerzuweisungs-Probleme Bandbreitenzuweisungs-Probleme Viele mathematische Probleme lassen sich als Knotenfärbe- Problem formulieren. Zachmann Informatik SS 0 Backtracking 0 0
11 6//0 Das Acht-Damen-Problem Aufgabe: stelle Damen so auf ein Schachbrett, daß keine Dame eine andere angreift Schachbrett = x Felder Eine Dame kann jede andere Figur angreifen, die in derselben Zeile, derselben Spalte, oder der Diagonalen steht - (Die Dame ist die mächtigste Figur beim Schach) D. Zachmann Informatik SS 0 Backtracking Die naive Strategie Naive Strategie: alle möglichen Belegungen ausprobieren Anzahl Möglichkeiten = Zu viele nicht praktikabel Idee: Plaziere von vornherein nur eine Dame pro Spalte Starte mit der ersten Spalte; suche für jede eine Zeile, die noch nicht belegt ist Es müssen nur noch! = 00 Damen-Anordnungen auf Diagonalangriffe überprüft werden. Zachmann Informatik SS 0 Backtracking
12 6//0 Beispiel a) Die Damen können sich nicht gegenseitig angreifen, aber jede Position in Spalte 6 wird bedroht b) Bachtracking zu Spalte um ein anderes Feld für die Dame zu probieren c) Backtracking zu Spalte um ein anderes Feld für die Dame zu probieren und dann Spalte erneut zu betrachten. Zachmann Informatik SS 0 Backtracking Eine Lösung des Problems. Zachmann Informatik SS 0 Backtracking
13 6//0 Der Algorithmus im Detail (hier zeilenweise) # Teste, ob Dame in (neue_spalte,neue_reihe) in Konflikt mit # einer der schon stehenden Damen in 'loesung' ist. # loesung = Array mit neue_reihe- Eintraegen, # wobei in Zeile i eine Dame auf Feld (i,loesung[i]) steht. def konflikt( neue_reihe, neue_spalte, loesung ): # Stelle sicher, dass neue Dame mit keiner existierenden # Dame auf gleicher Spalte oder Diagonale steht for reihe in 0,,neue_reihe-: if ( loesung[reihe] == neue_spalte # gleiche Spalte or (neue_reihe reihe) + # gleiche Diagonale (neue_spalte - loesung[reihe]) == 0 or (neue_reihe reihe) - # gleiche Diagonale (neue_spalte - loesung[reihe]) == 0 ): return True # Konflikt return False # alles OK. Zachmann Informatik SS 0 Backtracking # Berechne alle Loesungen fuer ein Brett der roesse # neue_reihe x spalten. # teilloesungen = alle Loesungen fuer # (neue_reihe-) x spalten # Eine loesung = definiert wie in Fkt konflikt() # Jedes Array in teilloesungen hat (neue_reihe-) # Eintraege, jedes Array im Output hat neue_reihe Elem. def dame_dazu( neue_reihe, spalten, teilloesungen ): neue_loesungen = [] for loesung in teilloesungen: # versuche jede Spalte von neue_reihe for neue_spalte in 0,,spalten: if not konflikt( neue_reihe, neue_spalte, loesung ): neue_loesung = loesung + [neue_spalte] neue_loesungen.append( neue_loesung ) return neue_loesungen. Zachmann Informatik SS 0 Backtracking 6
14 6//0 # Erzeuge eine Liste von Lösungen auf einem Brett der # roesse (reihen x spalten) # Eine Lösung wird durch eine Liste der Spaltenpositionen, # indiziert durch die Reihennummer, angegeben. # Die Indizes beginnen mit 0! def damenproblem( reihen, spalten ): if reihen <= 0 or spalten <= 0: return [ [] ] # Ende der Rekursion; Lösung = # keine Dame auf dem nicht-existierenden Brett else: teilloesungen = damenproblem( reihen-, spalten ) return dame_dazu(reihen-, spalten, teilloesungen ). Zachmann Informatik SS 0 Backtracking 7 Demo Zachmann Informatik SS 0 Backtracking
15 6//0 Eine unterhaltsame Lehreinheit zum Thema Zachmann Informatik SS 0 Backtracking 9 Abstrakte Betrachtungsweise des Backtrackings Siehe die Thesis "A Theoretical Evaluation of Selected Backtracking..." (schon ausgedruckt). Zachmann Informatik SS 0 Backtracking 0
16 6//0 Abschließende Bemerkungen Aufgaben für Backtracking sind i.a. nicht Optimierungsaufgaben, sondern Ja-/Nein-Aufgaben (Entscheidungsprobleme) Backtracking = trial & error Verwenden meistens Rekursion Falls Backtracking keine Lösung findet es gibt keine Lösung! Die Algorithmentechnik "Backtracking" stammt von Edsger Dijkstra Das -Damen-Problem diente zur Illustration des "structured programming" (97). Zachmann Informatik SS 0 Backtracking 6
Informatik II Backtracking
lausthal Informatik II Backtracking. Zachmann lausthal University, ermany [email protected] Szenario: man hat eine Reihe von Entscheidungen aus einer Menge von Wahlmöglichkeiten zu treffen, wobei
G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:
lausthal Informatik II Divide & onquer. Zachmann lausthal University, ermany [email protected] Algorithmen-Design-Techniken Die wichtigsten Entwurfsverfahren für Algorithmen: 1. Divide and onquer
Einstieg in die Informatik mit Java
1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking
Übungen zum Vortrag Backtracking mit Heuristiken
Übungen zum Vortrag Backtracking mit Heuristiken A) Java-Implementierung studieren von Backtracking im Labyrinth B) Pseudocode schreiben zu Backtracking beim n Damen Problem C) Implementierung der Springerwege
Backtracking mit Heuristiken
Backtracking mit Heuristiken Thomas Dübendorfer [email protected] 14. September 2000 Inhalt und Ablauf 1. Einführendes Beispiel (4 min) 2. Konzepte zu Backtracking (8 min) 3. Eingesperrt im Labyrinth
Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.
Ein polynomieller Algorithmus für das N-Damen Problem 1 Einführung Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 05 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen Grundlagen
Informatik II Sortieren
lausthal Sortieralgorithmen Informatik II Sortieren Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die die meiste Rechenzeit verbrauchen viele raffinierte Methoden
Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.
lausthal Informatik II Bäume. Zachmann lausthal University, ermany [email protected] Beispiele Stammbaum. Zachmann Informatik 2 - SS 06 Bäume 2 Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy
1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Einführung Grundlagen von Algorithmen Grundlagen
Lernmodul 7 Algorithmus von Dijkstra
Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer
Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren
Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren 1 Übersicht 1. Ziele des Kapitels 2. Bereits behandelte Lösungsstrategien 3. Backtracking 4. Branch-and-Bound 5. Weiterführende
NP-vollständige Probleme
Effiziente Algorithmen Lösen NP-vollständiger Probleme 256 NP-vollständige Probleme Keine polynomiellen Algorithmen, falls P NP. Viele wichtige Probleme sind NP-vollständig. Irgendwie müssen sie gelöst
Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum
lausthal Informatik II lausthal University, ermany [email protected] Beispiele Stammbaum 2 1 Unix file hierarchy / Stammbaum (Evolution) bin aaclarke files mandel Point.java stock lib etc cs126 grades
Nachtrag: Vergleich der Implementierungen von Stack
Nachtrag: Vergleich der Implementierungen von Stack In der letzten Vorlesung hatten wir zwei Implementierung der Klasse Stack: eine Implementierung als Liste (Array): liststack eine Implementierung als
Mehrwegbäume Motivation
Mehrwegbäume Motivation Wir haben gute Strukturen (AVL-Bäume) kennen gelernt, die die Anzahl der Operationen begrenzen Was ist, wenn der Baum zu groß für den Hauptspeicher ist? Externe Datenspeicherung
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /
Informatik II Skip-Lists & selbstorganisierende Listen (als Bsp. für randomisierte Algos und selbstorganisierende Datenstrukturen)
lausthal Informatik II Skip-Lists & selbstorganisierende Listen (als Bsp. für randomisierte Algos und selbstorganisierende Datenstrukturen). Zachmann lausthal University, ermany [email protected]
Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass
Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass f O g und auch g O f. Wähle zum Beispiel und G. Zachmann Informatik
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
Informatik II Greedy-Algorithmen
lausthal Informatik II reedy-algorithmen. Zachmann lausthal University, ermany [email protected] Erinnerung: Dynamische Programmierung Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:
Programmierung mit C Algorithmen
Programmierung mit C Algorithmen Informationen /7/ Robert Sedgewick Algorithmen in C. 742 Seiten, ISBN 3-827-37182-1. /8/ Kyle Loudon Algorithmen mit C, ISBN 3-4897-211653-0. Online-Buch "C von A bis Z",
Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen
Algorithmen und Datenstrukturen Tutorium Übungsaufgaben
Algorithmen und Datenstrukturen Tutorium Übungsaufgaben AlgoDat - Übungsaufgaben 1 1 Landau-Notation Aufgabe Lösung 2 Rekurrenzen Aufgabe 3 Algorithmenentwurf und -analyse Aufgabe AlgoDat - Übungsaufgaben
WS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.
Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:
Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt
Bucketsort Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Sonst: Skalieren ( Aufwand O(n) ) Idee: Teile [0, 1) in n gleich große Buckets - Oder: n/k
Eine universelle Klasse von Hash-Funktionen
Eine universelle Klasse von Hash-Funktionen Annahmen: U = p, mit Primzahl p und U = {0,, p-1} Seien a {1,, p-1} und b {0,, p-1} Definiere wie folgt Satz: Die Menge ist eine universelle Klasse von Hash-Funktionen..
Algorithmen. Von Labyrinthen zu. Gerald Futschek
Von Labyrinthen zu Algorithmen Gerald Futschek Wie kommt man aus einem Labyrinth (griechisch: Haus der Doppelaxt, wahrscheinlich Knossos auf Kreta) Labyrinth heraus? Labrys Grundriss des Palastes von Knossos
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Kapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern
Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische
Zeichenketten Benedikt Straßner. Programming Systems Group Martensstr Erlangen Germany
Zeichenketten 16.04.2018 Benedikt Straßner Programming Systems Group Martensstr. 3 91058 Erlangen Germany Übersicht String Matching Algorithmen Naive Stringsuche Knuth Morris Pratt (KMP) Algorithmus Boyer-Moore
Einfügen immer nur am Kopf der Liste Löschen auch nur an einem Ende (2 Möglichkeiten!)
Stack und Queue Grundlegender Datentyp Menge von Operationen (add, remove, test if empty) auf generischen Daten Ähnlich wie Listen, aber mit zusätzlichen Einschränkungen / Vereinfachungen: Einfügen immer
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Vorrechnen von Aufgabenblatt 1. Wohlgeformte Klammerausdrücke 3. Teile und Herrsche Agenda 1.
Uninformierte Suche in Java Informierte Suchverfahren
Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2008/2009 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln 8-Damen-Problem Gegeben: Schachbrett
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Suchen und Amortisierte Analyse Heute: Suchen / Schreibtischtest Amortisierte Analyse Nächste
Stack. Queue. pop() liefert zuletzt auf den Stack gelegtes Element und löscht es push( X ) legt ein Element X auf den Stack
Stack und Queue Grundlegender Datentyp Menge von Operationen (add, remove, test if empty) auf generischen Daten Ähnlich wie Listen, aber mit zusätzlichen Einschränkungen / Vereinfachungen: Einfügen immer
3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen Übung Stefan Florian Palkovits, BSc 09 [email protected] 9. Juni 0 Aufgabe 9: Anwenden der Spanning Tree Heuristik auf symmetrisches TSP 9 8 7 8 8 7 Bilden eines
Algorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik [email protected] Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu
Algorithmen. Von Labyrinthen zu. Gerald Futschek
Von Labyrinthen zu Algorithmen Gerald Futschek Wie kommt man aus einem Labyrinth (griechisch: Haus der Doppelaxt, wahrscheinlich Knossos auf Kreta) Labyrinth heraus? Labrys Grundriss des Palastes von Knossos
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Programmierkurs Python II
Programmierkurs Python II Michaela Regneri & Stefan Thater FR 4.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 2011 Prüfungsleistungen Klausur am Semesterende -
4.2 Daten und Datenstrukturen
4.2 Daten und Datenstrukturen Daten Fundamentale Objekte, die in der Rechenanlage erfasst gespeichert ausgegeben (angezeigt, gedruckt) bearbeitet gelöscht werden können. Beispiele: Zahlen, Zeichenfolgen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 4 Suchen in Texten Version vom: 15. November 2016 1 / 39 Vorlesung 8 15. November
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 5 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner
Datenstrukturen und Algorithmen 2. Klausur SS 2001
UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................
Klausur zur Vorlesung Algorithmen und Datenstrukturen
Klausur zur Vorlesung Algorithmen und Datenstrukturen Die Dauer der Klausur beträgt 120 Minuten. Erlaubte Hilfsmittel: Ein selbst handschriftlich beschriebenes DIN A4 Blatt, das komplette Skript zur Vorlesung
Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.
Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
Schulbesuch Erich-Kästner Gesamtschule 07. April 2011
Schulbesuch Erich-Kästner Gesamtschule 07. April 0 Bünde Fakultät für Mathematik Universität Bielefeld [email protected] Übersicht Was ist ein Sudoku-Rätsel? Die Regeln und das Ziel Zentrale
Uninformierte Suche in Java Informierte Suchverfahren
Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Suchprobleme bestehen aus Zuständen
Fallstudie: Online-Statistik
Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...
Model Checking mit Büchi Automaten
Ingo Weigelt Softwaretechnik 3 16.05.2007 Übersicht 1 Automaten über unendlichen Wörtern ω-automaten Büchi-Automaten 2 Model Checking mit Büchi Automaten Konstruktion von A Konstruktion von A S Leerheitstest
In diesem Skript werden folgende Begriffe anhand von einfachen Beispielen eingeführt:
Färbungsprobleme Einstieg In diesem Skript werden folgende Begriffe anhand von einfachen Beispielen eingeführt: Graphentheorie Der Vier-Farben-Satz Algorithmen Komplexität von Algorithmen NP-Probleme Die
Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen 2 Übung 1 Stefan Florian Palkovits, BSc 0926364 [email protected] 12. Juni 2016 Aufgabe 1: Es existiert eine Reduktion von Problem A auf Problem B in O(n 3 +
Algorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit
Datenstrukturen. einfach verkettete Liste
einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten
Von Labyrinthen zu Algorithmen 2. Gerald Futschek
Von Labyrinthen zu Algorithmen 2 Gerald Futschek Problem der Zyklen Die Strategie Linke Wand entlang funktioniert leider nicht bei allen Labyrinthen, wenn man von A nach B will! Möglicherweise gibt es
Klausur Informatik B April Teil I: Informatik 3
Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.
Collatz-Folge. falls a i ungerade.
14 Klausurtraining Heute gibt s nichts Neues mehr wir machen nochmal einen Streifzug durch die behandelten Themen unter besonderer Berücksichtigung von Aufgaben in der Art, wie sie in Klausuraufgaben vorzukommen
Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen
Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet
1 Berechnung von Summen (ca = 10 Punkte)
Einführung in die wissenschaftliche Programmierung Klausur 26.02.2013 Seite 1/8 Name, Vorname, Unterschrift: Matrikelnummer: 1 Berechnung von Summen (ca. 5 + 4 + 1 = 10 Punkte) Gegeben sind natürliche
