Übersicht. Datenstrukturen und Algorithmen. Trigramme... Übersicht. Terminologie Repräsentation von Graphen
|
|
- Julian Kuntz
- vor 6 Jahren
- Abrufe
Transkript
1 atenstrukturen und lgorithmen Vorlesung 14+15: lementare algorithmen (K22,K24.2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification roup Juni Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Joost-Pieter Katoen atenstrukturen und lgorithmen 1/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 2/81 Softwarewettbewerb Softwarewettbewerb 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Trigramme... sind wichtig für automatische Verarbeitung natürlicher Sprache: Trainingscorpus liefert Trigramme mit nzahl Vorkommen atenstruktur speichert diese Informationen beantwortet nfragen auf neuen ingabedaten 1 Trainingscorpus 2 nfragen Joost-Pieter Katoen atenstrukturen und lgorithmen 3/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 4/81
2 Softwarewettbewerb Softwarewettbewerb T TrigramStorage Ihre ufgabe TrigramStorage in TrigramStorage s speichert eine nsammlung von Trigrammen und den dazugehörigen ounts und bietet folgende Operationen: void insert(s, Trigramndount t) fügt das Trigramm t in s ein. QueryResult query(s, Trigram t1, Trigram t2) gibt das Maximum und die Summe der ounts aller Trigramme t in s, die lexikographisch zwischen t1 und t2 liegen. void build(s) wird nach dem infügen aller lemente aufgerunfen und kann die interne Repräsentation der aten ändern, um schneller auf nfragen antworten zu können. Schreiben Sie eine Implementierung des T TrigramStorage in Java, der nfragen so schnell wie möglich beantwortet. Regeln bis zu (ca.) Trigramme und (ca.) nfragen Zeit für insert und build wird nicht gezählt, nur die nfragezeiten Java 7 keine nicht-elementaren ibliotheksfunktionen benutzen (kein java.util.sort, kein java.util.hash, etc.) kein Source ode aus anderen Quellen etails (ramework, eispiel-implementierung): Joost-Pieter Katoen atenstrukturen und lgorithmen 5/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 6/81 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen ie edeutung von werden in vielen (Informatik-)nwendungen verwendet: eispiele (omputer-)netzwerke Webseiten und ihre Vernetzung mittels Links arstellung von topologischen Informationen (Karten,... ) arstellung von elektronischen Schaltungen Vorranggraphen (precedence graph), blaufpläne,... Semantische Netze (z.. ntity-relationship-iagramme) Wir werden uns auf fundamentale raphalgorithmen konzentrieren. Joost-Pieter Katoen atenstrukturen und lgorithmen 7/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 8/81
3 erichteter raph erichteter raph erichteter raph in gerichteter raph (auch: digraph) ist ein Paar (V, ) mit einer Menge V von Knoten (vertices) und einer Menge { (u, v) u, v V } von Kanten (edges). eispiel V = {,..., } = { (, ), (, ), (, ), (, ), (, ), (, ), (, ), (, ) } Ungerichteter raph in ungerichteter raph ist ein Paar (V, ) mit Kanten Knoten einer Menge V von Knoten (vertices) und einer Menge {{u, v} u, v V, u v} von Kanten (edges). uch für ungerichtete Kanten verwenden wir die Notation (u, v). djazent Knoten v V ist adjazent zu u V, wenn (u, v). und sind adjazent, wie auch z.. und, und und. Joost-Pieter Katoen atenstrukturen und lgorithmen 9/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 10/81 bei Teilgraph in Teilgraph (subgraph) eines = (V, ) ist ein raph = (V, ) mit: V V und. ußerdem ist V V wegen der rapheigenschaft von. Ist V V und, so heißt echter (proper) Teilgraph. bei Symmetrischer raph er raph heißt symmetrisch, wenn aus (u, v) folgt (v, u). Zu jedem ungerichteten gibt es einen korrespondierenden symmetrischen igraphen. eispiel: Symmetrischer igraph eispiel: Rote Knoten und Kanten bilden einen (echten) Teilgraphen Joost-Pieter Katoen atenstrukturen und lgorithmen 11/81 Vollständiger raph in ungerichteter raph ist vollständig, wenn jedes Paar von Knoten durch eine Kante verbunden ist. Joost-Pieter Katoen atenstrukturen und lgorithmen 12/81
4 bei Transponieren Transponiert man = (V, ) (transpose graph), so erhält man T = (V, ) mit (v, u) gdw. (u, v). In T ist die Richtung der Kanten von umgedreht. Pfade und Zyklen Pfad (Weg) in Pfad der Länge k vom Knoten u V zum Knoten w V in = (V, ) ist eine olge v 0 v 1 v 2... v k 1 v k von Knoten v i V mit (v i, v i+1 ), v 0 = u und v k = w. ie Länge eines Pfades ist die nzahl der durchlaufenen Kanten. inen Pfad der Länge 0 nennen wir leer. in Pfad mit v i v j für alle i j heißt einfach. Knoten w ist erreichbar von u, wenn es einen Pfad von u nach w gibt. eispiel: in raph und sein transponierter raph Joost-Pieter Katoen atenstrukturen und lgorithmen 13/81 Pfade und Zyklen Zyklus Schlinge und sind Pfade, aber keine einfache Pfade. und sind einfache Pfade. Zyklen in gerichtenen in Zyklus in einem gerichteten raph ist ein nicht-leerer Pfad bei dem der Startknoten auch der ndknoten ist. in Zyklus vv der Länge 1 heißt Schlinge (self-loop). in Zyklus v 0... v k ist einfach wenn v 1... v k paarweise verschieden sind. Joost-Pieter Katoen atenstrukturen und lgorithmen 14/81 in gerichteter raph ist azyklisch, wenn er keine Zyklen hat. Zyklen in ungerichteten Zusammenhangskomponenten in ungerichteten in Zyklus in einem ungerichteten raph ist ein Pfad v 0... v k mit k 3, v 0 = v k und v 1,..., v k paarweise verschieden. in ungerichteter raph ist azyklisch, wenn er keine Zyklen hat. Zusammenhangskomponenten in ungerichteten Sei ein ungerichteter raph. heißt zusammenhängend (connected), wenn jeder Knoten von jedem anderen Knoten aus erreichbar ist. ine Zusammenhangskomponente (connected component, ) von ist ein maximaler (d.h. nicht erweiterbarer) zusammenhängender Teilgraph von. Joost-Pieter Katoen atenstrukturen und lgorithmen 15/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 16/81
5 Zusammenhangskomponenten in gerichteten Zusammenhangskomponenten in gerichteten Sei ein gerichteter raph. heißt stark zusammenhängend (strongly connected), wenn jeder Knoten von jedem anderen Knoten aus erreichbar ist. heißt schwach zusammenhängend (weakly connected), wenn der zugehörige ungerichtete raph (wenn man alle Kanten ungerichtet macht) zusammenhängend ist. ine starke Zusammenhangskomponente (strongly connected component, S) von ist ein maximaler stark zusammenhängender Teilgraph von. ie Zerlegung eines in seine Zusammenhangskomponente ist eindeutig. Ungerichtete, zusammenhängende I J H in ungerichteter raph; Was sind die Zusammenhangskomponenten? Joost-Pieter Katoen atenstrukturen und lgorithmen 17/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 18/81 Ungerichtete, zusammenhängende Starke Zusammenhangskomponenten I J H in igraph und seine Ss. ie Zusammenhangskomponenten. Joost-Pieter Katoen atenstrukturen und lgorithmen 19/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 20/81
6 Zusammenhang emerkungen in aum (zusammenhängender azyklischer raph) mit n Knoten hat n 1 Kanten. in ungerichteter raph mit n Knoten und weniger als n 1 Kanten kann nicht zusammenhängend sein. in ungerichteter raph mit n Knoten und mindestens n Kanten muss einen Zyklus enthalten. 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Joost-Pieter Katoen atenstrukturen und lgorithmen 21/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 22/81 Repräsentation von : djazenzmatrix Repräsentation von : djazenzliste Sei = (V, ) mit V = n, = m und V = { v 1,..., v n }. djazenzmatrix ie djazenzmatrix-arstellung eines ist durch eine n n boolesche Matrix gegeben, wobei (i, j) = 1, wenn (v i, v j ), sonst 0. Wenn ungerichtet ist, ergibt sich symmetrisches (d. h. = T ). ann muss nur die Hälfte gespeichert werden. Platzbedarf: Θ(n 2 ). djazenzliste ei der arstellung als rray von djazenzlisten gibt es ein durch die Nummer des Knoten indiziertes rray, das jeweils verkettete Listen (djazenzlisten) enthält. er i-te rrayeintrag enthält alle Kanten von, die von v i ausgehen. Ist ungerichtet, dann werden Kanten doppelt gespeichert. Kanten, die in nicht vorkommen, benötigen keinen Speicherplatz. Platzbedarf: Θ(n + m). Joost-Pieter Katoen atenstrukturen und lgorithmen 23/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 24/81
7 arstellung eines ungerichteten djazenzliste arstellung eines gerichteten djazenzliste djazenzmatrix Joost-Pieter Katoen atenstrukturen und lgorithmen 25/ djazenzmatrix Joost-Pieter Katoen atenstrukturen und lgorithmen 26/81 2 Repräsentation von 3 durchlauf reitensuche durchlauf 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen durchlauf durchlauf Viele lgorithmen, die wir später kennenlernen werden, untersuchen jeden Knoten (und jede Kante). s gibt verschiedene durchlaufstrategien (traversal strategies), die jeden Knoten (oder jede Kante) besuchen: reitensuche ies sind Verallgemeinerungen von Strategien zur aumtraversierung. a zyklisch sein können, müssen wir uns aber alle bereits gefundenen Knoten merken. Im olgenden nehmen wir die djazenzlisten-arstellung an. ann ist der Zeitaufwand von lgorithmen in O( V + ). Joost-Pieter Katoen atenstrukturen und lgorithmen 27/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 28/81
8 2 Repräsentation von 3 durchlauf reitensuche durchlauf 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen reitensuche durchlauf reitensuche (readth-irst Search, S) m nfang seien alle Knoten als nicht-gefunden (WHIT) markiert. ie zugrundeliegende Strategie ist: Markiere den aktuellen Knoten v als gefunden (RY). Suche gleichzeitig aus allen gefundenen Knoten weiter: Markiere alle ihrer noch nicht-gefundenen Nachfolger als gefunden und markiere die Knoten selbst als abgeschlossen (LK). Man erhält die Menge aller Knoten, die vom Startknoten aus erreichbar sind. Joost-Pieter Katoen atenstrukturen und lgorithmen 29/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 30/81 durchlauf durchlauf reitensuche: eispiel eginn der reitensuche rforsche alle folgenden nicht-gefundenen Knoten reitensuche: Implementierung 1 void S(List adj[n], int start, int &color[n]) { 2 Queue wait; // zu verarbeitende Knoten 3 color[start] = RY; // Knoten start ist noch zu verarbeiten 4 wait.enqueue(start); 5 while (!wait.ismpty()) {// es gibt noch unverarbeitete Knoten 6 int v = wait.dequeue(); // nächster unverarbeiteter Knoten 7 foreach (w in adj[v]) { 8 if (color[w] == WHIT) { // neuer ("ungefundener") Knoten 9 color[w] = RY; // w ist noch zu verarbeiten 10 wait.enqueue(w); 11 } 12 } 13 color[v] = LK; // v ist abgeschlossen 14 } 15 } rforsche alle folgenden nicht-gefundenen Knoten ertig! 17 void completes(list adj[n], int n) { 18 int color[n] = WHIT; // noch kein Knoten ist gefunden worden 19 for (int i = 0; i < n; i++) 20 if (color[i] == WHIT) S(adj, n, i, color); 21 } Joost-Pieter Katoen atenstrukturen und lgorithmen 31/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 32/81
9 durchlauf igenschaften der reitensuche Knoten werden in der Reihenfolge mit zunehmendem kürzesten bstand (Kantendistanz) vom Startknoten aus besucht. Nachdem alle Knoten mit bstand d verarbeitet wurden, werden die mit d + 1 angegangen. ie Suche terminiert, wenn in bstand d keine neuen Knoten auftreten. ie Tiefe des Knotens v im reitensuchbaum ist seine kürzeste Kantendistanz zum Startknoten. ie zu verarbeitenden Knoten werden als IO-Queue (first-in first-out) organisiert. Theorem (Komplexität der reitensuche) ie Zeitkomplexität ist O( V + ), der Platzbedarf Θ( V ). 2 Repräsentation von 3 durchlauf reitensuche durchlauf 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Joost-Pieter Katoen atenstrukturen und lgorithmen 33/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 34/81 durchlauf durchlauf : eispiel (epth-irst Search, S) m nfang seien alle Knoten als nicht-gefunden (WHIT) markiert. ie zugrundeliegende Strategie ist: Markiere den aktuellen Knoten v als gefunden (RY). Solange es noch eine Kante (v, u) mit nicht-gefundenem Nachfolger u gibt: Suche rekursiv von u aus, d. h.: rforsche Kante (u, w), besuche w, forsche von dort aus, bis es nicht mehr weiter geht. Markiere u als abgeschlossen (LK). acktracke von u nach v. eginn der rforsche einen Knoten Markiere v als abgeschlossen (LK). Man erhält wieder die Menge aller Knoten, die vom Startknoten aus erreichbar sind. rforsche einen Knoten Sackgasse! acktracke und erforsche den nächsten Knoten Joost-Pieter Katoen atenstrukturen und lgorithmen 35/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 36/81
10 durchlauf durchlauf : eispiel : eispiel Nächster Zustand wurde bereits gefunden acktracke und erforsche den nächsten Knoten Nächster Zustand wurde bereits gefunden acktracke und erforsche den nächsten Knoten wurde bereits gefunden acktracke und erforsche den nächsten Knoten rforsche den nächsten Knoten ist eine Sackgasse acktracke und erforsche den nächsten Knoten ist eine Sackgasse acktracke und erforsche den nächsten Knoten eide nächsten Knoten wurden bereits gefunden ertig! Joost-Pieter Katoen atenstrukturen und lgorithmen 37/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 38/81 : Implementierung durchlauf igenschaften der durchlauf 1 void S(List adj[n], int start, int &color[n]) { 2 color[start] = RY; // start ist noch zu verarbeiten 3 foreach (w in adj[start]) { 4 if (color[w] == WHIT) { // neuer ("ungefundener") Knoten 5 S(adj, w, color); 6 } 7 } 8 color[start] = LK; // start ist abgeschlossen 9 } 11 void completes(list adj[n], int n, int start) { 12 int color[n] = WHIT; // noch kein Knoten ist gefunden worden 13 for (int i = 0; i < n; i++) 14 if (color[i] == WHIT) S(adj, i, color); 15 } rforsche einen Pfad so weit wie möglich bevor backtracking. ie zu verarbeitenden Knoten werden in LIO-Reihenfolge (last-in first-out) geprüft. s gibt zwei Verarbeitungsmöglichkeiten für einen Knoten: 1. Wenn der Knoten entdeckt wird. 2. Wenn der Knoten als abgearbeitet markiert wird (und alle seine Nachfolger entdeckt werden). iese letztgenannte Möglichkeit macht beliebt. Theorem (Komplexität der ) Zeitkomplexität: O( V + ), Platzkomplexität: Θ( V ). Joost-Pieter Katoen atenstrukturen und lgorithmen 39/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 40/81
11 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Irrgärten as eben geschieht den Menschen, die in einem Irrgarten hastig werden: ben die ile führt immer tiefer in die Irre. [Lucius nnaeus Seneca (4 n. hr. 65 n. hr.)] Joost-Pieter Katoen atenstrukturen und lgorithmen 41/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 42/81 eschichte wurde bereits vor Jahrhunderten formal beschrieben als ein Verfahren zum urchqueren von Labyrinthen. Labyrinth als raph: Knoten: Stellen, an denen mehr als ein Weg gewählt werden kann Kanten: Wege zwischen Knoten ingang als spezieller Knoten start Ziel als spezieller Knoten target Joost-Pieter Katoen atenstrukturen und lgorithmen 43/81 rreichbarkeitsanalyse: S Implementierung 1 bool S(List adj[n], int start, int &color[n], 2 int target, List path) { 3 if (start == target){ 4 path.addtront(start); return true; 5 } 6 color[start] = RY; 7 foreach (w in adj[start]) { 8 if (color[w] == WHIT) { 9 if (S(adj, w, color, target, path)) { 10 path.addtront(start); return true; 11 } 12 } 13 } 14 color[start] = LK; 15 return false; 16 } 17 bool reach(list adj[n], int n, int start, int target, 18 List &path) { // path ist leer 19 int color[n] = WHIT; 20 return S(adj, start, color, target, path); 21 } Joost-Pieter Katoen atenstrukturen und lgorithmen 44/81
12 s in ungerichteten 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Zusammenhangskomponenten in ungerichteten Sei ein ungerichteter raph. heißt zusammenhängend (connected), wenn jeder Knoten von jedem anderen Knoten aus erreichbar ist. ine Zusammenhangskomponente (connected component, ) von ist ein maximaler (d.h. nicht erweiterbarer) zusammenhängender Teilgraph von. Joost-Pieter Katoen atenstrukturen und lgorithmen 45/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 46/81 s in ungerichteten s in ungerichteten Problem inde die Zusammenhangskomponenten (s) eines ungerichteten. Lösung inden des s eines Knotens v: Verwende Tiefen- oder reitensuche, um alle aus v erreichbaren Knoten zu bestimmen. ie Zeitkomplexität ist O( V + ). 1 void S(List adj[n], int start, int &color[n], 2 int leader, int &cc[n]) { 3 color[start] = RY; 4 foreach (next in adj[start]) 5 if (color[next] == WHIT) 6 S(adj, next, color, leader, cc); 7 color[start] = LK; 8 cc[start] = leader; // speichere das von start 9 } 11 void connomponents(list adj[n], int n, int &cc[n]) { 12 int color[n]= WHIT; 13 for (int v = 0; v < n; v++) 14 if (color[v] == WHIT) // weitere Komponente 15 S(adj, v, color, v, cc); 16 } // usgabe in cc: cc[v] = Komponente von Knoten v Joost-Pieter Katoen atenstrukturen und lgorithmen 47/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 48/81
13 Ss in gerichteten 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Zusammenhangskomponenten Sei ein gerichteter raph. heißt stark zusammenhängend (strongly connected), wenn jeder Knoten von jedem anderen aus erreichbar ist. ine starke Zusammenhangskomponente (strongly connected component, S) von ist ein maximaler (d.h., nicht erweiterbarer) stark zusammenhängender Teilgraph von. Joost-Pieter Katoen atenstrukturen und lgorithmen 49/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 50/81 Starke Zusammenhangskomponenten (Ss) Kondensationsgraph ie starken Zusammenhangskomponenten von induzieren den Kondensationsgraph. Kondensationsgraph in igraph und seine Ss. Sei = (V, ) ein gerichteter raph mit k Ss S i = (V i, i ) für 0 < i k. er Kondensationsgraph = (V, ) ist definiert als: V = { V 1,..., V k }. (V i, V j ) gdw. i j und es gibt (v, w) mit v V i und w V j. er Kondensationsgraph ist azyklisch. Joost-Pieter Katoen atenstrukturen und lgorithmen 51/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 52/81
14 Kondensationsgraph: eispiel Ss und Transponierung Transponieren er transponierte raph von = (V, ) ist T = (V, ) mit (v, w) gdw. (w, v). In T ist die Richtung der Kanten von gerade umgedreht. Lemma: eziehung zwischen und T in igraph und seine Kondensation. 1. ie Ss von und T sind die selben. 2. ie Kondensation und die Transposition kommutieren, d. h.: ( ) T = ( T ). Joost-Pieter Katoen atenstrukturen und lgorithmen 53/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 54/81 lgorithmus zum inden von Ss Kosaraju-Sharir lgorithmus findet Ss in zwei Phasen: 1. ühre ein S auf durch, wobei alle Knoten beim bschließen (d. h. wenn der Knoten LK gefärbt wird) auf einem Stack S gespeichert werden. 2. ärbe alle Knoten wieder WHIT. 3. Wiederhole solange S noch weiße Knoten enthält: Wähle den obersten noch weißen (Leiter-)Knoten v vom S. ühre S mit Startknoten v auf dem transponierten T aus und speichere für jeden besuchten Knoten den Leiterknoten v als Repräsentanten seines Ss. Leiter einer S in Knoten v heißt Leiter (leader), wenn er als letzter Knoten aus seinem S bei einer S LK gefärbt wird. Joost-Pieter Katoen atenstrukturen und lgorithmen 55/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 56/81
15 Joost-Pieter Katoen atenstrukturen und lgorithmen 57/81 1 void S1(List adj[n], int start, int &color[n], Stack &S) { 2 color[start] = RY; 3 foreach (w in adj[start]) 4 if (color[w] == WHIT) S1(adj, w, color, S); 5 color[start] = LK; S.push(start); 6 } 7 void S2(List adj[n], int start, int &color[n], int leader, 8 int &scc[n]) { 9 color[start] = RY; 10 foreach (w in adj[start]) 11 if (color[w] == WHIT) S2(adj, w, color, leader, scc); 12 color[start] = LK; scc[start] = leader; 13 } 14 void kosaraju-sharir(list adj[n], int n) { 15 int color[n] = WHIT; Stack S; int scc[n]; 16 for (int i = 0; i < n; i++) // Phase 1 17 if (color[i] == WHIT) S1(adj, i, color, S); 18 List adj_t = adj^t; // Transponiere 19 for (int i = 0; i < n; i++) color[i] = WHIT; // Phase 2 20 while (!S.empty()){ // Phase 3 21 int v = S.pop(); 22 if (color[v] == WHIT) S2(adj_T, v, color, v, scc); 23 } 24 } Joost-Pieter Katoen atenstrukturen und lgorithmen 58/81 Kosaraju-Sharir lgorithmus: eispiel Ursprünglicher igraph Stack am nde der Phase 1 Transponierter raph In Phase 2 gefundene starke Komponenten Joost-Pieter Katoen atenstrukturen und lgorithmen 59/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 60/81
16 Korrektheit Komplexität Zeitkomplexität ie Worst-ase Zeitkomplexität vom Kosaraju-Sharir lgorithmus zum inden von Ss in einem gerichteten ist in Θ( V + ). Seine Speicherkomplexität ist in Θ( V ). eweis ie S über und T benötigen jeweils Θ( V + ). er transponierte raph T kann in Θ( V + ) gebildet werden. er Stack benötigt Θ( V ) Speicher. Joost-Pieter Katoen atenstrukturen und lgorithmen 61/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 62/81 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Joost-Pieter Katoen atenstrukturen und lgorithmen 63/81 erichtete azyklische erichtete azyklische erichtete azyklische (directed acyclic graph, ) sind eine wichtige Klasse von : Viele Probleme lassen sich naturgemäß mit Hilfe von s formulieren. Scheduling: Vorranggraphen beschreiben, welche ufgaben erledigt sein müssen, bevor ein nachfolgender Schritt beginnen kann. in Zyklus in solch einem Vorranggraphen wäre ein eadlock. Viele Probleme haben auf s eine niedrigere Komplexität als auf igraphen. in entspricht einer partiellen Ordnung < auf den Knoten: ine Kante (v, w) besagt: v > w. a eine partielle Ordnung anti-symmetrisch ist, kann sie keinen Zyklus enthalten. Wir betrachten: Topologische Sortierung und Kritische-Pfad-nalyse. Joost-Pieter Katoen atenstrukturen und lgorithmen 64/81
17 Topologische Ordnung Topologische Ordnung Sei = (V, ) ein gerichteter raph mit n Knoten. ine topologische Ordnung von ist eine Zuordnung topo : V { 1,..., n }, so dass: für jede Kante (v, w) gilt: topo(v) > topo(w). topo(v) heißt der topologische Zahl von v. Lemma 1. ür einen igraph mit einem Zyklus existiert keine topologische Ordnung. 2. Jeder dagegen hat mindestens eine topologische Ordnung. Joost-Pieter Katoen atenstrukturen und lgorithmen 65/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 66/81 Topologische Sortierung: eispiel 1 Topologische Sortierung: eispiel 1 Quelle: Joost-Pieter Katoen atenstrukturen und lgorithmen 67/81 Quelle: Joost-Pieter Katoen atenstrukturen und lgorithmen 68/81
18 Topologische Sortierung: eispiel 2 H bhängigkeitsgraph I Nr ufgabe Hängt ab von choose clothes I dress, H eat breakfast,, leave, make coffee I make toast I pour juice I H shower I I wake up ibt es einen Schedule für dieses Problem?. h. kann man eine Reihenfolge finden, um alle ufgaben ausführen zu können? Topologische Sortierung: Implementierung 1 void S(List adj[n], int start, int &color[n], 2 int &toponum, int &topo[n]) { 3 color[start] = RY; 4 foreach (next in adj[start]) { 5 // if (color[next] == RY) throw "raph ist zyklisch"; 6 if (color[next] == WHIT) { 7 S(adj, next, color, toponum, topo); 8 } 9 } 10 topo[start] = ++toponum; 11 color[start] = LK; 12 } 14 // usgabe der topologischen Zahl von Knoten v in topo[v] 15 void toposort(list adj[n], int n, int &topo[n]) { 16 int color[n] = WHIT, toponum = 0; 17 for (int v = 0; v < n; v++) 18 if (color[v] == WHIT) 19 S(adj, v, color, toponum, topo); 20 } Joost-Pieter Katoen atenstrukturen und lgorithmen 69/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 70/81 Topologische Sortierung: rgebnis eispiel I H I H wake choose shower dress make make pour eat leave up clothes coffee toast juice breakf bhängigkeitsgraph, der topologischen Ordnung entsprechend gezeichnet. Joost-Pieter Katoen atenstrukturen und lgorithmen 71/81 Korrektheit und Komplexität Theorem er lgorithmus terminiert, und wenn er terminiert enthält das rray topo eine topologische Ordnung von igraph. eweis: 1. ie S besucht jeden Knoten, daher sind die Zahlen in dem rray topo alle verschieden im ereich 1 bis V. 2. Sei (v, w). w ist kein Vorgänger von v im S-aum, sonst wäre zyklisch. aher ist w LK, wenn topo[v] ein Wert zugewiesen wird. lso wurde topo[w] schon vorher ein Wert zugewiesen. a toponum immer größer wird, folgt topo[v] > topo[w]. Zeitkomplexität ine topologische Ordnung kann in O( V + ) bestimmt werden. Joost-Pieter Katoen atenstrukturen und lgorithmen 72/81
19 2 Repräsentation von 3 durchlauf reitensuche 4 rreichbarkeitsanalyse s in ungerichteten Ss in gerichteten Topologische Sortierung in gerichteten azyklischen Kritische-Pfad-nalyse in gewichteten gerichteten azyklischen Joost-Pieter Katoen atenstrukturen und lgorithmen 73/81 ewichtete Knotengewichteter raph in knotengewichteter raph ist ein Tripel (V,, W ), wobei: (V, ) ein gerichteter oder ungerichteter raph ist, und W : V IR ewichtsfunktion. W (v) ist das ewicht des Knotens v. Kantengewichteter raph in (kanten-)gewichteter raph ist ein Tripel (V,, W ), wobei: (V, ) ein gerichteter oder ungerichteter raph ist, und W : IR ewichtsfunktion. W (e) ist das ewicht der Kante e. in knotengewichteter raph (V,, W ) lässt sich in einen kantengewichteten (V,, W ) überführen, indem alle von einem Knoten v ausgehenden Kanten e = (v, ) das ewicht W (e) = W (v) erhalten. Joost-Pieter Katoen atenstrukturen und lgorithmen 74/81 ewichtete : arstellung ewichtete werden ebenso als djazenzlisten oder djazenzmatrix dargestellt: ei knotengewichteten wird die Zusatzinformation zu den Knoten üblicherweise in einem weiteren rray gespeichert vgl. int color[n]; bei S oder S. Kantengewichte können bei der djazenzmatrixdarstellung direkt in der Matrix gespeichert werden. in besonderer Wert, etwa besagt, dass keine Kante existiert. Joost-Pieter Katoen atenstrukturen und lgorithmen 75/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 76/81
20 as Kritische-Pfad-Problem: inführung as ewicht eines Pfades ist die Summe der Kantengewichten der besuchten Kanten, oder die Summe der Knotengewichte der besuchten Knoten. Kritischer-Pfad-Problem inde den längsten Pfad (bezogen auf das esamtgewicht) in einem (kanten- oder knoten-)gewichteten. Wir betrachten hier nur knotengewichtete s. eispiel (nwendung) Wie lange benötigt man für die usführung der bereits vorgestellten ufgaben mindestens, wenn für jede ufgabe eine auer gegeben ist und unabhängige ufgaben gleichzeitig erledigt werden können? as Kritische-Pfad-Problem: nwendung rüheste Startzeit- und ndzeitpunkt inde den frühestmöglichen eendigungszeitpunkt (earliest finish time, eft) für eine Menge voneinander abhängiger ufgaben. Jede ufgabe hat eine (nicht-negative) auer. er früheste Startzeitpunkt (earliest start time, est) für ufgabe v (est(v)) ist 0 wenn v keine bhängigkeiten hat; andernfalls: est(v) ist das Maximum der frühesten ndzeitpunkte seiner bhängigkeiten. er früheste ndzeitpunkt (earliest finish time) für ufgabe v (eft(v)) ist gleich est(v) plus der auer von v. Joost-Pieter Katoen atenstrukturen und lgorithmen 77/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 78/81 as Kritische-Pfad-Problem: nwendung Kritische Pfad er kritische Pfad ist eine olge von ufgaben v 0,..., v k, so dass v 0 keine bhängigkeiten hat. v i abhängig von v i 1 ist, wobei est(v i ) = eft(v i 1 ). eft(v k ) das Maximum über alle ufgaben ergibt. ann gibt es eine kritische bhängigkeit zwischen v i 1 und v i, d.h. eine Verzögerung in v i 1 führt zu einer Verzögerung in v i. Joost-Pieter Katoen atenstrukturen und lgorithmen 79/81 Kritische-Pfad-nalyse: Implementierung 1 // Knotengewichte in duration. 2 // usgabe: eft, kritischer Pfad kodiert in critep 3 void S(List adj[n], int start, int &color[n], 4 int duration[n], int &critep[n], int &eft[n]) { 5 color[start] = RY; critep[start] = -1; int est = 0; 6 foreach (next in adj[start]) { 7 if (color[next] == WHIT) 8 S(adj, next, color, duration, critep, eft); 9 if (eft[next] >= est) { 10 est = eft[next]; critep[start] = next; 11 } 12 } 13 eft[start] = est + duration[start]; 14 color[start] = LK; 15 } 16 void critpath(list adj[n], int n, 17 int duration[n], int &critep[n], int &eft[n]){ 18 int color[n] = WHIT; 19 for (int i = 0; i < n; i++) 20 if (color[i] == WHIT) 21 S(adj, i, color, duration, critep, eft); 22 } Joost-Pieter Katoen atenstrukturen und lgorithmen 80/81
21 Kritische-Pfad-nalyse: eispiel Kritische-Pfad-nalyse: eispiel fertig I H I H fertig I H wake choose shower dress make make pour eat leave up clothes coffee toast juice breakf auer I H wake choose shower dress make make pour eat leave up clothes coffee toast juice breakf auer eft = = 16. Joost-Pieter Katoen atenstrukturen und lgorithmen 81/81 Joost-Pieter Katoen atenstrukturen und lgorithmen 81/81
Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.
Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten
MehrHEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen
9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam
MehrAlgorithmen und Datenstrukturen
Prof. r. V. Linnemann Lübeck, den. Oktober 00 Universität zu Lübeck Institut für Informationssysteme lgorithmen und atenstrukturen Sommersemester 00. Klausur Lösungen Hinweis: chten Sie bei Programmieraufgaben
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche
MehrVorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?
MehrEinführung in (Binäre) Bäume
edeutung und Ziele inführung in (inäre) äume Marc Rennhard http://www.tik.ee.ethz.ch/~rennhard rennhard@tik.ee.ethz.ch äume gehören ganz allgemein zu den wichtigsten in der Informatik auftretenden atenstrukturen,
Mehr3. Musterlösung. Problem 1: Boruvka MST
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner. Musterlösung Problem : Boruvka MST pt (a) Beweis durch Widerspruch. Sei T MST von G, e die lokal minimale Kante eines
MehrGraphen: Datenstrukturen und Algorithmen
Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.
MehrBreiten- und Tiefensuche in Graphen
Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei
MehrAm Dienstag, den 16. Dezember, ist Eulenfest. 1/48
Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009
MehrKürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik
Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus
MehrAlgorithmen und Datenstrukturen Graphen - Einführung
Algorithmen und Datenstrukturen Graphen - Einführung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Definition / Eigenschaften Anwendungen Repräsentation
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Wdhlg.: Dijkstra-Algorithmus I Bestimmung der
MehrInformatik I WS 07/08 Tutorium 24
Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 3.2.07 astian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Organisatorisches / Review is zum 2.2 müssen alle Praxisaufgaben
MehrTechnische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung
MehrDas Briefträgerproblem
Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrSchaltungen von Widerständen
Schaltungen von Widerständen von Peter Nemec, Otto-ahn-ymnasium Saarbrücken, 004 ufgabe 1 Wie groß ist der elektrische Widerstand ges zwischen a) den Klemmen und, b) den Klemmen und, wenn alle Teilwiderstände
Mehr2. Repräsentationen von Graphen in Computern
2. Repräsentationen von Graphen in Computern Kapitelinhalt 2. Repräsentationen von Graphen in Computern Matrizen- und Listendarstellung von Graphen Berechnung der Anzahl der verschiedenen Kantenzüge zwischen
MehrAlgorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
MehrKapitel 4: Minimal spannende Bäume Gliederung der Vorlesung
Kapitel : Minimal spannende Bäume Gliederung der Vorlesung. Fallstudie Bipartite Graphen 2. Grundbegriffe. Elementare Graphalgorithmen und Anwendungen. Minimal spannende Bäume. Kürzeste Wege. Traveling
MehrInformatik 11 Kapitel 2 - Rekursive Datenstrukturen
Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange
Mehr8 Graphrepräsentation
Sanders / van Stee: Algorithmentechnik November, 7 1 8 Graphrepräsentation 1736 fragt L. Euler die folgende touristische Frage: Straßen- oder Computernetzwerke Zugverbindungen (Raum und Zeit) Soziale Netzwerke
Mehr183.579, SS2012 Übungsgruppen: Do., 14.6. Mi., 20.6.2012
VU Technische Grundlagen der Informatik Übung 8: Systemsoftware und Netzwerke 183.579, SS2012 Übungsgruppen: o., 14.6. Mi., 20.6.2012 ufgabe 1: Virtual Memory Zeichnen Sie ein System das Paging zur Speicherverwaltung
MehrModul N5 - Routing. Informatik erleben. Anwendung: http, smtp. Transport: TCP, UDP. Segment. Vermittlung: IP. Datagramm. Sicherung: Ethernet, PPP
N-Netze Modul - Routing eitrahmen 0 Minuten ielgruppe Sekundarstufe II Inhaltliche Voraussetzung keine, N4 von Vorteil Lehrziel Kennen lernen eines Routing-lgorithmus, sowie der Netzwerkschichten http://www.sxc.hu
MehrÜbersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)
Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter
MehrAus Knoten und Kanten, die Bezeichnungen haben können. Ein Graph, bei dem die Kanten Richtungen haben.
ormale Methoden der Informatik WS 2/2 Lehrstuhl für atenbanken und Künstliche Intelligenz ProfrrJRadermacher H Ünver T Rehfeld J ollinger 3 ufgabenblatt esprechung in den Tutorien vom 72 (ab Übungstermin)
MehrBabeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen
Mehr1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie
Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI
Mehr1 topologisches Sortieren
Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung
MehrWORKFLOW DESIGNDOKUMENT
Architectural Design WORKFLOW DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 2 Gruppe 86 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289] Gruppe 86 Seite
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University
MehrInformatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
MehrDatenstrukturen und Algorithmen
Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group
MehrGraphenalgorithmen und lineare Algebra Hand in Hand Vorlesung für den Bereich Diplom/Master Informatik
Vorlesung für den Bereich Diplom/Master Informatik Dozent: Juniorprof. Dr. Henning Meyerhenke PARALLELES RECHNEN INSTITUT FÜR THEORETISCHE INFORMATIK, FAKULTÄT FÜR INFORMATIK KIT Universität des Landes
MehrGraphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011
Graphen: Einführung Vorlesung Mathematische Strukturen Zum Ende der Vorlesung beschäftigen wir uns mit Graphen. Graphen sind netzartige Strukturen, bestehend aus Knoten und Kanten. Sommersemester 20 Prof.
MehrRouting Algorithmen. Begriffe, Definitionen
Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über
Mehr8 Diskrete Optimierung
8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von
MehrI.4 Warshall - Algorithmus
I.4 Warshall - lgorithmus er ijkstra - lgorithmus bietet eine relativ schnelle öglichkeit den minimalen Weg zwischen zwei Knoten in einem Graphen zu bestimmen. ei anderer bbruchbedingung erhält man auch
MehrEffiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume
Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen
Mehr8.4 Projektmanagement und Netzplantechnik
olie 96 Projektmanagement. rundlagen. Netzplantechnik (PM). PM-eispiel. Projektmanagement und Netzplantechnik. PM-Übungsbeispiel Literaturempfehlungen Schwarze,. (00): Projektmanagement mit Netzplantechnik,
MehrAlgorithmen und Datenstrukturen 2-2. Seminar -
Algorithmen und Datenstrukturen 2-2. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 2. Übungsserie: 3 Aufgaben, insgesamt 30 Punkte A4 Flußnetzwerk, Restgraphen
MehrCustomization (Zuschneiden)
Customization (Zuschneiden) Anpassen der (Graph)Datenstruktur an die Anwendung. I Ziel: schnell, kompakt. I benutze Entwurfsprinzip: make the common case fast I Listen vermeiden Mögliches Problem: Software-Engineering-Alptraum
MehrBinary Decision Diagrams (BDDs) 1
Handout 22.11.2011 Binary Decision Diagrams (BDDs) 1 Übersicht Es gibt viele verschiedene Möglichkeiten um Boole sche Funktionen zu repräsentieren (Boole sche Formeln, Minterme, Wahrheitstabellen, ). Manche
MehrRandomisierte Algorithmen
Randomisierte Algorithmen Randomisierte Algorithmen 7. Random Walks Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 43 Überblick Überblick Ein randomisierter
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 13 (18.6.2014) Binäre Suchbäume IV (Rot Schwarz Bäume) Algorithmen und Komplexität Rot Schwarz Bäume Ziel: Binäre Suchbäume, welche immer
MehrName: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.
Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie viele negative Zahlen (ohne 0) lassen sich im 4-Bit-Zweierkomplement darstellen?
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
MehrInstitut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
MehrKapitel MK:IV. IV. Modellieren mit Constraints
Kapitel MK:IV IV. Modellieren mit Constraints Einführung und frühe Systeme Konsistenz I Binarization Generate-and-Test Backtracking-basierte Verfahren Konsistenz II Konsistenzanalyse Weitere Analyseverfahren
Mehr4.2 Die Chomsky Normalform
4.2 Die Chomsky Normalform Für algorithmische Problemstellungen (z.b. das Wortproblem) aber auch für den Nachweis von Eigenschaften kontextfreier Sprachen ist es angenehm, von CFG in Normalformen auszugehen.
Mehr5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)
5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!
Mehr10 Graphenalgorithmen in Java
10.1 Implementierung eines gewichteten Graphen 10.2 Implementierung der Breitensuche 10.3 Implementierung der Tiefensuche 10 147 Teil X Graphalgorithmen in Java Überblick Implementierung eines gewichteten
MehrÜbersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.
Übersicht Datenstrukturen und Vorlesung 1: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet
MehrDynamische 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
MehrBinärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
MehrÜbung zur Vorlesung Algorithmische Geometrie
Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)
Mehr3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
Mehr1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie
Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen. Hashing 6. Algorithmische Geometrie 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI
MehrGrundlagen der Künstlichen Intelligenz
Grundlagen der Künstlichen Intelligenz 9. Klassische Suche: Baumsuche und Graphensuche Malte Helmert Universität Basel 13. März 2015 Klassische Suche: Überblick Kapitelüberblick klassische Suche: 5. 7.
MehrÜbungen zu Programmierung I - Blatt 8
Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail
MehrWiederholung zu Flüssen
Universität Konstanz Methoden der Netzwerkanalyse Fachbereich Informatik & Informationswissenschaft SS 2008 Prof. Dr. Ulrik Brandes / Melanie Badent Wiederholung zu Flüssen Wir untersuchen Flüsse in Netzwerken:
MehrGeordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
Mehr16. All Pairs Shortest Path (ASPS)
. All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e
MehrKombinatorische Optimierung
Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 1 Programm des
MehrDatenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Prioritätswarteschlangen Mariano Zelke Datenstrukturen 2/28 Der abstrakte Datentyp Prioritätswarteschlange : Füge Elemente (mit Prioritäten) ein und entferne
Mehr4 Greedy-Algorithmen (gierige Algorithmen)
Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine
MehrKonzepte der Informatik
Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens
Mehr10 Dynamische Programmierung
137 Dynamische Programmierung Das Prinzip der Dynamischen Programmierung wird häufig bei Fragestellungen auf Worten angewendet..1 Längste gemeinsame Teilfolge Wir betrachten Worte der rt w = a 1 a 2 a
MehrStruktur am Beispiel einer Liste
Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich
MehrInformatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum
lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum
MehrProgrammierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.
1 Programmierung 2 Dynamische Programmierung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 2 Übersicht Stammt aus den Zeiten als mit Programmierung
Mehr3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36
Mehr10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm
10. Kapitel (Teil1) BÄUME GRUNDLAGEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaCen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen
MehrEffiziente Algorithmen I
H 10. Präsenzaufgabenblatt, Wintersemester 2015/16 Übungstunde am 18.01.2015 Aufgabe Q Ein Reiseveranstalter besitzt ein Flugzeug, das maximal p Personen aufnehmen kann. Der Veranstalter bietet einen Flug
MehrAlgorithmik Funke/Bahrdt/Krumpe/Mendel/Seybold SS Übungsblatt 4
Algorithmik Funke/Bahrdt/Krumpe/Mendel/Seybold SS 2015 http://www.fmi.informatik.uni-stuttgart.de/alg Institut für Formale Methoden der Informatik Universität Stuttgart Übungsblatt 4 Punkte: 50 Problem
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes
MehrModerne Betriebssysteme
ndrew S. Tanenbaum Moderne etriebssysteme 2. überarbeitete uflage übersetzt von Prof. Dr. Uwe aumgarten Technische Universität München ein Imprint der Pearson Education Deutschland GmbH KPITEL 3 Deadlocks
Mehr13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
MehrTechnische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt
Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik Prof. Dr. A. Taraz, Dipl-Math. A. Würfl, Dipl-Math. S. König Weihnachtsblatt Aufgabe W.1 Untersuchen Sie nachstehenden
MehrC++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume
Fachbereich IV, Informatik Softwarepraktikum C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume Wintersemester 2004/2005 Dokumentation Algorithmen zur Lösung von MST - Problemen Nicolas
MehrVorlesung 3 MINIMALE SPANNBÄUME
Vorlesung 3 MINIMALE SPANNBÄUME 72 Aufgabe! Szenario: Sie arbeiten für eine Firma, die ein Neubaugebiet ans Netz (Wasser, Strom oder Kabel oder...) anschließt! Ziel: Alle Haushalte ans Netz bringen, dabei
MehrKlausur Datenstrukturen und Algorithmen SoSe 2012
Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Klausur Datenstrukturen und Algorithmen SoSe 2012 Vorname: Nachname: Studiengang (bitte genau einen
MehrElementargeometrie. Prof. Dr. Andreas Meister SS digital von: Frank Lieberknecht
Prof. Dr. Andreas Meister SS 2004 digital von: Frank Lieberknecht Geplanter Vorlesungsverlauf...1 Graphentheorie...1 Beispiel 1.1: (Königsberger Brückenproblem)... 1 Beispiel 1.2: (GEW - Problem)... 2
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,
MehrSeminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer
Seminar Werkzeuggestütze tze Softwareprüfung fung Slicing Sebastian Meyer Überblick Einführung und Begriffe Static Slicing Dynamic Slicing Erweiterte Slicing-Techniken Fazit 2 Was ist Slicing?? (I) Program
MehrBäume, Suchbäume und Hash-Tabellen
Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche
MehrDatenstruktur, die viele Operationen dynamischer Mengen unterstützt
Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)
MehrAbgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,
Mehr11.1 Grundlagen - Denitionen
11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die
MehrKapitel 6: Graphalgorithmen Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
MehrEine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
MehrUnterscheidung: Workflowsystem vs. Informationssystem
1. Vorwort 1.1. Gemeinsamkeiten Unterscheidung: Workflowsystem vs. Die Überschneidungsfläche zwischen Workflowsystem und ist die Domäne, also dass es darum geht, Varianten eines Dokuments schrittweise
MehrWas bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen
Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen aussagenlogischer Regeln: Wissensbasis (Kontextwissen): Formelmenge,
MehrSchwierige Probleme in der Informatik Informationen für die Lehrperson
Schwierige Probleme in der Informatik Informationen für die Lehrperson Thema, Adressaten,... Das Thema dieses Moduls sind NP-vollständige Probleme, also schwierige Probleme in der Informatik. GraphBench
MehrWiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
Mehr