Verteilte Systeme CS5001

Größe: px
Ab Seite anzeigen:

Download "Verteilte Systeme CS5001"

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 Verteilte Algorithmen TI5005 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Wellen- und Traversierungsalgorithmen Wellen-Algorithmen Wellen-Algorithmen Wellen-Algorithmen: Eine Klasse

Mehr

Prof. Dr. Th. Letschert CS5001. Verteilte Systeme. Master of Science (Informatik) - asynchrone Algorithmen - Th Letschert FH Gießen-Friedberg

Prof. 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

Mehr

Verteilte Algorithmen TI5005

Verteilte 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

Mehr

Ein weiteres Beispielproblem: Der aufgesetzte Backtrack-Algorithmus Paralleles Lösen von "Zahlenrätseln" LONGER LARGER MIDDLE

Ein 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-

Mehr

Wahlalgorithmen auf beliebigen Netzstrukturen. Verteilte Algorithmen (VA), WS 2003/04 43

Wahlalgorithmen 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),

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Michaela Regneri & Stefan Thater FR 4.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 2011 Prüfungsleistungen Klausur am Semesterende -

Mehr

Globaler ggt-beobachter?

Globaler 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

Mehr

Nebenläufige und verteilte Programme CS2301

Nebenlä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

Mehr

Motivation. Überblick. Motivation. Sequentielle Verfahren

Motivation. Überblick. Motivation. Sequentielle Verfahren Überblick Motivation Wahlalgorithmen Motivation Grundlagen Chang-Roberts-Algorithmus Wellenverfahren Adoptionsverfahren Problem: Wahl eines Anführerknotens szenarien Koordinierung verteilter Aktionen Erzeugung

Mehr

Erste Beispiele für verteilte Algorithmen

Erste 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

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

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

Algorithmen 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 +

Mehr

Diskrete Strukturen Kapitel 2: Grundlagen (Relationen)

Diskrete 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

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Verteilte Systeme. Graphenalgorithmen. Secure Identity Research Group

Verteilte 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,

Mehr

Token-Request-basierte Algorithmen. Die Token-Ring-Lösung. - Token soll nicht dauernd nutzlos unterwegs sein

Token-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

Mehr

Breitensuche BFS (Breadth First Search)

Breitensuche 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;

Mehr

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)

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

Mehr

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Definition 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

Mehr

Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen

Mathematische 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

Mehr

Inhalt. Organisatorisches. Verteilte Algorithmen Überblick 4. Verteilte Systeme. Formales Modell Algorithmus

Inhalt. 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

Mehr

WS 2013/14. Diskrete Strukturen

WS 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

Mehr

Wie wird ein Graph dargestellt?

Wie 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

Mehr

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen

Ordnungsrelationen 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 =

Mehr

Ordnungsrelationen auf Mengen

Ordnungsrelationen 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

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. C5.1 Einführung. C5.2 Grundlagen

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

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition 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.

Mehr

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben Algorithmen und Datenstrukturen Tutorium Übungsaufgaben AlgoDat - Übungsaufgaben 1 1 Landau-Notation Aufgabe Lösung 2 Rekurrenzen Aufgabe 3 Algorithmenentwurf und -analyse Aufgabe AlgoDat - Übungsaufgaben

Mehr

Heute. Medium Access Control / Färbungen, Teil 2. Kapazität & Scheduling. kurze Wiederholung Schöner verteilter Färbungsalgorithmus

Heute. 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

Mehr

Algorithmus 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 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Informatik II, SS 2014

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

Mehr

Einführung in Heuristische Suche

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

Mehr

Einführung in die Informatik 2

Einfü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

Mehr

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Matchings 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

Mehr

Verteilte Systeme. Synchronisation II. Prof. Dr. Oliver Haase

Verteilte 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

Mehr

Algorithmen & Komplexität

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

Mehr

3.3 Der Seitenverband

3.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

Mehr

Auswahlaxiom, Zornsches Lemma und Wohlordnungssatz. 14.Oktober 97

Auswahlaxiom, 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

Mehr

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:

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: 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

Mehr

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. lausthal Informatik II Bäume. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Beispiele Stammbaum. Zachmann Informatik 2 - SS 06 Bäume 2 Stammbaum Parse tree, Rekursionsbaum Unix file hierarchy

Mehr

Rechnernetze und verteilte Systeme (BSRvS II)

Rechnernetze 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

Mehr

Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen

Mathematische 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

Mehr

3. 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. 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. 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,

Mehr

Kapitel IV Minimale Spannbäume

Kapitel 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.

Mehr

Heute. Algorithmen für Ad-hoc- und Sensornetze. Erinnerung: MAC-Layer. Erinnerung: Färbungen. Definition

Heute. 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

Mehr

Algorithmische Bioinformatik 1

Algorithmische 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

Mehr

Mathematik für Informatiker 1 Tutorium

Mathematik 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

Mehr

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen 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

Mehr

Very simple methods for all pairs network flow analysis

Very 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

Mehr

Verteilte Systeme. Diffusionsalgorithmen. Secure Identity Research Group

Verteilte 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

Mehr

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. Verteilte Systeme, Sommersemester 1999 Folie 7.2

Vorlesung 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

Mehr

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16

Traversierung 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

Mehr

Layout-Synthese - Globale Verdrahtung Peter Marwedel

Layout-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. 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

Mehr

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Ferienkurs 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

Mehr

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

lä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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Wellenalgorithmen. Wellenalgorithmen. Häufige Probleme bei verteilten Algorithmen / Systemen:

Wellenalgorithmen. 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

Mehr

Wechselseitiger Ausschluss in verteilten Systemen / Elektionsalgorithmen. Özden Urganci Ulf Sigmund Ömer Ekinci

Wechselseitiger 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

Mehr

Algorithmen für eingebettete Systeme

Algorithmen 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

Mehr

Geordnete Mengen. Eine Relation R A A heißt Ordnung oder Ordnungsrelation, wenn sie reflexiv, transitiv und antisymmetrisch ist.

Geordnete 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

Mehr

Informatik II, SS 2016

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

Mehr

Ordnungsrelationen auf Mengen

Ordnungsrelationen 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.

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

Mehr

Relationen und DAGs, starker Zusammenhang

Relationen 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

Mehr

Lösungen zu Kapitel 5

Lö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

Mehr

ADS: Algorithmen und Datenstrukturen 2

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

Mehr

2.4 Starke Zusammenhangskomponenten in Digraphen

2.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:

Mehr

Verkettete Datenstrukturen: Bäume

Verkettete 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

Mehr

Einführung in die Theoretische Informatik

Einfü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

Mehr

Lösungen von Übungsblatt 12

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

Mehr

Weiterführendes Programmieren Lineare Widerstandsnetzwerke II Aufgabenblatt 6. 1 Zusammenfassung der elektrotechnischen Begriffe

Weiterfü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

Mehr

Definition 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:

Definition 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

Mehr

Vorlesung "Verteilte Systeme" Sommersemester Verteilte Systeme. 9. Verteilte Algorithmen

Vorlesung 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

Mehr

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

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

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Vorlesung Datenstrukturen

Vorlesung 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

Mehr

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner

Mehr

Informatik II, SS 2016

Informatik 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

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Grundlagen verteilter Systeme

Grundlagen 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

Mehr

12. Der Algorithmus von Dijkstra. Informatik II für Verkehrsingenieure

12. 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

Mehr

5 Zwei spieltheoretische Aspekte

5 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,

Mehr

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als

4.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

Mehr

10.1 Motivation. Beispiel: verbundene Geldkonten. Beispiel: verbundene Geldkonten (Forts.)

10.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

Mehr

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

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

Mehr

Ausdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI

Ausdrü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

Mehr

Algorithmische Methoden zur Netzwerkanalyse

Algorithmische 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

Mehr

Kapitel IV Minimale Spannbäume

Kapitel 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.

Mehr

1 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 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

Mehr

Verteilte Algorithmen TI5005

Verteilte 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