Verteilte Systeme CS5001
|
|
- Rainer Auttenberg
- vor 5 Jahren
- Abrufe
Transkript
1 Verteilte Systeme CS5001 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Wellen- und Traversierungsalgorithmen
2 Verteilte Systeme Wellenalgorithmen Seite 2
3 Wellen-Algorithmen Wellen-Algorithmen Klasse von Algorithmen bei denen Nachrichten nach einem bestimmten Schema versendet werden derart, dass alle Knoten an der Berechnung teilnehmen Wellen-Algorithmen können eingesetzt werden für Broadcast Synchronisation der Knoten Bestimmte verteilte Berechnungen als Bestandteil komplexerer Algorithmen Seite 3
4 Wellen-Algorithmen Definition Wellen-Algorithmen Ein verteilter Algorithmus ist ein Wellen-Algorithmus wenn gilt: (1) Terminierung Jede Berechnung ist endlich (2) Entscheidung Jede Berechnung C enthält mindestens ein Entscheidungsereignis (3) Abhängigkeit In jeder Berechnung C geht jedem Entscheidungsereignis e kausal ein Ereignis f in jedem Prozess q P voraus: C : e C : e ist Entscheidung ( q P : f Cp f : f e ) Bemerkung Bei einem Wellenalgorithmus wird eine endliche Zahl von Nachrichten ausgetauscht und jedes (wichtige / entscheidende) Ereignis wird kausal von einem Ereignis in jedem Prozess beeinflusst. Da kausale Ketten über Nachrichten gehen, werden die Entscheidungen von einer Nachricht und damit eventuell von dem Zustand jedes Prozesses beeinflusst. Seite 4
5 Wellen-Algorithmen Definition Initiator / Nachfolger Initiator (Starter) Ein Prozess, der seinen Algorithmus spontan mit einem internen Ereignis oder einem SendeEreignis beginnt, ist ein Initiator. Nachfolger (Follower, Nicht-Initiator) Ein Prozess der seinen Algorithmus mit einem Empfangs-Ereignis beginnt ist ein Nachfolger. Definition zentralisiert / dezentralisiert Zentralisiert (single-source) Bei einem zentralisierten Wellenalgorithmus wird jede Berechnung von genau einen Initiator initiiert. (Es muss aber nicht jede Berechnung den gleichen Prozess als Initiator haben.) Dezentralisiert (multi-source) Bei einem dezentralisierten Wellenalgorithmus kann eine Teilmenge der Prozesse die Berechnung initiieren. Seite 5
6 Wellen-Algorithmen Ausführungskontext Topologie Ein Algorithmus kann an eine spezielle Topologie angepasst sein (Ring, Baum, Klicke (jeder kennt jeden), etc. oder für jede Topologie geeignet sein. Initiales Wissen Der Algorithmus kann voraussetzen, dass in jedem Knoten ein bestimmtes Wissen zur Verfügung steht Identität des Prozesses Identität der Nachbarn... etc.... Seite 6
7 Wellen-Algorithmen Eigenschaften von Wellenalgorithmen Vorgänger Jedem Ereignis geht ein Ereignis in einem Initiator voraus, oder es ist ein solches. e C Initia tor p f Cp : f e Spannbaum Jede Berechnung eines Wellenalgorithmus (jede Welle ) mit einem Initiator definiert einen Spannbaum des Netzes, bei dem der Weg zur Wurzel in jedem Prozess durch den Kanal definiert wird, über den die erste Nachricht kam: Sei C eine Welle mit einzigem Initiator p und für jeden Nicht-Initiator q sei fatherq der Nachbar von dem q die erste Nachricht empfangen hat. (Dieser Empfang ist per Definition das erste Ereignis in q.) Der Graph (P, ET) ist Spannbaum des Netzes mit Ausgangspunkt p mit E T ={(q, r ): q r r= father q Seite 7
8 Wellen-Algorithmen Eigenschaften von Wellenalgorithmen Senden vor Entscheiden Jedem Entscheidungs-Ereignis in einem Prozess p geht ein Sende-Ereignis in jedem anderen Prozess voraus. Sei C eine Welle und dp ein Entscheidungs-Ereignis in p dann gilt: q p : f C q :( f d p f ist SendeEreignis) Seite 8
9 Wellen-Algorithmen Raum-Zeit-Diagramm p1 p2 Entscheidung p3 Jedem Entscheidungs-Ereignis geht kausal ein Ereignis in jedem Prozess voraus. Seite 9
10 Wellen-Algorithmen Generizität und Verwendbarkeit von Wellenalgorithmen Wellenalgorithmen zur Lösung fundamentaler Aufgaben Zur Lösung der fundamentalen Aufgaben Broadcast Synchronisation Globale Infimum-Berechnungen können die gleichen Algorithmen verwendet werden. Fundamentale Algorithmen sind Wellenalgorithmen Jeder Algorithmus, der Lösung der fundamentalen Aufgaben Broadcast Synchronisation Globale Infimum-Berechnungen eingesetzt werden kann, ist ein Wellenalgorithmus. Seite 10
11 PIF und Wellen Das PIF-Problem PIF : Propagation of Information with Feedback Eine Teilmenge der Prozessoren in einem Netz kennt eine Nachricht M. Diese Nachricht muss an alle verteilt werden. Einige Prozesse müssen bemerken / darüber benachrichtigt werden, dass die Verbreitung der Nachricht abgeschlossen ist, dass also jeder Prozess M kennt. Der Algorithmus muss in endlicher Zeit terminieren. Bemerkung Die am Anfang informierten Prozesse sind Initiatoren. Das Erkennen des Endes / die Benachrichtigung über das Ende der Verbreitung der Nachricht M ist ein Entscheidungs-Ereignis. Seite 11
12 PIF und Wellen PIF ~ Wellenalgorithmen PIF ~> Wellenalgorithmus Jeder PIF-Algorithmus ist ein Wellen-Algorithmus. Wellenalgorithmus ~> PIF Jeder Wellenalgorithmus kann zur Lösung des PIF-Problems (d.h. als PIF-Algorithmus) eingesetzt werden. Seite 12
13 Synchronisation und Wellen Das Synchronisations-Problem Synchronisation In jedem Prozess q muss ein Ereignis stattfinden und in einem Prozess p muss bemerkt werden, dass dies geschehen ist. Das Ganz muss in endlicher Zeit erfolgen. Bemerkung Das Synchronisationsproblem tritt auf, wenn im Takt erfolgen sollen. Beispielsweise wenn eine Berechnung in Schritten erfolgt und der nächste Schritt erst begonnen werden darf, wenn alle Prozesse den vorherigen abgeschlossen haben. Die Erkennen des Endes eines Takts ist ein Entscheidungs-Ereignis. Seite 13
14 Synchronisation und Wellen Synchronisation ~ Wellenalgorithmen Synchronisation ~> Wellenalgorithmus Jeder Synchronisations-Algorithmus ist ein Wellen-Algorithmus. Wellenalgorithmus ~> Synchronisation Jeder Wellenalgorithmus kann als Synchronisation-Algorithmus eingesetzt werden. Seite 14
15 Infimum und Wellen Infimum Infimum / Supremum: (X, ) ist eine halbgeordnete Menge Infimum (untere Schranke) c = inf(a,b) falls c a, c b, d, d a, d b: d c Supremum (obere Schranke) c = sup(a,b) falls a c, b c, d, a d, b b: c d Wenn Infimum / Supremum immer existiert, dann ist es eindeutig und seine Berechnung ist eine kommutative und assoziative Funktion. Verband (engl. Lattice ~ Gitter) und Halbverband Ein Halbverband (semi-lattice) ist eine Halbordnung in der jedes Paar von Elementen ein Infimum hat Ein Verband ist eine halbgeordnete Menge, in der jedes Paar von Elementen ein Infimum und ein Supremum hat Seite 15
16 Infimum und Wellen Infimum Satz Falls ein binärer Operator in einer Menge X mit folgenden Eigenschaften ist: (1) ist kommutativ x x = y x (2) ist assoziativ x (x z) = (x y) z (3) ist idempotent a a = a dann gibt es eine Halbordnung H = (X, ), derart dass die Infimum-Funktion in H ist. Bemerkung Die GGT-Funktion auf natürlichen Zahlen hat die drei Eigenschaften. Was ist die Halbordnung die kleiner-relation, in der der GGT die Infimum-Funktion ist? Die Mengenvereinigung auf einer beliebigen endlichen Potenzmenge hat die drei Eigenschaften. Was ist die Halbordnung die kleiner-relation, in der die Vereinigung die Infimum-Funktion ist? Seite 16
17 Infimum und Wellen Infimum-Probleme Verteilte Berechnung des Infimums In jedem Prozess p liegt ein Ausgangswert vp vor. Dieser Wert ist ein Element einer halbgeordneten Menge X mit Infimum-Funktion inf. Der Wert inf({vp p ε P) muss berechnet werden und eine Teilmenge der Prozesse muss über das Ergebnis und das Ende der Berechnung informiert sein. Bemerkung Die Kenntnis des Endes der Berechnung und des Ergebnisses ist das Entscheidungsereignis. Seite 17
18 Infimum und Wellen Infimum ~ Wellenalgorithmen Infimum ~> Wellenalgorithmus Jeder Infimum-Algorithmus ist ein Wellen-Algorithmus. Wellenalgorithmus ~> Infimum Jeder Wellen-Algorithmus kann als Infimum-Algorithmus eingesetzt werden. Bemerkung PIF, Synchronisation und Infimum-Berechnungen sind verwandte Problemstellungen die mit äquivalenten Strategien gelöst werden können. Seite 18
19 Beispiele für Wellenalgorithmen Beispiele für Wellenalgorithmen 1. Ring-Algorithmus Zentralisierter Algorithmus Topologie: Ring Initiator: next!token previous?token decide Follower: previous?token next!token Seite 19
20 Beispiele für Wellenalgorithmen 2. Baum-Algorithmus / Version 1 Dezentraler Algorithmus Topologie: Baum, alle Kanäle bidirektional Informal: Der Algorithmus startet mit den Blättern als Initiatoren. Jeder Prozess sendet eine Nachricht (in Richtung Wurzel), wenn er von all seinen Nachbarn bis auf einen eine Nachricht empfangen hat. Das Entscheidungs-Ereignis wird ausgeführt wenn der Nachbar, der nicht informierte, informiert wurde. Initiator / Follower: var recp=false foreach neighbor q do // Blätter haben nur einen Nachbarn, übergehen also die Schleife! number of recq with recq == false > 1 => q?token recq = true od // Von einem Nachbar ist keine Nachricht gekommen: sende an ihn let q0 suchthat rec[q0] == false in q0!token q0?token rec[q0] == true decide Seite 20
21 Beispiele für Wellenalgorithmen 2. Baum-Algorithmus / Version 1 In Version 1 des Baum-Algorithmus' entscheiden einige Knoten, andere nicht. Die die nicht entscheiden, warten ewig auf die letzte Nachricht. Initiator / Follower: var recp=false foreach neighbor q do // Blätter haben nur einen Nachbarn, übergehen also die Schleife! number of recq with recq == false > 1 => q?token recq = true od // Von einem Nachbar ist keine Nachricht gekommen sende an ihn let q0 suchthat rec[q0] == false in q0!token q0?token rec[q0] == true decide Seite 21
22 Beispiele für Wellenalgorithmen 2. Baum-Algorithmus / Version 1 In Version 1 des Baum-Algorithmus' entscheiden einige Knoten, andere nicht. Die die nicht entscheiden warten auf ewig auf die letzte Nachricht. p q p und q entscheiden. Alle anderen warten für immer auf die letzte Nachricht. Seite 22
23 Beispiele für Wellenalgorithmen 2. Baum-Algorithmus / Version 2 Initiator / Follower: var recp=false foreach neighbor q do // Blätter haben nur einen Nachbarn, übergehen also die Schleife! number of recq with recq == false > 1 => q?token recq = true od // Von einem Nachbar ist keine Nachricht gekommen sende an ihn let q0 suchthat rec[q0] == true in q0!token rec[q0] == true q0?token decide // Informiere über die Entscheidung: foreach neighbor q q0 do q!token od Seite 23
24 Beispiele für Wellenalgorithmen 3. Echo-Algorithmus Zentralisierter Algorithmus (ein beliebiger Initiator) Topologie: beliebig, alle Kanäle bidirektional Follower Initiator var rec = 0 var father =? var rec = 0 foreach Neighbor q do q!token od do rec < numberof(neighbors) => q?token rec = rec+1 od decide father?token rec = rec+1 foreach Neighbor q father do q!token od do rec < numberof(neighbors) => q?token rec = rec+1 od father!token Segalls Echo-Algorithmus nach Adrian Segall:Distributed Network Protocols IEEE Transactions on Information Theory, 29, 1 Seite 24
25 Beispiele für Wellenalgorithmen Implementierung des Echo-Algorithmus' (1) import import import import import akka.actor.actor akka.actor.actorref akka.actor.actorsystem akka.actor.props scala.collection.mutable.arraybuffer class var var var sealed abstract class Msg case class Start(neighbors: List[ActorRef]) extends Msg case object Token extends Msg class EchoInitiator extends Actor { var neighbors : List[ActorRef] = List() var rec = 0 def receive = { case Start(n) => { neighbors = n for (q <- neighbors) { q! Token case Token => { rec = rec + 1 if (rec == neighbors.length) { println("decide") Seite 25 EchoFollower(nr: Int) extends Actor { neighbors : List[ActorRef] = List() rec = 0 father : Option[ActorRef] = None def receive = { case Start(n) => { neighbors = n case Token => { if (!father.isdefined) { father = Some(sender) for (q <- neighbors) { if (q!= father.get) { q! Token rec = rec + 1 if (rec == neighbors.length) { println("actor " + nr + " is ready") father.get! Token
26 Beispiele für Wellenalgorithmen Implementierung des Echo-Algorithmus' (2) object WaveExample extends App { val system = ActorSystem("EchoSystem") val actor: List[ActorRef] = Range(0,8).map( i => if (i == 0) system.actorof(props(new EchoInitiator), name = "actor_"+i) else system.actorof(props(new EchoFollower(i)), name = "actor_"+i)).tolist actor(0) actor(1) actor(2) actor(3) actor(4) actor(5) actor(6) actor(7)!!!!!!!! Start(List(actor(1))) Start(List(actor(0), actor(2), actor(6))) Start(List(actor(3), actor(4))) Start(List(actor(2), actor(6))) Start(List(actor(2), actor(5), actor(7))) Start(List(actor(4))) Start(List(actor(7), actor(1))) Start(List(actor(4), actor(6))) Seite 26
27 Beispiele für Wellenalgorithmen 3. Echo-Algorithmus Der Echo-Algorithmus konstruiert einen optimalen Spannbaum der vom Initiator ausgeht. Optimal: Die schnellsten Wege werden bevorzugt in den Spannbaum übernommen. erste Nachricht Echo langsamer Weg schneller Weg Initiator wartet noch auf Nachricht oder Echo X hat Echo gesendet Spannbaum wird Teil des Spannbaums werden Seite 27
28 Anwendung Wellenalgorithmen Anwendung Wellenalgorithmus: verteilte Berechnung der Schnittmenge Problem: Die Knoten p P eines Netzes mit unbekannter Topologie enthalten jeweils eine Teilmenge sp der natürlichen Zahlen N. Berechne die Schnittmenge S = { sp : p P Seite 28
29 Anwendung Wellenalgorithmen Anwendung Wellenalgorithmus : verteilte Berechnung der Schnittmenge Problem ist Infimum-Berechnung: Berechnung der Schnittmenge ist: kommutativ, assoziativ, idempotent ( ist die Teilmengenbeziehung) Topologie beliebig ~> Echo-Algorithmus Seite 29
30 Anwendung Wellenalgorithmen Anwendung Wellenalgorithmus : verteilte Berechnung der Schnittmenge Aufgabe: Implementierung als Variante des Echo-Algorithmus! Seite 30
31 Anwendung Wellenalgorithmen Implementierung verteilte Schnittmenge (1) import import import import import akka.actor.actor akka.actor.actorref akka.actor.actorsystem akka.actor.props scala.collection.immutable.listset sealed abstract class Msg case class Start(neighbors: List[ActorRef], init: ListSet[Int]) extends Msg case class Token(msg : Set[Int]) extends Msg class var var var Initiator extends Actor { neighbors : List[ActorRef] = List() set : ListSet[Int] = ListSet() rec = 0 def receive = { case Start(n, s) => { neighbors = n set = s for (q <- neighbors) { q! Token(set) case Token(s) => { rec = rec + 1 set = set & s if (rec == neighbors.length) { println("decide: " + set) Seite 31
32 Anwendung Wellenalgorithmen Implementierung verteilte Schnittmenge (2) class var var var var Follower(nr: Int) extends Actor { neighbors : List[ActorRef] = List() set : Set[Int] = Set() rec = 0 father : Option[ActorRef] = None def receive = { case Start(n, s) => { neighbors = n set = s case Token(s) => { set = set & s rec = rec + 1 if (!father.isdefined) { father = Some(sender) for (q <- neighbors) yield { if (q!= father.get) { q! Token(set) if (rec == neighbors.length) { father.get! Token(set) Seite 32
33 Anwendung Wellenalgorithmen Implementierung verteilte Schnittmenge (3) object SetCut extends App { val initiator = system.actorof(props[initiator], name = "initiator") val actor: List[ActorRef] = Range(0,8).map(i => if (i == 0) system.actorof(props(new EchoInitiator), name = "actor_"+i) else system.actorof(props(new Follower(i)), name = "actor_"+i)). tolist actor(1) actor(2) actor(3) actor(4) actor(5) actor(6) actor(7) actor(0)!!!!!!!! Start(List(actor(0), actor(2), actor(6)), Start(List(actor(3), actor(4)), Start(List(actor(2), actor(6)), Start(List(actor(2), actor(5), actor(7)), Start(List(actor(4)), Start(List(actor(7), actor(1)), Start(List(actor(4), actor(6)), Start(List(actor(1)), ListSet[Int](2,3,4,5)) ListSet[Int](3,4,5,6)) ListSet[Int](1,2,3,4)) ListSet[Int](3,4)) ListSet[Int](3)) ListSet[Int](3,4,6,7,8)) ListSet[Int](2,3)) ListSet[Int](1,2,3,4)) Seite 33
34 Anwendung Wellenalgorithmen Anwendung Wellenalgorithmus : verteilte Berechnung der Summe Aufgabe: Implementierung als Variante des Echo-Algorithmus! Warum funktioniert das (nicht)? Seite 34
35 Verteilte Systeme Traversierungs-Algorithmen Seite 35
36 Traversierungs-Algorithmen Traversierungs-Algorithmen Klasse von Algorithmen Spezialfall von Wellenalgorithmen bei deren Ausführung alle Prozesse in sequenzielle Folge besucht werden. Sequentielle Folge: Die Folge der Ereignisse ist total geordnet und das erste und das letzte Ereignis erfolgen im gleichen Prozess Zu jedem Zeitpunkt ist entweder gerade ein Prozess mit der Verarbeitung einer Nachricht beschäftigt, oder eine Nachricht ist gerade unterwegs D.h. Eine Marke / ein Token wandert deterministisch durch das Netz Seite 36
37 Traversierungs-Algorithmen Definition Traversierungs-Algorithmus Ein verteilter Algorithmus ist ein Traversierungs-Algorithmus wenn gilt: (1) In jeder Berechnung gibt es einen Initiator der den Algorithmus mit dem Versenden genau einer Nachricht beginnt. (2) Ein Prozess, der eine Nachricht empfängt, sendet entweder eine Nachricht oder entscheidet. (3) Der Algorithmus terminiert im Initiator und wenn dies geschieht, dann hat jeder Prozess mindestens eine Nachricht gesendet. Seite 37
38 Traversierungs-Algorithmen Beispiel Traversierungs-Algorithmus Der Ring-Algorithmus ist ein Traversierungs-Algorithmus. Initiator: next!token previous?token decide Follower: 6 previous?token next!token 4 5 Seite 38
39 Traversierungs-Algorithmen Definition Clique Ein vollständiger Graph, oder eine Clique, ist ein Graph bei dem jedes Knotenpaar durch eine Kante verbunden ist. Eine Clique kann mit dem sequentiellen Polling-Algorithmus traversiert werden. Dabei kontaktiert ( pollt ) der Initiator einen Nachbarn nach dem anderen. I F F F Seite 39
40 Traversierungs-Algorithmen Algorithmus Sequentielles Polling Traversierungs-Algorithmus Topologie: Clique Initiator: var rec=0 do rec < numberof(neighbors) => neighborrec+1!token neighborrec+1?token rec = rec+1 od decide 1 I F 2 3 F F Follower: q?token q!token Bemerkung Für weitere spezielle Topologien gibt es weitere spezielle Traversierungsalgorithmen. Seite 40
41 Traversierungs-Algorithmen Tarrys Algorithmus Traversierungs-Algorithmus Topologie: beliebig (Kanten bidirektional) Prinzip der Weitergabe des Tokens: Ein Prozess gibt das Token nie zweimal über den selben Kanal weiter Ein Prozess, der nicht der Initiator ist, gibt das Token niemals seinem Vorgänger /Vater (der Prozess, von der er das Token erhalten hat) bevor er es nicht jedem anderen Nachbarn gegeben hat. Bemerkung Jede Berechnung definiert einen Spannbaum mit dem Initiator als Wurzel und der Vorgänger/Vater definiert die Richtung zur Wurzel. Seite 41
42 Traversierungs-Algorithmen Tarrys Algorithmus (1) Initiator: var used[q] = false forall neighbors q chooseany neighbor q: used[q] = true q!token do q0?token => if forall neighbors q: used[q] = true then decide else od fi if thereis neighbor q suchthat not used[q] then chooseany neighbor q suchthat not used[q] in { used[q] = true q!token fi Seite 42
43 Traversierungs-Algorithmen Bemerkung Tarrys Algorithmus (2) G. Tarry: Le Problème des labyrinthes Nouvelles Annales de Mathématique, 14 (1894) Follower: var used[q] = false forall neighbors q var father =? do q0?token => if father = undefined then father = q0 fi if forall neighbors q: used[q] = true then decide else od fi if thereis neighbor q suchthat q father and not used[q] then chooseany neighbor q suchthat not q = father and not used[q] in { used[q] = true; q!token else used[father]=true; father!token fi Seite 43
44 Traversierungs-Algorithmen Tarrys Algorithmus Implementierung (1) import import import import akka.actor.actor akka.actor.actorref akka.actor.actorsystem akka.actor.props sealed abstract class Msg case class Start(neighbors: List[ActorRef]) extends Msg case object Token extends Msg class TarryInitiator extends Actor { var neighbors : List[ActorRef] = List() var unused : List[ActorRef] = List() def receive = { case Start(n) => { neighbors = n unused = n val q = unused(0) unused = unused.tail q! Token case Token => { if (unused.length == 0) { println("initiator decide") else { val q = unused(0) unused = unused.tail q!token Seite 44
45 Traversierungs-Algorithmen Tarrys Algorithmus Implementierung (2) class var var var TarryFollower(nr: Int) extends Actor { neighbors : List[ActorRef] = List() father : Option[ActorRef] = None unused : List[ActorRef] = List() def m(i:int) : Int = i+1 def receive = { case Start(n) => { neighbors = n unused = n case Token => { if (!father.isdefined) { father = Some(sender) if (unused.length == 0) { println("follower " + nr + " else { val q : Option[ActorRef] = if (q.isdefined) { unused = unused.filter(_ q.get! Token else { unused = unused.filter(_ father.get! Token decide!") unused.find(_!= father.get)!= q.get)!= father.get) Seite 45
46 Traversierungs-Algorithmen Tarrys Algorithmus Beispiel object Tarry extends App { val system = ActorSystem("TarrySystem") val actor: List[ActorRef] = Range(0,5).map(i => if (i == 0) system.actorof(props(new TarryInitiator), name = "actor_"+i) else system.actorof(props(new TarryFollower(i)), name = "actor_"+i)). tolist actor(1) actor(2) actor(3) actor(4) actor(0)!!!!! Start(List(actor(0), actor(2), actor(4))) Start(List(actor(1))) Start(List(actor(0), actor(4))) Start(List(actor(0), actor(1), actor(3))) Start(List(actor(4), actor(1), actor(3))) Weg des Tokens Rot: Nachricht zum Vorgänger 3 Seite Spannbaum definiert über die Vorgänger
47 Traversierungs-Algorithmen Tiefensuche (Depth-first Search) Traversierungs-Algorithmus Topologie: beliebig (Kanten bidirektional) Prinzip der Weitergabe des Tokens: Ein Prozess gibt das Token nie zweimal über den selben Kanal weiter Ein Prozess, der nicht der Initiator ist, gibt das Token niemals seinem Vorgänger /Vater (der Prozess, von der er das Token erhalten hat) bevor er es nicht jedem anderen Nachbarn gegeben hat. Ein Prozess gibt das Token an den Prozess von dem er es erhalten hat, falls dies nicht den anderen Prinzipien widerspricht. Bemerkung Der Algorithmus ist eine Spezialisierung von Tarrys Algorithmus. Seite 47
48 Traversierungs-Algorithmen Tiefensuche (Depth-first Search) (1) Initiator: var used[q] = false forall neighbors q chooseany neighbor q: used[q] = true q!token do q0?token => if forall neighbors q: used[q] = true then decide else od fi if thereis neighbor q suchthat not used[q] then if not used[q0] then q = p0 else q = chooseany neighbor suchthat not used[q] fi used[q] = true q!token fi Seite 48
49 Traversierungs-Algorithmen Tiefensuche (Depth-first Search) (2) Follower: var used[q] = false var father = undefined do q0?token => if father = undefined then father = q0 fi if forall neighbors q: used[q] = true then decide od else if thereis neighbor q suchthat q father and not used[q] then if not used[q0] and not q0 = father then q = p0 else q = chooseany neighbor suchthat not used[q] and not q = father fi used[q] = true; q!token else used[father]=true; father!token fi Seite 49 Unterschied zu Tarrys Algor.: Das Token wird bevorzugt zurück gesendet.
50 Wellen- und Traversierungs-Algorithmen Quellen-Hinweis Diese Folien basieren im Wesentlichen* auf : Kapitel 6, Abschnitt 1 3 in: G. Tel: Introduction to Distributed Algorithms Cambridge University Press, 2te Auflage, erster Nachdruck 2001 *Die Notation der Algorithmen wurde mit dem Ziel der verbesserten Verständlichkeit leicht modifiziert. Seite 50
Verteilte Algorithmen TI5005
Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Wellen- und Traversierungsalgorithmen Wellen-Algorithmen Wellen-Algorithmen Wellen-Algorithmen: Eine Klasse
MehrProf. Dr. Th. Letschert CS5001. Verteilte Systeme. Master of Science (Informatik) - asynchrone Algorithmen - Th Letschert FH Gießen-Friedberg
Prof. Dr. Th. Letschert CS5001 Master of Science (Informatik) - asynchrone Algorithmen - Th Letschert FH Gießen-Friedberg Modelle verteilter Berechnungen : asynchrone Algorithmen 2 Beispiel: GGT-Algorithmus
MehrVerteilte Algorithmen TI5005
Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Prozess-Netze mit Aktoren Produzent / Konsument / Pipeline Client-Server Abstraktion der Partner Produzent
MehrEin weiteres Beispielproblem: Der aufgesetzte Backtrack-Algorithmus Paralleles Lösen von "Zahlenrätseln" LONGER LARGER MIDDLE
Ein weiteres Beispielproblem: Paralleles Lösen von "Zahlenrätseln" LONGER 207563 + LARGER + 283563 MIDDLE 491126 Pro Spalte ein Prozess Der aufgesetzte Backtrack-Algorithmus Abwechselnd: Parallele Constraint-Propagation-
MehrWahlalgorithmen auf beliebigen Netzstrukturen. Verteilte Algorithmen (VA), WS 2003/04 43
Wahlalgorithmen Überblick/Problemstellung Wahlalgorithmen auf Ringstrukturen Beispiel TokenRing Wahlalgorithmen auf Baumstrukturen Wahlalgorithmen auf beliebigen Netzstrukturen Verteilte Algorithmen (VA),
MehrProgrammierkurs Python II
Programmierkurs Python II Michaela Regneri & Stefan Thater FR 4.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 2011 Prüfungsleistungen Klausur am Semesterende -
MehrGlobaler ggt-beobachter?
Berechnungsablauf und Zeitdiagramm Globale Sicht Globaler ggt-beobachter? 108 Pythagoras Aristoteles Euklid 108 76 12 36 12 4 4 4 76 12 36 Beobachter 60 Archimedes 60 24 12 4 P1 Thales 36 12 4 tempus fugit
MehrNebenläufige und verteilte Programme CS2301
Nebenläufige und verteilte Programme CS2301 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Netze mit aktiven und reaktiven Knoten Produzent Konsument: aktiv / passiv / reaktiv
MehrMotivation. Überblick. Motivation. Sequentielle Verfahren
Überblick Motivation Wahlalgorithmen Motivation Grundlagen Chang-Roberts-Algorithmus Wellenverfahren Adoptionsverfahren Problem: Wahl eines Anführerknotens szenarien Koordinierung verteilter Aktionen Erzeugung
MehrErste Beispiele für verteilte Algorithmen
Erste Beispiele für verteilte Algorithmen Ein erster verteilter Algorithmus: Verteilte Berechnung des ggt Fünf in Raum und Zeit verteilte griechische Philosophen wollen zusammen den grössten gemeinsamen
MehrProgramm 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
MehrAlgorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016
Algorithmen und Datenstrukturen 2 Übung 1 Stefan Florian Palkovits, BSc 0926364 e0926364@student.tuwien.ac.at 12. Juni 2016 Aufgabe 1: Es existiert eine Reduktion von Problem A auf Problem B in O(n 3 +
MehrDiskrete Strukturen Kapitel 2: Grundlagen (Relationen)
WS 2016/17 Diskrete Strukturen Kapitel 2: Grundlagen (Relationen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16
MehrDatenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen
Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet
MehrVerteilte Systeme. Graphenalgorithmen. Secure Identity Research Group
Verteilte Systeme Graphenalgorithmen Allgemeine Netzwerke Reale Computernetze sind meist keine Ringe Beliebige Netze lassen sich als Graph modellieren:g=(v,e) Knoten V (Prozessen, Stationen) Kanten E (Kanälen,
MehrToken-Request-basierte Algorithmen. Die Token-Ring-Lösung. - Token soll nicht dauernd nutzlos unterwegs sein
Die Token-Ring-Lösung Token-Request-basierte Algorithmen Token kreist ständig - Token soll nicht dauernd nutzlos unterwegs sein - Token wandert nur bei Bedarf - Grundidee: "Token zu mir" an alle (?) anderen
MehrBreitensuche BFS (Breadth First Search)
Breitensuche BFS (Breadth First Search) Algorithmus BREITENSUCHE EINGABE: G = (V, E) als Adjazenzliste, Startknoten s V 1 Für alle v V 1 If (v = s) then d[v] 0 else d[v] ; 2 pred[v] nil; 2 Q new Queue;
Mehr5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)
5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS) Sommersemester 2009 Dr. Carsten Sinz, Universität Karlsruhe Datenstruktur BDD 2 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer:
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 16 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Fragen zum zweiten Übungsblatt? 2. Vorbesprechung des dritten Übungsblatts 3. Beispielaufgaben
MehrDefinition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.
3.5 Gerichteter Pfad Definition 291 Eine Folge (u 0, u 1,..., u n ) mit u i V für i = 0,..., n heißt gerichteter Pfad, wenn ( i {0,..., n 1} ) [ (u i, u i+1 ) A]. Ein gerichteter Pfad heißt einfach, falls
MehrMathematische Grundlagen der Computerlinguistik Ordnungsrelationen
Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen Dozentin: Wiebke Petersen 4. Foliensatz Wiebke Petersen math. Grundlagen 89 starke / schwache Ordnungen Eine Ordnung R einer Menge A ist
MehrInhalt. Organisatorisches. Verteilte Algorithmen Überblick 4. Verteilte Systeme. Formales Modell Algorithmus
1 2 Organisatorisches Inhalt Webseite zur Vorlesung: /teaching/ss_05/algosens/ Folien zur Vorlesung und Übung (soweit verfügbar) Übungsblätter Referenzen auf weiterführende Literatur Ankündigungen zur
MehrWS 2013/14. Diskrete Strukturen
WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws13/14
MehrWie wird ein Graph dargestellt?
Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet
MehrOrdnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen
Ordnungsrelationen auf Mengen! Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =
MehrOrdnungsrelationen auf Mengen
Ordnungsrelationen auf Mengen Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =
MehrAlgorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. C5.1 Einführung. C5.2 Grundlagen
C. Kürzeste Pfade: Grundlagen C. Kürzeste Pfade: Grundlagen C. Einführung Gabriele Röger C. Grundlagen Universität Basel C. Optimalitätskriterium und Generisches Verfahren G. Röger (Universität Basel)
MehrDefinition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.
Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.
MehrAlgorithmen und Datenstrukturen Tutorium Übungsaufgaben
Algorithmen und Datenstrukturen Tutorium Übungsaufgaben AlgoDat - Übungsaufgaben 1 1 Landau-Notation Aufgabe Lösung 2 Rekurrenzen Aufgabe 3 Algorithmenentwurf und -analyse Aufgabe AlgoDat - Übungsaufgaben
MehrHeute. Medium Access Control / Färbungen, Teil 2. Kapazität & Scheduling. kurze Wiederholung Schöner verteilter Färbungsalgorithmus
Heute Medium Access Control / Färbungen, Teil kurze Wiederholung Schöner verteilter Färbungsalgorithmus Kapazität & Scheduling Interferenz etwas realistischer neue Probleme und Herangehensweisen VL 0 Eine
MehrAlgorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od
Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od Diskrete Strukturen 3.7 dag 473/556 3.8 Zusammenhang Definition
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen C. Kürzeste Pfade: Grundlagen Gabriele Röger Universität Basel 9. Mai 09 Graphen: Übersicht Repräsentation Exploration Graphen Exploration: Anwendungen Minimale Spannbäume
MehrInformatik 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,
MehrEinfü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?
MehrEinführung in die Informatik 2
Einführung in die nformatik 2 raphenexploration Sven Kosub A Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester
MehrMatchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)
Praktikum Diskrete Optimierung (Teil 5) 6.05.009 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen
MehrVerteilte Systeme. Synchronisation II. Prof. Dr. Oliver Haase
Verteilte Systeme Synchronisation II Prof. Dr. Oliver Haase 1 Überblick Synchronisation 1 Zeit in verteilten Systemen Verfahren zum gegenseitigen Ausschluss Synchronisation 2 Globale Zustände Wahlalgorithmen
MehrAlgorithmen & 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
Mehr3.3 Der Seitenverband
Diskrete Geometrie (Version 3) 10. Januar 2012 c Rudolf Scharlau 217 3.3 Der Seitenverband Wir setzen die Untersuchung der Relation ist Seite von auf der Menge aller konvexen Polytope in einem gegebenen
MehrAuswahlaxiom, Zornsches Lemma und Wohlordnungssatz. 14.Oktober 97
Auswahlaxiom, Zornsches Lemma und Wohlordnungssatz Uwe Liebe Sven Hermann 14.Oktober 97 Inhaltsverzeichnis 1 Einleitung 3 2 Auswahlaxiom 4 3 Ordnung 5 4 Zornsches Lemma 9 5 Wohlordnungssatz 11 6 Zurück
MehrDefinition 14 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:
2.1.2 Rot-Schwarz-Bäume Definition 14 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt: 1 alle Blätter hängen an schwarzen Kanten
MehrClausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.
lausthal Informatik II Bäume. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Beispiele Stammbaum. Zachmann Informatik 2 - SS 06 Bäume 2 Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy
MehrRechnernetze und verteilte Systeme (BSRvS II)
Rechnernetze und verteilte Systeme (BSRvS II) P1 P2 Pn Datennetz Allgemein Atommodell Echo Vertreterauswahl Maximumsuche Schnappschuss Kausale Abhängigkeit Prof. Dr. Heiko Krumm FB Informatik, LS IV, AG
MehrMathematische Grundlagen der Computerlinguistik Ordnungsrelationen
Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen Dozentin: Wiebke Petersen 4. Foliensatz Wiebke Petersen math. Grundlagen 86 starke / schwache Ordnungen Eine Ordnung R einer Menge A ist
Mehr3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr
3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:
Mehr(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.
(a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,
MehrKapitel IV Minimale Spannbäume
Kapitel IV Minimale Spannbäume 1. Grundlagen Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten.
MehrHeute. Algorithmen für Ad-hoc- und Sensornetze. Erinnerung: MAC-Layer. Erinnerung: Färbungen. Definition
Heute Algorithmen für Ad-hoc- und Sensornetze VL 0 Eine kurze Geschichte vom Färben (Teil ) Medium Access Control / Färbungen, Teil kurze Wiederholung Schöner verteilter Färbungsalgorithmus Markus Völker
MehrAlgorithmische Bioinformatik 1
Algorithmische Bioinformatik 1 Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2009 Übersicht Algorithmen
MehrMathematik für Informatiker 1 Tutorium
Mathematik für Informatiker 1 Tutorium Malte Isberner 9.1.2014 M. Isberner MafI1-Tutorium 9.1.2014 1 / 12 Thema heute Thema heute: Verbände M. Isberner MafI1-Tutorium 9.1.2014 2 / 12 Verbände Was ist ein
MehrAlgorithmen und Datenstrukturen 2-1. Seminar -
Algorithmen und Datenstrukturen 2-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 1. Übungsserie: 3 Aufgaben, insgesamt 30 28 Punkte A1 Spannbäume (10 8
MehrVery simple methods for all pairs network flow analysis
Very simple methods for all pairs network flow analysis obias Ludes 0.0.0. Einführung Um den maximalen Flusswert zwischen allen Knoten eines ungerichteten Graphen zu berechnen sind nach Gomory und Hu nur
MehrVerteilte Systeme. Diffusionsalgorithmen. Secure Identity Research Group
Verteilte Systeme Diffusionsalgorithmen Diffusionsalgorithmen Definition: Ein verteilter Diffusionsalgorithmus auf einem Beliebigen Graphen startet in einem Zustand, in dem alle Knoten des Graphen idle
MehrVorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Verteilte Systeme, Sommersemester 1999 Folie 7.2
Verteilte Systeme 7. Verteilter wechselseitiger Ausschluß Inhalt I. Was ist wechselseitiger Ausschluß II. Wechselseitiger Ausschluß mit State-Variablen III. Wechselseitiger Ausschluß mit Nachrichten Verteilte
MehrTraversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS, V. April 0 / P.F. Stadler & S. Will (Bioinf, Uni LE) ADS, V. April 0 / Traversierung ADS: Algorithmen und Datenstrukturen Teil Prof. Peter F. Stadler & Sebastian
MehrLayout-Synthese - Globale Verdrahtung Peter Marwedel
12 Layout-Synthese - Globale Verdrahtung Peter Marwedel Universität Dortmund, Informatik 12 2008/07/05 Globale Verdrahtung, Allgemeines zur Verdrahtung 12, 2008-2- Bäume 12, 2008-3- Steiner-Bäume Def.:
MehrÜbersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (4) Eine untere Schranke für den Platzbedarf
Übersicht Komplexitätsresultate Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Synchronisation (4) Drei Komplexitätsresultate Eine genaue Schranke für den Platzbedarf
MehrFerienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie
Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Dipl-Math. Wolfgang Kinzner 2.4.2012 Kapitel 1: Grundlagen der algorithmischen Graphgentheorie
Mehrlässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens
Praktikum Algorithmen-Entwurf (Teil 5)..5 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen Endpunkt
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /
MehrWellenalgorithmen. Wellenalgorithmen. Häufige Probleme bei verteilten Algorithmen / Systemen:
Wellenalgorithmen Wellenalgorithmen Häufige Probleme bei verteilten Algorithmen / Systemen: - Broadcast einer Information Trennung von Phasen - Globale Synchronisation zwischen Prozessen - Triggern eines
MehrWechselseitiger Ausschluss in verteilten Systemen / Elektionsalgorithmen. Özden Urganci Ulf Sigmund Ömer Ekinci
Wechselseitiger Ausschluss in verteilten Systemen / Elektionsalgorithmen Özden Urganci Ulf Sigmund Ömer Ekinci Inhaltsangabe 1 Einleitung 2 Prinzipien des verteilten wechselseitigen Ausschlusses 2.1 Anforderungen
MehrAlgorithmen für eingebettete Systeme
Algorithmen für eingebettete Systeme 3. Wechselseitiger Ausschluss Sommersemester 0 Folien zur Vorlesung von Dr. Mathias Pacher Inhalt 3.. Motivation und Anforderungen 3.. Broadcast-Algorithmus 3.3. Verbesserter
MehrGeordnete Mengen. Eine Relation R A A heißt Ordnung oder Ordnungsrelation, wenn sie reflexiv, transitiv und antisymmetrisch ist.
Mathematik I für Informatiker Ordnungsrelationen p. 1 Geordnete Mengen Eine Relation R A A heißt Ordnung oder Ordnungsrelation, wenn sie reflexiv, transitiv und antisymmetrisch ist. Ist R eine Ordnungsrelation
MehrInformatik 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,
MehrOrdnungsrelationen auf Mengen
Ordnungsrelationen auf Mengen Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =
Mehr\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.
Das Komplement Ḡ = (V, ( V ) \ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E. Ein Graph H = (V, E )
MehrRelationen und DAGs, starker Zusammenhang
Relationen und DAGs, starker Zusammenhang Anmerkung: Sei D = (V, E). Dann ist A V V eine Relation auf V. Sei andererseits R S S eine Relation auf S. Dann definiert D = (S, R) einen DAG. D.h. DAGs sind
MehrLösungen zu Kapitel 5
Lösungen zu Kapitel 5 Lösung zu Aufgabe : (a) Es gibt derartige Graphen: (b) Offensichtlich besitzen 0 der Graphen einen solchen Teilgraphen. Lösung zu Aufgabe : Es sei G = (V, E) zusammenhängend und V
MehrADS: 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,
Mehr2.4 Starke Zusammenhangskomponenten in Digraphen
Starke Zusammenhangskomponenten Einleitung 2.4 Starke Zusammenhangskomponenten in Digraphen Definition 2.4.1 Zwei Knoten v und w in einem Digraphen G heißen äquivalent, wenn v w und w v gilt. Notation:
MehrVerkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2013/14 Relationalstrukturen 59 Definition Sei A eine nichtleere Menge, R ist eine k-stellige
MehrLö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
MehrWeiterführendes Programmieren Lineare Widerstandsnetzwerke II Aufgabenblatt 6. 1 Zusammenfassung der elektrotechnischen Begriffe
Institut für Wissenschaftliches Rechnen Technische Universität Braunschweig Prof. Hermann G. Matthies, Ph. D. Dr. Elmar Zander Wintersemester 2013/14 14. November 2014 Weiterführendes Programmieren Lineare
MehrDefinition 15 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:
2.2 Rot-Schwarz-Bäume Definition 15 Rot-Schwarz-Bäume sind externe Binäräume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt: 1 alle Blätter hängen an schwarzen Kanten (durchgezogene
MehrVorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. 9. Verteilte Algorithmen
Vorlesung "Verteilte Systeme" Sommersemester 999 Verteilte Systeme 9. Verteilte Algorithmen Bereits behandelte Bereiche Logische Uhren Keine globale Uhrensynchronisation möglich (Theorie) Kausalitätserhaltender
MehrSandro 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
MehrLernmodul 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
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine
MehrDer Dreyfus-Wagner Algorithmus für das Steiner Baum Problem
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner
MehrInformatik II, SS 2016
Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 13 (8.6.2016) Graphenalgorithmen I Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise
MehrWS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
MehrGrundlagen verteilter Systeme
Universität Augsburg Institut für Informatik Prof. Dr. Bernhard Bauer Stephan Roser Viviane Schöbel Aufgabe 1: Wintersemester 07/08 Übungsblatt 6 15.01.08 Grundlagen verteilter Systeme Lösungsvorschlag
Mehr12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure
. Der Algorithmus von Dijkstra Informatik II für Verkehrsingenieure Problemstellung Gegeben: Graph G =(V, E, len) mit positiver Kantenfunktion len : E! R 0, Knoten s, t V Mögliche Aufgaben Berechne Distanz
Mehr5 Zwei spieltheoretische Aspekte
5 Zwei spieltheoretische Aspekte In diesem Kapitel wollen wir uns mit dem algorithmischen Problem beschäftigen, sogenannte Und-Oder-Bäume (kurz UOB) auszuwerten. Sie sind ein Spezialfall von Spielbäumen,
Mehr4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als
Kapitel 4 Bäume 4.1 Bäume, Datenstrukturen und Algorithmen Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als eine Menge von Knoten und eine Menge von zugehörigen
Mehr10.1 Motivation. Beispiel: verbundene Geldkonten. Beispiel: verbundene Geldkonten (Forts.)
Verteilte Betriebssysteme Wintersemester 28/29 Verteilte Betriebssysteme. Kapitel Globaler Zustand Prof. Matthias Werner Professur Betriebssysteme Mitunter ist der globale verteilte Zustand einer verteilten
MehrVoronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK
Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :
MehrÜberführung regulärer Ausdrücke in endliche Automaten. Der Algorithmus von Glushkov und McNaughton/Yamada
Überführung regulärer Ausdrücke in endliche Automaten Der Algorithmus von Glushkov und McNaughton/Yamada Karin Haenelt 14.5.2010 1 Inhalt Quelle Prinzip des Algorithmus Algorithmus Parsing des regulären
MehrAusdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI
Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen
MehrAlgorithmische Methoden zur Netzwerkanalyse
Algorithmische Methoden zur Netzwerkanalyse Prof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Die Forschungsuniversität Meyerhenke, in der Institut für Theoretische Informatik
MehrKapitel IV Minimale Spannbäume
Kapitel IV Minimale Spannbäume. Grundlagen Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten.
Mehr1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie
1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie WS 11/12 155 Überblick Zunächst einmal definieren wir formal den Begriff
MehrVerteilte Algorithmen TI5005
Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Modelle und Notationen Systeme, Anwendungen, Algorithmen Verteiltes System Ein verteiltes System besteht
Mehr