Entwurf von Algorithmen

Größe: px
Ab Seite anzeigen:

Download "Entwurf von Algorithmen"

Transkript

1 Kapitel : Entwurf von Algorithmen Einführung in die Informatik Wintersemester /8 Prof. Bernhard Jung Übersicht Einleitung: Entwurf von Algorithmen Entwurfsprinzip: Schrittweise Verfeinerung Entwurfsprinzip: Einsatz von Algorithmenmustern Algorithmenmuster: Greedy Beispiel: optimales Kommunikationsnetz Exkurs: Listen (und Matrizen) in Python Algorithmenmuster: Backtracking Beispiel: Kürzeste Rundreise Beispiel: 8-amen-Problem Literatur G. Saake & K.-U. Sattler. Algorithmen und atenstrukturen. dpunkt Lehrbuch..

2 Einleitung: Entwurf von Algorithmen Programmieren ist konstruktive und kreative Tätigkeit Erstellung eines optimalen Algorithmus i.a. nicht automatisierbar Trotzdem existieren verschiedene typische Muster für Algorithmen, die in Praxis oft Anwendung finden aber fallspezifisch anzupassen sind schon bekanntes Muster: divide-and-conquer lokales Optimum z.b. Algorithmenmuster für Optimierungsprobleme, u.a. greedy-algorithmen effizient, liefern lokales Optimum Backtracking nicht so effizient, liefert globales Optimum globales Optimum Entwurfsprinzip: Schrittweise Verfeinerung Beim Entwurf von Algorithmen beschreibe Grobverfahren in abstraktem Pseudocode dabei Zerlegung in Teilaufgaben Verfeinere Pseudocode und ersetze diesen nach und nach durch detaillierten Pseudocode wiederhole bis letztlich Algorithmus in Programmiersprachencode beschrieben ist Top-own-Entwurf

3 Entwurfsprinzip: Schrittweise Verfeinerung Beispiel Grobverfahren. Wasser kochen. Nescafe in die Tasse. Wasser in die Tasse Einzelschritte verfeinern. Kessel mit Wasser füllen. Auf die Herdplatte stellen. Herdplatte anstellen. Warten bis Wasser kocht. Herdplatte abstellen. Glas öffnen. Menge Kaffeepulver auf den Löffel laden. Löffel in die Tasse leeren. Kessel von der Herdplatte nehmen. Tasse mit Wasser füllen Weiter verfeinern Entwurfsprinzip: Einsatz von Algorithmenmustern as (generische) Lösungsverfahren wird an einem möglichst einfachen Vertreter der Problemklasse vorgeführt und dokumentiert er Entwerfer versteht die Problemlösungsstrategie und überträgt diese auf sein Programm Konzept moderner Softwareentwicklung: "esign Patterns" Eine Bibliothek von Mustern ("esign Patterns", "best-practice"-strategien) wird genutzt, um einen abstrakten Programmrahmen zu generieren ie freien Stellen dieses Programmrahmens werden dann problemspezifisch ausgefüllt In modernen Programmiersprachen wird dies z.tl. schon weitergehend unterstützt durch parametrisierte Algorithmen und in objektorientierter Programmierung Vererbung mit Überschreiben

4 Algorithmenmuster Greedy greedy = gierig Prinzip gieriger Algorithmen: Versuche in jedem Teilschritt so viel wie möglich zu erreichen Beispiel Wechselgeld (bis Euro) herausgeben, mit minimaler Anzahl von Münzen à,,,,, und -Cent Greedy-Strategie: Nimm jeweils die größte Münze unter Zielwert, und ziehe diese von Zielwert ab Bsp: 8 Cent -> , d.h. Münzen Greedy berechnet bei diesem Problem immer die optimale Lösung wäre anders wenn nur Münzen à,, und Cent zu Verfügung stünden z.b. Cent zu wechseln Greedy: = +, d.h. Münzen optimal aber: =, d.h. Münzen Greedy: Optimales Kommunikationsnetz 8 Aufgabe: möglichst billige Vernetzung von vorgegeben Stationen eines Kommunikationsnetzes herstellen Jeder Knotenpunkt soll mit jedem anderen verbunden sein, ggf. auch auf Umweg über andere Knotenpunkte Bekannt sind Kosten für direkte Verbindungen Gesucht ist Teilmenge aller direkten Verbindungen, so dass alle Knoten untereinander verbunden sind die Gesamtkosten minimal sind (Optimierungsproblem!)

5 Greedy: Optimales Kommunikationsnetz 8. Schritt: Markiere beliebigen Knoten im Beispiel. Schritt: Betrachte alle Kanten von markierten zu unmarkierten Knoten - (Kosten ), - (Kosten ), - (Kosten ), - (Kosten ) und markiere Kante (und Zielknoten) mit geringsten Kosten Kante -, Knoten Greedy: Optimales Kommunikationsnetz 8. Schritt: Betrachte alle Kanten von markierten zu unmarkierten Knoten - (Kosten ), - (Kosten ), - (Kosten ) - (Kosten ), - (Kosten 8), - (Kosten ) und markiere Kante (und Zielknoten) mit geringsten Kosten Kante -, Knoten

6 Greedy: Optimales Kommunikationsnetz 8. Schritt: Betrachte alle Kanten von markierten zu unmarkierten Knoten - (Kosten ), - (Kosten ) - (Kosten ), - (Kosten ) - (Kosten 8), - (Kosten ) und markiere Kante (und Zielknoten) mit geringsten Kosten Kante -, Knoten Greedy: Optimales Kommunikationsnetz 8. Schritt: Betrachte alle Kanten von markierten zu unmarkierten Knoten - (Kosten ), - (Kosten ), - (Kosten 8), - (Kosten ) und markiere Kante (und Zielknoten) mit geringsten Kosten Kante -, Knoten Bem: markierte Knoten bilden jetzt einen "minimalen aufspannenden Baum" (minimal spanning tree) des Graphen

7 Greedy: Optimales Kommunikationsnetz Erste Variante des Algorithmus [ Teilbaum R besteht anfangs aus einem beliebigem Knoten ] while [ R noch nicht aufgespannt ]: [ suche billigste von R ausgehende Kante ] [ füge diese zu R hinzu ] 8 Verfeinerungen while-schleife durch for-schleife ersetzen da klar, dass Schleife genau (n-)-mal durchlaufen wird: anfangs Knoten in Baum, in jedem urchgang kommt ein Knoten hinzu Suche der billigsten Kante z.b. geschachtelte Schleife: für alle Knoten a für alle Knoten b teste ob Kante (a,b) von R ausgeht und billiger ist bisher betrachtete Kanten Greedy: Optimales Kommunikationsnetz Verfeinerte Variante des Algorithmus [ R = beliebiger Knoten von P ] for i = (n-): # suche billigste von R ausgehende Kante minkosten = MAXKOSTEN for j = (n-): for k = (j+) (n-): if Kante (j,k) geht von R aus and Kosten(j,k) < minkosten: minkosten = Kosten(j,k) billigstekante = (j,k) [ füge billigstekante zu R hinzu ] 8 Weitere Verfeinerungen atenstruktur zur arstellung von Baum festlegen am besten wäre es, eine eigene Klasse zu definieren (objektorientierte Prog.) als Behelf auch z.b. getrennte Speicherung von: treenodes: Liste der Knoten des Baums treeedges: Liste der Kanten des Baums

8 Greedy: Optimales Kommunikationsnetz Python-Code def minimalspanningtree(): treenodes = [] # initially only node in tree treeedges = [] #... and no edges def fromtreetooutside(a,b): if a in treenodes and b not in treenodes: return True if b in treenodes and a not in treenodes: return True return False for i in range(,size): # find cheapest edge leaving the current tree cheapestcost = MAXCOST for j in range(size): for k in range(j+,size): 8 if fromtreetooutside(j,k) and getcost(j,k) < cheapestcost: cheapestcost = getcost(j,k) cheapestedge = (j,k) # expand the current tree treeedges.append( cheapestedge ) a,b = cheapestedge hier nicht definiert: if a in treenodes: treenodes.append(b) getcost(j,k) Kosten für Kante (j,k) else: treenodes.append(a) SIZE Anzahl Knoten return treeedges MAXCOST - z.b. Lokale Funktion: Nur von äußerer Funktion aufrufbar. Hat Zugriff auf lokale Variablen der äußeren Funktion. atenstruktur für Graphen: Adjazenzmatrix (Nachbarschaftsmatrix) Graph mit n Knoten wird durch n n Matrix m repräsentiert ungerichtete Graphen ohne Kantengewichte: Kante (i,j) durch Eintag in m[i][j] und m[j][i] repräsentiert ungerichtete Graphen mit Kantengewichten: m[i][j] und m[j][i] enthalten Gewicht der Kante (i,j) bei ungerichteten Graphen ist Adjazenzmatrix symmetrisch bei gerichteten Graphen i.a. unsymmetrisch

9 arstellung von Matrizen in Python Matrix darstellbar als Liste von Listen: jede enthaltene Liste entspricht einer Zeile der Matrix >>> m = [ [,], [,] ] >>> print m[], m[] [, ] [, ] >>> print m[][], m[][], m[][], m[][] Potentielle Fehlerquelle beim Erzeugen von Matrizen: Enthaltene Listen müssen verschiedene (d.h. evtl. gleiche, aber nicht dieselben) Objekte sein Falls alle Teillisten dasselbe Objekt: Veränderungen an einer Teilliste wirken sich auf alle anderen aus! nicht gewollt bei Matrizen! >>> l = [,] >>> m = [l,l] >>> print m [[, ], [, ]] >>> l[] = >>> print l [, ] >>> print m [[, ], [, ]] Exkurs: Listen in Python Erzeugung von Listen Explizites Aufzählen (in eckigen Klammern) Zahlenfolgen mit range() >>> l = [,,] >>> l = range() >>> l [,,,, ] "Multiplikation" von Listen mit Zahl List comprehension Generierung von Liste aus Elementen einer andern Liste ähnlich ef. math. Mengen, z.b. : { i i =..} auch mit Test: nur Elemente, die Bedingung genügen, werden in neue Liste aufgenommen >>> l = [] * >>> l [,,,, ] >>> l = [ i** for i in range() ] >>> l [,,,, ] >>> l = [ i for i in range() if i% == ] >>> l [,,,, 8,,, ]

10 Exkurs: Listen in Python Slice-Operator l[min:max] Teilliste der Elemente von Index min (einschließlich) bis max (ausschließlich) l[min:] Teilliste ab Index min (einschließlich) l[:max] Teilliste bis Index max (ausschließlich) l[:] flache Kopie der Liste (Listenelemente werden nicht mit kopiert) >>> l = [,,,] >>> l[:] [,, ] >>> l[:] [,, ] >>> l[:] [, ] >>> l[:] [,,,] Exkurs: Listen in Python Flache und tiefe Kopien Alias anderer Name für gleiche Liste l = l Flache Kopie Liste wird kopiert, Elemente aber nicht l = l[:] Tiefe Kopie auch Listenelemente werden kopiert Modul copy l = deepcopy(l) Unterschiedl. Verhalten bei Hinzufügen oder Entfernen von Elementen der Original-Liste Ändern von Elementen der Originalliste >>> l = [ [,], [,] ] >>> l = l # Alias für l >>> l = l[:] # flache Kopie >>> from copy import deepcopy >>> l = deepcopy(l) >>> l.append([,]) >>> l [[, ], [, ], [, ]] >>> l [[, ], [, ]] >>> l [[, ], [, ]] >>> l[][] = >>> l [[, ], [, ], [, ]] >>> l [[, ], [, ]] >>> l [[, ], [, ]]

11 Erzeugen von n n Matrizen in Python Falsch: >>> def makematrixbuggy(n): return [ []*n ] * n >>> m = makematrixbuggy() >>> m [[, ], [, ]] >>> m[] [, ] >>> m[][] >>> m[][] = >>> m [[, ], [, ]] erzeugt Liste, deren n Elemente jeweils dieselbe Liste sind Richtig: >>> def makematrix(n): return [ []*n for i in range(n) ] >>> m = makematrix() >>> m [[, ], [, ]] >>> m[] [, ] >>> m[][] >>> m[][] = >>> m [[, ], [, ]] erzeugt Liste, deren n Elemente zwar gleich, aber nicht dieselbe Liste sind Kopieren so erzeugter Matrizen i.d.r. mit deepcopy()! Greedy: Optimales Kommunikationsnetz Analyse [ R = beliebiger Knoten von P ] for i = (n-): # suche billigste von R ausgehende Kante minkosten = MAXKOSTEN for j = (n-): for k = (j+) (n-): if Kante (j,k) geht von R aus and Kosten(j,k) < mincosts: minkosten = Kosten(j,k) billigstekante = (j,k) [ füge billigstekante zu R hinzu ] Laufzeit: proportional zu n Begründung: drei geschachtelte for-schleifen, die jeweils ungefähr n-mal durchlaufen werden Verbesserung möglich, so dass Laufzeit proportional zu n Algorithmus von Prim Algorithmus findet immer (global) optimale Lösung i.a. finden greedy-algorithmen nur lokales Optimum bei betrachtetem Problem gilt aber: lokales Optimum = globales Optimum

12 Wo Greedy fehlschlägt: Kürzeste Rundreise Gesucht: Rundreise durch alle Knoten, so dass jeder Knoten genau einmal besucht wird Rundreise am selben Knoten beginnt und endet Kosten minimal sind 8 Greedy-Strategie: beginne bei beliebigem Knoten gehe vom aktuellen Knoten zu dem unbesuchten Nachbarknoten mit geringsten Pfadkosten wiederhole, bis alle Knoten besucht gehe zurück zum Ausgangsknoten liefert im Beispiel z.b. Rundreise: (Kosten ) kürzere Rundreise z.b.: (Kosten ) optimale Lösung kann z.b. mit Backtracking gefunden werden Algorithmenmuster Backtracking Backtracking ist wichtiges Algorithmenmuster für Such- und Optimierungsprobleme Typische Anwendungsgebiete: Planungsprobleme (Routen- u. Tourenplanung), Konfigurierungen (z.b. VLSI-Layout), Optimierungen, Spielprogramme (Schach, ame, ), Backtracking realisiert eine allgemeine, systematische Suchtechnik Lösungsraum kann vollständig betrachtet werden Vorgehen nach Versuch-und-Irrtum-Prinzip (trial-and-error) versucht, schrittweise eine Teillösung zu Lösung auszubauen dabei systematisches Ausprobieren alternativer Lösungswege durch "Backtracking" zu früheren Entscheidungspunkten Beispiel: Maus und Käse Backtracking wird i.d.r. durch Rekursion implementiert

13 Backtracking: Finden in einem Labyrinth Jeder Weg (Konfiguration) kann mit einem Folgeschritt zu einem verlängerten Weg (Folgekonfiguration) erweitert werden Für jeden Weg (Konfiguration) ist entscheidbar, ob er eine Lösung ("Käse gefunden") oder keine Lösung ("Sackgasse" oder "Käse nicht gefunden") ist In der Sackgasse sucht die Maus keinen Folgeweg, sondern kehrt um zur vorherigen Konfiguration (Backtracking) zurück und sucht dort weiter as wiederholte Absuchen desselben Folgeweges muss verhindert werden Prinzip des Backtracking Prolemlösungsverfahren betrachtet zunächst Start-Konfiguration Für jede Konfiguration (Zustand) können i.a. mehrere Nachfolge-Konfigurationen (Zustände) erzeugt werden i.a. wird jede dieser Nachfolgekonfigurationen überprüft Für jede Konfiguration (Zustand) ist entscheidbar, ob es sich um eine Lösung handelt Backtracking-Muster: procedure backtrack(k: Konfiguration): if [K ist Lösung]: gib K aus else: for each [ direkte Erweiterung K' von K ]: backtrack( K' ) Aufruf von backtrack() mit Start-Konfiguration Backtracking terminiert garantiert, wenn nur endlich viele Konfigurationen bestehen jede Konfiguration höchstens einmal gestestet wird

14 Backtracking: Kürzeste Rundreise, bzw. Travelling salesman problem (tsp) Backtracking-Muster: procedure backtrack(k: Konfiguration): if [K ist Lösung]: gib K aus else: for each [ direkte Erweiterung K' von K ]: backtrack( K' ) 8 Traveling Salesman Problem: finde kürzeste Rundreise durch n Städte (jede Stadt darf nur einmal besucht werden, außer Start- = Zielort) Anpassung des Musters für Traveling Salesman Problem: procedure tsp( trip ): if [trip besucht alle Städte]: [erweitere trip um Heimreise zum Ausgangsort] [gib trip und Kosten dafür aus] else: for each [bislang unbesuchte Stadt s]: [ trip' = trip erweitert um Reise nach s] tsp( trip' ) Backtracking: Travelling salesman problem (tsp) Umsetzung in Python def tsp(trip): # solution found if len(trip) == SIZE: roundtrip = trip + [ trip[] ] # go home print "Roundtrip", roundtrip, "costs", getpathcost(roundtrip) # expand trip, try all unvisited cities else: for i in range(size): if i not in trip: tsp( trip + [i]) return # Hauptprogramm if name == ' main ': tsp([]) # start trip in city

15 Backtracking: Travelling salesman, Testlauf u. Analyse Roundtrip [,,,,, ] costs Roundtrip [,,,,, ] costs Roundtrip [,,,,, ] costs 8 Roundtrip [,,,,, ] costs 8 Roundtrip [,,,,, ] costs Roundtrip [,,,,, ] costs Es werden Rundreisen Roundtrip [,,,,, ] costs gefunden Roundtrip [,,,,, ] costs minimale Kosten (per Roundtrip [,,,,, ] costs Inspektion der Ergebnisse): Roundtrip [,,,,, ] costs jede Rundreise entspricht Roundtrip [,,,,, ] costs einer Permutation der Zahlen Roundtrip [,,,,, ] costs.. Roundtrip [,,,,, ] costs Für n Objekte gibt es n! Roundtrip [,,,,, ] costs Permutationen Roundtrip [,,,,, ] costs Roundtrip [,,,,, ] costs =! Roundtrip [,,,,, ] costs Laufzeit des Algorithmus Roundtrip [,,,,, ] costs proportional zu (n-)! Roundtrip [,,,,, ] costs damit nur für kleine n effektiv Roundtrip [,,,,, ] costs ausführbar Roundtrip [,,,,, ] costs (mit Code-Optimierungen z.b. Roundtrip [,,,,, ] costs 8 n = ) Roundtrip [,,,,, ] costs Roundtrip Prof. B. Jung [,,,,, Einführung ] costs in die Informatik, WS /8 TU Bergakademie Freiberg Backtracking: as Achtdamen-Problem as amenproblem (8 Queens Problem): Man finde eine Stellung für acht amen auf einem Schachbrett, so dass keine zwei amen sich gegenseitig schlagen können In Informatik auch auf n-amenproblem erweitert (Platzierung von n amen auf n n Brett) Zwei Lösungen des Achtdamen-Problems

16 Backtracking: as Achtdamen-Problem Vorgangsweise von oben nach unten, je ame in Zeile setzen (gleiche Zeile ausgeschlossen) dabei werden jeweils alle unbedrohten Felder der Zeile ausprobiert Lösung gefunden, wenn 8. ame auf unbedrohtem Feld platziert wird def PLATZIERE(i): # platziere ame in i-ter Zeile for h =.. 8: # alle Spalten h ausprobieren if [Feld in Zeile i, Spalte h nicht bedroht]: [setze ame auf dieses Feld (i,h)] if [Brett voll]: # d.h. i == 8 [Gib Konfiguration aus] else: PLATZIERE(i+) Konfigurations- bzw. Suchraum für -amenproblem [symmetrisch zu Teilbaum links] def PLATZIERE(i): # platziere ame in i-ter Zeile for h =.. 8: # alle Spalten h ausprobieren if [Feld in Zeile i, Spalte h nicht bedroht]: [setze ame auf dieses Feld (i,h)] if [Brett voll]: # d.h. i == 8 Lösung! [Gib Konfiguration aus] else: PLATZIERE(i+)

17 Backtracking: as Achtdamen-Problem Gegenseitige Bedrohung von amen, falls: gleiche Zeile (ausgeschlossen durch Algorithmus) gleiche Spalte gleiche iagonale def bedroht( (x,y), (x,y) ): if x == x: return True if y == y: return True if x+y == x+y: return True if x-y == x-y: return True return False # gleiche Spalte # gleiche Reihe # gleiche iagonale (aufwaerts) # gleiche iagonale (abwaerts) def istbedroht( (x,y), andere): # ist Feld bedroht? for xi,yi in andere: if bedroht( (xi,yi), (x,y) ): return True return False def platzierenaechsteame( bisher ): zeile = len(bisher) + for spalte in range(,): if not istbedroht( (zeile,spalte), bisher): jetzt = bisher + [ (zeile,spalte) ] if len(jetzt)==8: print "Loesung", jetzt else: platzierenaechsteame(jetzt) # Hauptprogramm if name == " main ": platzierenaechsteame([])

18 Backtracking: as Achtdamen-Problem Anzahl der Lösungen steigt mit der Brettgröße sehr stark an! Backtracking: Sudoku 8

19 Zusammenfassung Betrachtete Algorithmenmuster greedy berechnet lokales Optimum polynomiale Zeitkomplexität backtracking berechnet globales Optimum Zeitkomplexität entsprechend Größe des (problemspezifischen) Konfigurationsraums, z.b. exponentiell (proportional n ) oder auch noch schlimmer proportional zu n! vollständiges urchsuchen des Konfigurationsraums per Backtracking daher nur für kleinere Probleminstanzen praktisch durchführbar bei großen Probleminstanzen muss man sich evtl. mit lokalen Optima begnügen, z.b. per Greedy-Algorithmus berechnet Weitere Algorithmenmuster divide-and-conquer (vgl. Kapitel : Suche) dynamisches Programmieren (Literatur)

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute Einführung Grundlagen von Algorithmen

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

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

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen Programm heute lgorithmen und atenstrukturen (für T/IT) Sommersemester 0 r. Tobias Lasser omputer ided Medical Procedures Technische Universität München inführung rundlagen von lgorithmen rundlagen von

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Rückblick: divide and conquer

Rückblick: divide and conquer Rückblick: divide and conquer pi = (xi,yi) } p å } ' }d(p,p) p ''=min(, ') F 0/0 p./95 weitere Algorithmentechniken Greedy-Algorithmen dynamische Programmierung Backtracking branch and bound Heuristiken

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 24. April 2019 [Letzte Aktualisierung: 24/04/2019,

Mehr

Grundlagen der Informatik Algorithmenmuster & Graphen

Grundlagen der Informatik Algorithmenmuster & Graphen Grundlagen der Informatik Algorithmenmuster & Graphen Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Algorithmenmuster

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 6 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Mai 2018 [Letzte Aktualisierung: 18/05/2018,

Mehr

Lernmodul 7 Algorithmus von Dijkstra

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

Mehr

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Approximierbarkeit David Kappel Institut für Grundlagen der Informationsverarbeitung Technische Universität Graz 10.06.2016 Übersicht Das Problem des Handelsreisenden TSP EUCLIDEAN-TSP

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

Einstieg in die Informatik mit Java

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

Mehr

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme Theoretische Informatik Exkurs Rainer Schrader Exkurs: Komplexität von n Institut für Informatik 13. Mai 2009 1 / 34 2 / 34 Gliederung Entscheidungs- und Approximationen und Gütegarantien zwei Greedy-Strategien

Mehr

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP Kap..1 Heuristiken Kap.. Approximative Algorithmen und Gütegarantien Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 3. VO DAP SS 008 14. Juli 009 Überblick

Mehr

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 23. VO DAP2 SS 2008 14. Juli 2009

Mehr

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME

11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME Algorithmen und Datenstrukturen 11. GRAPHEN 3 FLÜSSE UND SPANNBÄUME Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Algorithmen und Datenstrukturen 11.1. BERECHNUNG MAXIMALER FLÜSSE

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Approximierbarkeit David Kappel Institut für Grundlagen der Informationsverarbeitung Technische Universität Graz 02.07.2015 Übersicht Das Problem des Handelsreisenden TSP EUCLIDEAN-TSP

Mehr

Backtracking mit Heuristiken

Backtracking mit Heuristiken Backtracking mit Heuristiken Thomas Dübendorfer thomas@duebendorfer.ch 14. September 2000 Inhalt und Ablauf 1. Einführendes Beispiel (4 min) 2. Konzepte zu Backtracking (8 min) 3. Eingesperrt im Labyrinth

Mehr

2. Optimierungsprobleme 6

2. Optimierungsprobleme 6 6 2. Beispiele... 7... 8 2.3 Konvexe Mengen und Funktionen... 9 2.4 Konvexe Optimierungsprobleme... 0 2. Beispiele 7- Ein (NP-)Optimierungsproblem P 0 ist wie folgt definiert Jede Instanz I P 0 hat einen

Mehr

3.6 Branch-and-Bound-Verfahren

3.6 Branch-and-Bound-Verfahren 36 Branch-and-Bound-Verfahren Die Branch-and-Bound -Methode beruht darauf, auf eine intelligente Weise alle zulässigen Lösungen eines kombinatorischen Optimierungsproblems aufzulisten und mit Hilfe von

Mehr

1.Aufgabe: Minimal aufspannender Baum

1.Aufgabe: Minimal aufspannender Baum 1.Aufgabe: Minimal aufspannender Baum 11+4+8 Punkte v 1 v 2 1 3 4 9 v 3 v 4 v 5 v 7 7 4 3 5 8 1 4 v 7 v 8 v 9 3 2 7 v 10 Abbildung 1: Der Graph G mit Kantengewichten (a) Bestimme mit Hilfe des Algorithmus

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016 Algorithmen und Datenstrukturen Übung Stefan Florian Palkovits, BSc 09 e09@student.tuwien.ac.at 9. Juni 0 Aufgabe 9: Anwenden der Spanning Tree Heuristik auf symmetrisches TSP 9 8 7 8 8 7 Bilden eines

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/1 Datenstrukturen und Algorithmen Vorlesung 14: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/

Mehr

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Vorlesung 7 und 8: Euler- und Hamilton-Graphen Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 17. April 2018 1/96 WIEDERHOLUNG Eulersche

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Große Lösungsräume. Leon Schmidtchen Hallo Welt Seminar - LS Leon Schmidtchen Große Lösungsräume Hallo Welt Seminar - LS2

Große Lösungsräume. Leon Schmidtchen Hallo Welt Seminar - LS Leon Schmidtchen Große Lösungsräume Hallo Welt Seminar - LS2 Große Lösungsräume Leon Schmidtchen 1.06.201 Hallo Welt Seminar - LS 2!1 Gliederung Motivation Brute Force Backtracking Pruning Leon Schmidtchen Branch & Bound 1.06.201 Hallo Welt Seminar - LS 2 Wann soll

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 208 (Algorithmen & Datenstrukturen) Vorlesung 4 (..208) Graphenalgorithmen III Algorithmen und Komplexität Bäume Gegeben: Zusammenhängender, ungerichteter Graph G = V, E Baum: Zusammenhängender,

Mehr

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein Proseminar Online Algorithmen, Prof. Dr. Rolf Klein Vortrag von Michael Daumen am 13.12.2000 Thema : Minimum Spanning Tree und 2-Approximation der TSP-Tour Inhalt des Vortrags : 1. genaue Vorstellung des

Mehr

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016

Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS Oktober 2016 Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithms and Complexity Group 186.815 Algorithmen und Datenstrukturen 2 VU 3.0 Nachtragstest SS 2016 5. Oktober 2016 Machen Sie

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

Algorithmentheorie. 10 Greedy Verfahren

Algorithmentheorie. 10 Greedy Verfahren Algorithmentheorie 0 Greedy Verfahren Prof. Dr. S. Albers Greedy Verfahren. Allgemeine Vorbemerkungen 2. Einfache Beispiele Münzwechselproblem Handlungsreisenden-Problem 3. Das Aktivitäten Auswahlproblem

Mehr

Algorithmen und Datenstrukturen 2

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

Mehr

Algorithmen und Datenstrukturen 4. ENTWURFSMUSTER. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Algorithmen und Datenstrukturen 4. ENTWURFSMUSTER. Algorithmen und Datenstrukturen - Ma5hias Thimm 1 und atenstrukturen 4. ENTWURFSMUSTER Algorithmen und atenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Überblick Entwurfsprinzipien Greedy-Algorithmen ivide and Conquer Backtracking ynamische

Mehr

Klausur Informatik 2: Algorithmen und Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Klausur Informatik 2: Algorithmen und Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Klausur Informatik 2: Algorithmen und Datenstrukturen Donnerstag, 9. März 21, 2017, 9:00 bis 12.00 Uhr Name:.....................................................................

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Lösungen von Übungsblatt 12

Lösungen von Übungsblatt 12 Lösungen von Übungsblatt 12 Algorithmen (WS 2018, Ulrike von Luxburg) Lösungen zu Aufgabe 1 Eine (kanonische) Möglichkeit, die Branch-Schritte auszuführen ergibt sich wie folgt: Das ursprüngliche Problem

Mehr

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt. Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

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) Ü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

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 02. Mai 2017 [Letzte Aktualisierung: 10/07/2018,

Mehr

Euler und Hamiltonkreise

Euler und Hamiltonkreise Euler und Hamiltonkreise 1. Königsberger Brücken 2. Eulerwege und Kreise Definition, Algorithmus mit Tiefensuche 3. Hamiltonwege und Kreise Definition 4. Problem des Handlungsreisenden Enumeration und

Mehr

9. Heuristische Suche

9. Heuristische Suche 9. Heuristische Suche Prof. Dr. Rudolf Kruse University of Magdeburg Faculty of Computer Science Magdeburg, Germany rudolf.kruse@cs.uni-magdeburg.de S Heuristische Suche Idee: Wir nutzen eine (heuristische)

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 16: Erste Algorithmen in Graphen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für

Mehr

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60 Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester

Mehr

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen Graphen Graphenalgorithmen 2

Mehr

Traveling Salesman Problem (TSP)

Traveling Salesman Problem (TSP) Traveling Salesman Problem (TSP) Das Traveling Salesman Problem (TSP) ist ein bekanntes Optimierungsproblem. Ein Handlungsreisender soll in einer Rundreise (auch Tour genannt) n vorgegebene Städte besuchen.

Mehr

12.4 Traveling Salesman Problem

12.4 Traveling Salesman Problem 96 KOMBINATORISCHE SUCHE.4 Traveling Salesman Problem Definition.3(TSP, Problem des Handlungsreisenden): Wir betrachten einen gerichteten, gewichteten Graphen G = (V,E) mit K : V R. K({u,v}) sind die Kosten

Mehr

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Klausur Wichtige Hinweise: 2.7.07, Beginn 9 Uhr Bitte spätestens 8:4 Uhr vor Ort sein Sporthalle + Audimax Informationen

Mehr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Grundlagen der Algorithmen und Datenstrukturen Kapitel 12 Christian Scheideler + Helmut Seidl SS 2009 28.06.09 Kapitel 12 1 Generische Optimierungsverfahren Techniken: Systematische Suche lass nichts aus

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 16 (2.7.2014) Graphtraversierung II, Minimale Spannbäume I Algorithmen und Komplexität Tiefensuche: Pseusocode DFS Traversal: for all u in

Mehr

Wiederholung. Divide & Conquer Strategie

Wiederholung. Divide & Conquer Strategie Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 5 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

3.2 Generischer minimaler Spannbaum-Algorithmus

3.2 Generischer minimaler Spannbaum-Algorithmus 3.2 Generischer minimaler Spannbaum-Algorithmus Initialisiere Wald F von Bäumen, jeder Baum ist ein singulärer Knoten (jedes v V bildet einen Baum) while Wald F mehr als einen Baum enthält do wähle einen

Mehr

Einführung in Heuristische Suche

Einführung in Heuristische Suche Einführung in Heuristische Suche Beispiele 2 Überblick Intelligente Suche Rundenbasierte Spiele 3 Grundlagen Es muss ein Rätsel / Puzzle / Problem gelöst werden Wie kann ein Computer diese Aufgabe lösen?

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:

Mehr

NP-vollständige Probleme

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

Mehr

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition. 1 Informatik I: Einführung in die Programmierung 11. Bäume e e Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13. November 2015 13. November 2015 B. Nebel Info I 3 / 33 Bäume in der Informatik Bäume

Mehr

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012 Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Theorie der Informatik Übersicht. Theorie der Informatik SAT Graphenprobleme Routing-Probleme. 21.

Theorie der Informatik Übersicht. Theorie der Informatik SAT Graphenprobleme Routing-Probleme. 21. Theorie der Informatik 19. Mai 2014 21. einige NP-vollständige Probleme Theorie der Informatik 21. einige NP-vollständige Probleme 21.1 Übersicht 21.2 Malte Helmert Gabriele Röger 21.3 Graphenprobleme

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

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:

Mehr

Praktische Grenzen der Berechenbarkeit

Praktische Grenzen der Berechenbarkeit Arno Schwarz Praktische Grenzen der Berechenbarkeit Während es im ersten Abschnitt um prinzipiell unlösbare Probleme ging, wenden wir uns nun Aufgaben zu, deren Lösbarkeit praktische Grenzen gesetzt sind.

Mehr

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.

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

Mehr

Durchschnitt von Matroiden

Durchschnitt von Matroiden Durchschnitt von Matroiden Satz von Edmonds Dany Sattler 18. Januar 2007/ Seminar zur ganzzahligen Optimierung / Wallenfels Definition: Unabhängigkeitssystem Definition: Ein Mengensystem (S, J ) nennt

Mehr

Sandro Pirkwieser, (Bin Hu, Jakob Puchinger) SS 2010

Sandro Pirkwieser, (Bin Hu, Jakob Puchinger) SS 2010 Lösungsverfahren für Ganzzahlige Optimierung Sandro Pirkwieser, (Bin Hu, Jakob Puchinger) Fortgeschrittene Algorithmen und Datenstrukturen Arbeitsbereich für Algorithmen und Datenstrukturen Institut für

Mehr

Abstrakte Datentypen und deren Implementierung in Python

Abstrakte Datentypen und deren Implementierung in Python Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 21 (11.7.2018) String Matching (Textsuche) II Greedy Algorithmen I Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 robert.legenstein@igi.tugraz.at 1 Kapitel 2 Algorithmische robert.legenstein@igi.tugraz.at 2 2. Algorithmische 1) Iterative Algorithmen 2) Rekursive Algorithmen

Mehr

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7 1 Kürzeste Pfade Woche 6 7 Hier arbeiten wir mit gewichteten Graphen, d.h. Graphen, deren Kanten mit einer Zahl gewichtet werden. Wir bezeichnen die Gewichtsfunktion mit l : E R. Wir wollen einen kürzesten

Mehr

Informatik III - WS07/08

Informatik III - WS07/08 Informatik III - WS07/08 Kapitel 4 1 Informatik III - WS07/08 Prof. Dr. Dorothea Wagner dwagner@ira.uka.de Kapitel 4 : Komplexitätsklassen Informatik III - WS07/08 Kapitel 4 2 Sprachen, Probleme, Zeitkomplexität

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

Weitere Algorithmenentwurfstechniken

Weitere Algorithmenentwurfstechniken Weitere Algorithmenentwurfstechniken 1 Backtracking Vier Damen Beim Schach bedroht die Figur der Dame alle Felder, die sich horizontal, vertikal oder diagonal von der entsprechenden Position der Dame befinden.

Mehr

Rechenzeit für A. Sei t B die Rechenzeit eines Algo für B. Seien p,q,r monotone Polynome ( +).

Rechenzeit für A. Sei t B die Rechenzeit eines Algo für B. Seien p,q,r monotone Polynome ( +). Rechenzeit für A Sei t B die Rechenzeit eines Algo für B. Seien p,q,r monotone Polynome ( +). Rechenzeit des resultierenden Algo für A: t A (n) p(n) + q(n) t B (r(n)). Ist polynomiell, falls t B Polynom.

Mehr

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009

Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009 Algorithmentechnik - U bung 3 4. Sitzung Tanja Hartmann 03. Dezember 2009 I NSTITUT F U R T HEORETISCHE I NFORMATIK, P ROF. D R. D OROTHEA WAGNER KIT Universita t des Landes Baden-Wu rttemberg und nationales

Mehr

1 Matroide. 1.1 Definitionen und Beispiele. Seminar zur ganzzahligen Optimierung Thema: Durchschnitt von Matroiden - Satz von Edmonds von Dany Sattler

1 Matroide. 1.1 Definitionen und Beispiele. Seminar zur ganzzahligen Optimierung Thema: Durchschnitt von Matroiden - Satz von Edmonds von Dany Sattler Seminar zur ganzzahligen Optimierung Thema: Durchschnitt von Matroiden - Satz von Edmonds von Dany Sattler 1 Matroide 1.1 Definitionen und Beispiele 1. Definition (Unabhängigkeitssystem): Ein Mengensystem

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen? Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen

Mehr

Einführung in das Seminar Algorithmentechnik

Einführung in das Seminar Algorithmentechnik Einführung in das Seminar Algorithmentechnik 10. Mai 2012 Henning Meyerhenke, Roland Glantz 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Roland undglantz: nationales Einführung Forschungszentrum

Mehr

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I Vorname: Matrikelnummer: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 4. September 2017 Klausur Algorithmen I Aufgabe 1. Kleinaufgaben 15 Punkte Aufgabe

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Dr. Hanjo Täubig Lehrstuhl für Eziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester 2007/08

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 .. ADS: Algorithmen und Datenstrukturen 2 8. Vorlesung Uwe Quasthoff Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 6. Juni 2012 1 / 25 Editier-Distanz Beobachtungen:

Mehr

Kapitel 12: Induktive

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

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,

Mehr

Übungen zum Vortrag Backtracking mit Heuristiken

Ü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

Mehr