Zusammenfassung Grundgebiete Informatik 3 Steen Vogel [email protected] 11. März 2012 Inhaltsverzeichnis I Denitionen 3 1 Vertiefung Datenstrukturen und Algorithmen 3 1.1 Zuordnungsprobleme in Graphen 1.2 Balancierte Bäume 1.3 Suchalgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Hashverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Suchen in Texten 5 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1 Naive Zeichenketten-Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.2 Knuth-Morris-Pratt Algorithmus 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Optimierungsprobleme und -verfahren 6 2.1 Konvexe Optimierungsprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Lagrange-Multiplikatoren 2.3 Karush-Kuhn-Tucker (KKT) Bedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Modellierung von Systemen und Prozessen 6 7 7 7 3.1 Hardwaremodellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Petri-Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3 3.2.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Dentionen 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2.3 Formale Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2.4 Dynamische Eigenschaften von Petri-Netzen 8 Kahn-Prozessnetzwerke (KPN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 3.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchrone Datenussgraphen (SDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zustandsautomaten, Turing Maschinen, Komplexitätsklassen 9 10 . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.1 Turing Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.2 7-Tupel der Touringmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.3 Komplexitätsklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4 Betriebssysteme 11 4.1 Prozesse & Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Scheduling/Ablaufplanung 12 4.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.3 Interprozess-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.4 Speicher Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5 Multi-Prozessorsysteme 13 5.1 Prozessorarten/Processing Elements (PE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2 Kommunikationsarchitekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.3 Speicherarchitekturen 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 6 Einführung Netzwerke 6.1 14 OSI Referenz Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II Algorithmen 14 16 1 Zuordnungsprobleme in Graphen 16 1.1 Bestimmen einer maximalen Zuordnung (ungewichteter bipartiter Graph) . . . . . . . . . . . . . . . . . 16 1.2 Bestimmen einer maximalen Zuordnung (gewichteter bipartiter Graph) . . . . . . . . . . . . . . . . . . . 16 1.3 Bestimmen einer maximalen Zuordnung (in allgemeinen Graphen, Algorithmus von Edmonds) 16 . . . . . . 2 Balancierte Bäume 2.1 2.2 2.3 16 AVL-Baum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.1 Einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.2 Entfernen 17 2.1.3 Balancieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Rot-Schwarz Baum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.2 Entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 B-Baum 2.3.1 Einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.2 Löschen 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Suchalgorithmen 18 3.1 Binäre Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 Interpolationssuche 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Hashverfahren 18 5 Suchen in Texten 19 5.1 Naive Zeichenketten-Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Knuth-Morris-Pratt Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Optimierungsprobleme & -verfahren 19 19 19 6.2 → SDP QP → SDP 6.3 Lagrange-Multiplikatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.4 Gradientenvefahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.5 Newton'sches Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.6 Branch-and-Bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 6.1 LP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 7 Event-basierter Simulationskernel 19 8 Petri-Netze 20 8.1 Komplementäre-Stellen Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Lösung von Konikten durch zusätzliche Eingabestellen . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8.3 Konstruktion eines Überdeckbarkeitsbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8.4 Konstruktion eines Überdeckbarkeitsgraphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2 20 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 Teil I Denitionen 1 Vertiefung Datenstrukturen und Algorithmen 1.1 Zuordnungsprobleme in Graphen • Graph: G = (V, E) besteht aus einer Menge V E ⊆V ×V. Kante von Knoten u zu Knoten v , (u, v) ∈ E Ein (gerichteter) Graph von Knoten (vertices) und einer Menge E von Kanten (edges) mit (u, v) bezeichnet eine • Ungerichteter Graph: Gilt für alle Kanten (v, u) eines Graphen G = (V, E): (u, v) ∈ E ⇒ (v, u) ∈ E so heiÿt G ungerichtet. Schreibweise:{u, v} ∈ E • Zuordnung: Eine Zuordnung M für Kanten E , so dass keine zwei Kanten einen ungerichteten Graphen in M G = (V, E) ist eine Teilmenge M ⊆ E der v∈V den selben Endknoten haben. Äquivalent gilt, dass kein Knoten mit mehr als einer Kante indiziert (verbunden) ist. • Nicht erweiterbare Zuordnung (Maximal Matching): sodass M ∪e M für einen ungerichteten Graphen ist e ∈ E, e ∈ / M gibt, die hinzugefügt werden könnte, Eine Zuordnung nicht erweiterbar (maximal matching), wenn es keine Kante eine Zuordnung wäre. • Maximale Zuordnung (Maximum Matching): • Perfekte Zuordnung: Eine nicht erweiterbare Zuordnung mit maximaler Gröÿe Eine maximale Zuordnung M, in der alle Knoten v ∈ V mit genau einer Kante |M | e ∈ M verbunden sind. • Bipartiter Graph: Bei einem bipartiten Graphen G = (V, E) ist es möglich die Knotenmenge V so in zwei disjunkte Teilmenegen V1 und V2 zerlegt werden kann (mit V = V1 ∪ V2 , V1 ∩ V2 = Ø), dass keine Kante zwei Knoten in V1 oder zwei Knoten in V2 verbindet (d.h. E ⊆ {{v1 , v2 }|v1 ∈ V1 , v2 ∈ V2 }. • Gebundene Kante: Eine in der Zuordnung verwendete Kante • Gebundener Knoten: • Freier Knoten: e∈M wird als gebundene Kante bezeichnet. Ein Knoten, der mit einer gebundenen Kante indiziert ist, ist ein gebundener Knoten. Ein nicht gebundener Knoten, d.h. ein Knoten der nur mit freien Kanten indiziert ist, ist ein freier Knoten. • Alternierender Pfad: Ein Pfad in G wird als alternierender Pfad (alternating path) bezeichnet, falls die Kanten abwechselnd gebunden und frei sind. • Vergröÿernder Pfad: augmenting path) ist ein alternierender Pfad, dessen Anfangs- und Ein vergröÿender Pfad ( Endknoten freie Knoten sind. • Gewichteter bipartiter Graph: Ein gewichteter/bewerteter (weighted) bipartiter Graph ist ein bipartiter Graph G = (V, E) in dem jede Kante e = {v1,i , v2,j } ein Gewicht (eine Bewertung) cij hat. Das Gewicht der Zuordnung M ist die Summe der Gewichte der Kanten in M . ij • Blüte: Eine Blüte ist eine Schleife in Kanten sind (zu • Schleifen: M G, die aus 2n + 1 Kanten besteht, von denen genau n Kanten gebundene gehören). Eine Schleife entsteht in einem bipartiten Graphen dann, wenn man es schat über 2n Kanten von einem Startknoten M wieder zu diesem Startknoten zurückzukommen. • Kontrahierender Graph: Ein kontrahierender Graph bezeichnet einen Graphen, der aus Blüte in einem neuen Knoten vB zusammengezogen wird. 3 G entsteht, indem die Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 1.2 Balancierte Bäume • Blattsuchbaum: Ein Suchbaum, dessen Blätter auch Schlüssel enthalten. • Balancierter Baum: Ein balancierter Baum ist ein Baum, bei dem kein Blatt wesentlich weiter von der Wurzel entfernt ist, als irgendein anderes Blatt des Baums. Formal: die maximale Höhe des Baums ist die Anzahl der Elemente des Baums und • Binärbaum: c eine von n c · log(n), wobei n unabhängige Konstante ist. Ein Baum, bei dem jeder Knoten maximal zwei Kindknoten besitzt. • Balance eines Binärbaumes: Höhenunterschied zwischen dem linken (BL ) und dem rechten (BR ) Teilbaum eines Knotens bzw. der Wurzel: Balance = H(BL ) − H(BR ) • Binärer Suchbaum: Sei B = (r, BL , BR ) ein Binärbaum und bezeichne key(n) den Suchschlüssel für jeden Knoten n, r bezeichnet den Wurzelknoten. B heiÿt Suchbaum, falls gilt: Für alle n ∈ BL : key(n) < key(r) Für alle n ∈ BR : key(n) > key(r) BL und BR sind Suchbäume (Rekursion) • AVL-Baum: Ein AVL-Baum ist ein binärer Suchbaum, bei dem sich die Höhe der beiden Teilbäume eines Knoten maximal um 1 unterscheidet. Die Balance in einem AVL-Baum ist entwerder • Rot-Schwarz-Baum: 0, ±1 oder Ein Rot-Schwarz-Baum ist ein annähernd balancierter Suchbaum, der ein zusätzliches Bit (bzw. die Farben rot und schwarz) verwendet um die Balance zu erhalten. Kein Blatt des mehr als doppelt so weit von der Wurzel entfernt, wie irgendein anderes Blatt. Eigenschaften ∗ ∗ ∗ Jeder Knoten ist entweder rot oder schwarz Die Wurzel des Baumes ist schwarz Alle Blätter sind schwarz und enthalten keine Schlüssel · Jeder Pfad von einem gegebenen Knoten zu einem Blattknoten enthält die selbe Anzahl von schwarzen Knoten ∗ Ist ein Knoten rot, so sind beide Kinder schwarz • B-Baum: Ein B-Baum ist ein m Kindknoten hat. m ist eine balancierter Suchbaum, bei dem jeder Knoten (auÿer der Wurzel) zwischen positive ganze Zahl (m > 1). m ist die Ordnung des B-Baums. Eigenschaften ∗ ∗ ∗ ∗ ∗ Die Wurzel hat zwischen 2 und M Kind-Knoten Jeder Knoten hat genau einen Schlüssel zwischen zwei Kind-Knoten Die Blätter besitzen keine Schlüssel Der Baum ist immer perfekt balanciert Ein B-Baum besitzt die Suchbaum Eigenschaften 1.3 Suchalgorithmen • Binäre Suche: m = mu + 12 (mo − mu ) Durchschnittliche Laufzeit: O(log N ) • Interpolationssuche: m = mu + • m Durchschnittliche Laufzeit: Worst Case Laufzeit: O(N ) k−a[mu ].key a[mo ].key−a[mu ].key (mo O(log2 log2 N ) − mu ) (bei gleichverteilten Schlüsseln) (bei exponentiell ansteigenden Schlüsseln) wird immer auf die nächstliegende ganze natürliche Zahl gerundet! 4 m 2 und Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 1.4 Hashverfahren • Hashverfahren: Hashverfahren sind eine eziente Möglichkeit Schlüssel in einer Hashtabelle zu suchen. Mit einer ezienten Hashfunktion kann so auf einen Datensatz mit O(1) zugegrien werden (vgl. O(log(n)) für binäre Suche). • Hashfunktion: Eine Hashfunktion h(k) : K → {0, . . . , M − 1} 0 ≤ h(k) ≤ M − 1 zu. I.d.R. gilt |K| > M . • Hashadresse: h(k) ordnet jedem Schlüssel k einen Index h(k) mit wird als Hashadresse bezeichnet. • Hashtabelle: Die gehashten Datensätze werden anhand ihrer 0, . . . , M − 1 gespeichert. M ist die Gröÿe der Hashtabelle. • Perfektes Hashing: Bei einer perfekten Hashfunktion wenn |K| ≤ M und K fest und vorher bekannt ist) . Hashadresse in einem linearen Feld mit den Indizes werden Kollisionen vollkommen vermieden (nur möglich, • Universelles Hashing: Sei K eine endliche Klasse von Hashfunktionen, die jeweils jedem Schlüssel aus K auf die Menge {0, . . . , M − 1} abbilden, dann heiÿt K universell, wenn für zwei verschiedene Schlüssel x, y ∈ K gilt: |{h∈K :h(x)=h(y)}| 1 ≤M |K| Die Wahrscheinlichkeit, dass ein beliebiges Paar von zwei verschiedenen Schlüsseln x, y aus Kdurch eine zufällig aus der universellen Klasse K ausgewählte Hashfunktion h(k) auf die selbe Hashadresse abgebildet wird, ist höchstens 1 M. • Adresskollision: Da die die Gröÿe der Hashtabelle M i.d.R. viel kleiner ist als die Menge der möglichen Schlüssel, kann es passieren dass die Hashfunktion (keine bijektive Funktion) mehrere Schlüssel auf den selben Wert abbildet. Sollen mehrere solcehr Schlüssel in der Hashtabelle gespeichert werden, so tritt eine Adresskollision auf, die eine Sonderbehandlung erfordert. • Synonyme: Zwei Schlüssel • Überläufer: Ein zu speichernder Eintrag, der auf die gleiche Hashadresse gehasht wird, wie ein anderer Eintrag. • Primäre Häufung: k, k 0 heiÿen Synonyme, falls h(k) = h(k 0 ) gilt. Sondierungsfolgen unterschiedlicher Hash-Adressen treen aufeinander und verlaufen synchron (z.B. beim linearen Sondieren). • Sekundäre Häufung: Schlüssel, die den gleichen Hashwert haben, durchlaufen dieselbe Sondierungsfolge. • Sondierungsfolgen: Lineares Sondieren: sk (n) = n Doppeltes Hashing: sk (n) = n · h0 (k) bsp. mit h0 (k) = 1 + k mod (M − 2) 1.5 Suchen in Texten 1.5.1 Naive Zeichenketten-Suche • Durchschnittliche Laufzeit: • Worst-case Laufzeut: 1.5.2 • O(M + N ) O(M · N ) Knuth-Morris-Pratt Algorithmus Komplexität Aufbau der Verschiebungstabelle: Suchalgorithmus: O(M ) O(n) Gesamtlaufzeit (auch im Worst-case): O(M + N ) 5 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 2 Optimierungsprobleme und -verfahren • Ane Menge: Die Gerade durch zwei beliebige, verschiedene Punkte der Menge liegen in der Menge. • Konvexe Menge: Der Geradenabschnitt zwischen zwei beliebigen, verschiedenen Punkten der Menge liegt in der Menge. x1 , x2 ∈ C, θ ∈ [0, 1] ⇒ θx1 (1 − θ)x2 ∈ C Schnittmenge zweier konvexer Menge ist konvex • Konvexe Funktion: falls f (θx1 + (1 − θ)x2 ) ≤ θf (x1 ) + (1 − θ)f (x2 ) (>) falls f dibar: f (x) ≥ f (x0 ) + ∇f (x0 )T (x − x0 ) ∀x, x0 ∈ C falls Hessematrix positiv semidenit: H(f (x)) 0 ∀x ∈ C f ist konkav ⇒ −f ist konvex strikt Konvex, falls (>) strikt erfüllt ist • Hessematrix : H(f ) = ∂2f ∂x1 ∂x1 . . . 2 ∂ f ∂xn ∂x1 ··· .. . ··· ∂2f ∂x1 ∂xn . . . 2 ∂ f ∂xn ∂xn • Positive semidenite Matrix: A 0 falls xT · A · x > 0 ∀x ∈ Rn falls die Determinante aller Untermatrizen >0 falls die Matrix reel und symmetrisch ist, und alle Eigenwerte positiv sind falls A eine Diagonalmatrix ist und alle Einträge >0 • Quasikonvexe Funktion: p Bsp: f (x) = |x| 2.1 Konvexe Optimierungsprobleme • Konvexes Optimierungproblem: ( min f0 (x) x s.t. fi (x) ≤ 0, i = 1, . . . , m Rechenzeit ist grob propotional zu max{n3 , n2 , m, F } • Linear Programming (LP): T min c x + d s.t. Gx ≤ h Ax = b • Quadratic Programming (QP): 1 T min x P x + qT x + d 2 s.t. Gx ≤ h Ax = b P ist positiv semidenite Matrix: P 0 6 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 • Semidenite Programming (SDP): T min c x s.t. x1 F1 + x2 F2 + . . . + xn Fn 0 Ax = b • Modell-Allgemeinheit: • Lösungezienz: LP < QP < ... < SDP LP > QP > ... > SDP 2.2 Lagrange-Multiplikatoren • Im ( Allgemeinen nicht min f (x) s.t. h(x) = 0 • Lagrange Funktion: • Bedingung: lineares Problem mit Gleichheitsbedingungen Λ(x, λ) = f (x) + λT h(x) ∇Λ = ∇f + λT ∇h = 0 (Gradienten sind parallel) 2.3 Karush-Kuhn-Tucker (KKT) Bedingungen • Stationarity: ∇f (xopt ) + m P µi ∇hi (xopt ) + i=1 • Primal feasability: • Dual feasability: • Complementary slackness: λi ∇gi (xopt ) = 0 i=1 gj (xopt ) ≤ 0, λj ≥ 0, p P hi (xopt ) = 0, i = 1, . . . , m j = 1, . . . , p j = 1, . . . , p λj gj (xopt ) = 0, j = 1, . . . , p 3 Modellierung von Systemen und Prozessen 3.1 Hardwaremodellierung • SystemC: Systembeschreibungssprache (SLDL, engl. System Level Design Language) 3.2 Petri-Netze 3.2.1 Allgemein • Auch P/T-Netze und S/T-Netze genannt (Plätze, Stellen, Transitionen) • Dienen der Modellierung von nebenläugen, asynchronen, verteilten, parallelen, nichtdeterministischen und/oder stochastischen Systemen • Stellen ein graphisches und mathematisches Werkzeug dar • Nebenläugkeit ist nicht Gleichzeitigkeit, sondern Unabhängigkeit: Petri-Netze haben keine Zeitdimension! 3.2.2 Dentionen • Strenge Transitionsregel: Eine Transition darf nur dann feuern, wenn dadurch die Kapazität der Ausgangsstellen nicht überschritten wird • Quellen-Transitionen: Eine Transition ohne Eingangsstellen (immer aktiv) • Senken-Transitionen: Eine Transition ohne Ausgangsstellen • Schleifen: Ein Paar aus Stelle p und Transition t, bei dem 7 p sowohl Eingangs- als auch Ausgangsstelle von t ist. Zusammenfassung: GGI 3 • Pures Petri-Netz: Maximilian Lorent & Steen Vogel Ein Petri-Netz, dass keine Schleifen besitzt. • Gewöhnliches Petri-Netz: • Sicheres Petri-Netz: • Kapazität K(p): 11. März 2012 Alle Kanten haben das Gewicht 1. Ein Petri-Netz, das ist 1-beschränkt ist. Anzahl der Tokens die in einer Stelle gespeichert werden können. • Petri-Netz endlicher Kapazität: Nur endlich viele Tokens können in • Petri-Netz unendlicher Kapazität: p Unendlich viele Tokens können in gespeichert werden. p gespeichert werden. • Nebenläugkeit: Zwei Transitionen heiÿen nebenläug, wenn beide aktiviert sind und sie keine gemeinsamen Ausund Eingangsstellen besitzen. • Konikt: Zwei Transition enstehen im Konikt, wenn beide aktiviert sind und (wenigstens) eine gemeinsame Vor- oder Nachbedingung erfüllt ist. • Konfusion: Konfusion ist ein potentieller Konikt, der durch die willkürliche Reihenfolge des Feuerns zweier nebenläuger Transitionen entstehen könnte. Konfusion liegt immer dann vor, wenn die Reihenfolge des Feuerns zweier nebenläuger Transitionen für den weiteren Ablauf des Systems wesentlich ist. • Deadlock: Nebenläugkeit kann zum Stillstand führen, d.h., zu einem Zustand, in dem keine Transition feuern kann. 3.2.3 Formale Darstellung • als 5-Tupel: • endliche Menge von Stellen (Plätzen): • endliche Menge von Transitionen: • Menge von Kanten: • Gewichtungsfunktion: • Anfangsmarkierung: • Es gilt ferner: 3.2.4 P N = (P, T, F, W, M0 ) P = {p1 , p2 , . . . , pm } T = {t1 , t2 , . . . , tn } F ⊆ (P × T ) ∪ (T × P ) W : F → {1, 2, 3, . . .} Mo : P → {0, 1, 2, 3, . . .} B∩T =Ø und P ∪T =Ø (Graph ist bipartit) Dynamische Eigenschaften von Petri-Netzen M0 von Anfangmarkierung • Erreichbarkeit: Abhängig Eine Markierung Mn ist erreichbar, wenn es eine Folge von Transitionen gibt, die M0 in Mn überführen kann. Mn ist von M0 erreichbar, wenn es im im Überdeckbarkeitsbaum einen Pfad von M0 nach Mn exisiert für den man nicht in Richtung der Wurzel laufen muss. • Beschränktheit: Ein Petri-Netz ist mehr als k Tokens pro Stelle hat. k-beschränkt, falls keine Markierung, die von wenn die Knotenbezeichner des Überdeckbarkeitsbaums kein • Lebendigkeit: ω M0 aus erreicht werden kann, enthalten. Petri-Netz ist lebendig, wenn es - ungeachtet der gerade erreichten Markierung - stets möglich ist jede Transition durch eine Reihe von Feuerungen zu aktivieren (Nachweis ist schwer). Eine Transition ist tot wenn sie nicht als Kante im Überdeckbarkeitsbaums exisistiert. • Umkehrbarkeit: Die Anfangsmarkierung M0 kann von jeder Markierung musste zuvor von der Anfangsmarkierung aus erreichbar sein) 8 M aus erreicht werden (Wichtig: M Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel • Überdeckbarkeit: Eine Markierung M 0 Stelle gilt: M (p) ≥ M (p) • Beständigkeit: 11. März 2012 ist Überdeckbar, wenn eine andere Markierung M0 existiert, sodass für jede Für jedes paar von aktivierten Transitionen gilt, dass das feuern einer dieser Transitionen die anderen nicht deaktiviert. • Sicherheit: wenn die Knotenbezeichner des Überdeckbarkeitsbaums nur Nullen oder Einsen enthalten. • Fairness: Nicht behandelt 3.3 Kahn-Prozessnetzwerke (KPN) • KPN dienen der Modellierung von Systemen bestehend aus Prozessen • Prozesse • Produzent muss nicht warten, bis Konsument liest FIFO-Länge unbegrenzt Konsument muss bei leerem FIFO warten bis nächstes Token vorliegt Prozesse können nur an einem Kanal gleichzeitig warten Kein Lese-Zugri auf einen Kanal, ohne dass ein Token konsumiert wird Kahn-Prozess-Netzwerke sind deterministisch • produzieren und/oder konsumieren dabei eine festgelegte Anzahl von Tokens Blockierendes Lesen • bestehen aus sequentiellen Anweisungen Nicht-blockierendes Schreiben • kommunizieren ausschlieÿlich über FIFOs (message passing vgl. Erlang) Folge der Ausgabetokens ist nicht von der Ausführungsreihenfolge abhängig Ausführungsreihenfolge der Prozesse ist irrelevant Scheduling der Prozesse Anhäufung von Tokens muss vermieden werden Bei begrenzenten FIFO Längen können Deadlocks entstehen ∗ ∗ wenn Ausgangs-FIFO voll wenn Eingangs-FIFO leer Algorithmus vin Park (1995) ∗ ∗ vermeidet Deadlocks Scheduling für begrenzte FIFOs mit möglichst kleiner Länge 9 ⇒ Zusammenfassung: GGI 3 3.3.1 • 11. März 2012 Synchrone Datenussgraphen (SDF) SDF sind ein Spezialfall von KPN • Maximilian Lorent & Steen Vogel Knoten: Prozesse Kanten: Datenpfade Die Anzahl der gefeuerten/konsumierten Tokens ist im Vorhinein festgelegt (vgl. Petri-Netze) ⇒ Scheduling kann vorher festgelegt werden • SDF eigenen sich zur Modellierung vieler Algorithmen in der digitalen Signalverarbeitung (DSP) • Homogene SDF: Alle Knoten konsumieren und produzieren jeweils nur ein Token an den Eingangs- und Aus- gangskanten • Inhomogene SDF: Knoten können unterscheidlich viele Tokens konsumieren bzw. produzieren 3.4 Zustandsautomaten, Turing Maschinen, Komplexitätsklassen 3.4.1 Turing Maschine Die Turingmaschine stellt eine Erweiterung des endlichen Zustandsautomaten (FSM, Mealy & Moore, vgl Info2) dar • Endliche Menge an einnehmbaren Zuständen • Ein (einseitig) unendliches Band • Bewegbarer Lese/Schreib-Kopf zuum Lesen und Schreiben von Symbolen auf dem Band • Zustandsbasierte Steuerung (Programm) Turing-Tabelle: δ read write • Curch-Turing-These: move new state note Die Klasse der Turing-berechenbaren Funktionen ist genau die Klasse der intuitiv berechen- baren Funktionen. • Turing-berechenbar: Es existiert eine Turing Machine, die für Eingaben aus dem Denitonsbereich anhält, sodass im Anschliuss der entsrechende Funktionswert auf dem Band steht. • Turing-vollständig: Ein Modell, dass ebenfalls alle Turing-berechenbaren Funktionen berechnen kann. • Nicht deterministische Turing-Maschine (NTM): Falls nicht eindeutige Übergangsrelationen von einem Zustand in den nächsten Zustand vorliegen, muss sich die Turing-Maschine verzweigen und parallel jeden dieser Wege weiterverfolgen. Kommt einer dieser Zweige zu einem Halt, so ist die Lösung akzeptiert 3.4.2 • 7-Tupel der Touringmaschine S: endliche Menge von Zuständen • Σ: EIngabealphabeth • Γ: Bandalphabet, mit Σ∈Γ und ∈Γ • δ : (S\F × Γ) → (S × Γ × {R, L}): • s0 ∈ S : • : • Übergangsfunktion (R,L: Rechts- oder Linksshift des Lese/Schreibkopfes) Anfangszustand Leeres Symbol F: Menge der Endzustände mit F ⊆S 10 Zusammenfassung: GGI 3 3.4.3 Maximilian Lorent & Steen Vogel 11. März 2012 Komplexitätsklassen Klassizieren Probleme anhand ihrer Komplexität. Übliche Metriken sind • Komplexitätsklasse P: Laufzeit, Speicherbedarf, etc.. Ist in Polynomialzeit von deterministischer TM lösbar. Probleme dieser Klassen gelten als praktisch (ezient) berechenbar. • Komplexitätklasse NP: Ist in Polynomialzeit von nicht deterministischer TM lösbar. P ⊆ NP, jedes Problem in P ist auch Teil von NP. • NP-schweres Problem: Ein Problem ist NP-schwer, wenn sich jedes Problem in NP in polyniomaler Zeit auf dieses Problem zurückführen lässt. • NP-vollständiges Problem: Ist ein Problem NP-schwer und selbst in NP enthalten, ist es NP-vollständig. 4 Betriebssysteme • Denition: Das Betriebssystem ist eine softwareseitige Erweiterung der Hardware, welche diese abstrahiert und einfache Zugrismechanismen zur Verfügung stellt. Daher verwaltet das Betriebssystm zur Verfügung stehende Ressourcen und deren Zuteilung. • Aufgaben: Speicherverwaltung Programm-Verwaltung / Prozess-Verwaltung Geräte- und Dateiverwaltung / Ein- Ausgabe Rechteverwaltung / Sicherheit Abstraktion / Kompatibilitätschicht 4.1 Prozesse & Threads • Prozesse: Prozesse sind ablaufende Programme mit eigenem Befehlszähler, Register und Speicherbereich und dienen dazu (Pseudo-)Nebenläugkeit eines Systems zu ermöglichen. Sie besitzen in ihrem Adressraum nur einen Ausführungsfaden ( • Threads: thread-of-control). Mehrere Ausführungsfäden in einem Prozess, die sich einen gemeinsamen Adressraum teilen. Threads sind in ihrer Erzeugung, Scheduling und der Kommunikation untereinander leichtgewichtiger als Prozesse. • Vergleich Prozess Elemente Thread Elemente Adressraum Befehlszähler Globale Variabeln Register Oene Dateien/Verbindungen Stack Kindprozesse Zustand Ausstehende Signale Signale und Signalroutinen Verwaltungsinformationen 11 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 4.2 Scheduling/Ablaufplanung • Denition: Die Ablaufplanung (engl. Scheduling) bestimmt die räumliche und zeitliche Zuordnung von Aktivitäten zu auszuführenden Instanzen. • Echtzeitbetriebssystem/RTOS: 4.2.1 Scheduling mit Sollzeitpunkten/Deadlines. Algorithmen Unterscheiden sich hauptsächlich durch die Aufrufreihenfolge der Prozesse und deren Verdrängung/Preemption • First-Come First-Serve (FIFO) Reihenfolge: Abarbeitung in Ankunftsreihenfolge (FIFO-Liste) keine Verdrängung: Prozess wird abgearbeitet bis er sich selbst unterbricht oder beendet. • Round-Robin Reihenfolge: Abarbeitung in Ankunftsreihenfolge (FIFO-Liste) Verdrängung: Prozesswechsel mindestens nach vorgeschriebener/fester Zeit δ. • Prioritäts-basiert (ohne Verdrängung) Reihenfolge: nach Prioritäten sortierte Liste keine Verdrängung: Prozess wird abgearbeitet bis er sich selbst unterbricht oder beendet. • Prioritäts-basiert (mit Verdrängung) Reihenfolge: nach Prioritäten sortierte Liste Verdrängung: Prozess wird abgearbeitet bis er sich selbst unterbricht, beendet oder ein Prozess mit höherer Priorität eintrit. 4.3 Interprozess-Kommunikation • Race Conditions: Wettlaufsituationen können auf treten, wenn zwei oder mehr Prozesse auf gemeinsame Daten zugreifen (lesen oder schreiben), so dass das Endergebnis von der exakten Ausführungsreihenfolge abhängt (vgl. Konfusion der Petri-Netze). • Mutual exclusion: Race Conditions können durch wechselseitigen Ausschluss verhindert werden. Gängige Mecha- nismen sind dabei: Aktives Warten / Spinlocks Semaphore / Mutex (binäres Semaphore) Monitor Message Passing Barriere Lock-Mechanismen 4.4 Speicher Management siehe auch Speicherarchitekturen • Memory Management Unit: Bildet logische Speicheradressen auf physikalische Adressen ab. Versteckt dadurch Prozess-fremde Speicherbereiche. Implementierung mittels Mase/Limit Paar oder Seiten-basiert (Paging) 12 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 5 Multi-Prozessorsysteme • Homogenes Multi-Prozessorsystem: viele gleichartige PE, hohe Flexibilität, geringe Performence • Heterogenes Multi-Prozessorsystem: verschiede PE, anwendungsspezische Konguration, gute Energieezienz & Performence • Geschwindigkeitsgewinn (Speedup) durch Parallelisierung: S = • Amdahl's Law: Tp = TS (1 − p + np ) ⇒ S = mit n Prozessoren, p TS TP 1 p 1−p+ n Anteil an parallelisierbarem Code Maximaler Geschwindigkeitsgewinn: 1 S(n → ∞) = 1−p Optimaler Geschwindigkeitsgewinn: S(p = 1) = n S(p = 0.9) = 10 Realistischer Geschwindigkeitsgewinn: (Beispiel) 5.1 Prozessorarten/Processing Elements (PE) • General Purpose Processor (GPP) • Digital Signal Processor (DSP) • Application Specic Instructionset Processor (ASIP) • Application Specic Integrated Circuit (ASIC) • Field Programmable Gate Array (FPGA) 5.2 Kommunikationsarchitekturen • Direkte Verbindung • Geteilter Speicherbereich • Bus-System • Crossbar • Network on Chip (NoC) 5.3 Speicherarchitekturen • Speicherhierachie/pyramide: zunehmende Kapazität ←→ abnehmende Zugriszeit Prozessor-Register L1/L2-Cache Hauptspeicher Flash-Speicher Hard-Disks Bänder/CDs • Cache Kohärenz Problem: Durch die Sicherstellung von Cache-Kohärenz wird bei Mehrprozessorsystemen mit mehreren CPU-Caches verhindert, dass die einzelnen Caches für die gleiche Speicheradresse unterschiedliche (inkonsistente) Daten zurückliefern. • Cache Kohärenz Protokolle: Snooping-basiert: alle Cache Controller lauschen auf einem gemeinsamen Interconnect und verwalten den Status der Blöcke im lokalen Cache. Verzeichnis-basiert: zentrales Verzeichnis aller gecachten Blöcke und die darauf zugreifenden Prozessoren mit ihrem Status (exlusive, shared). 13 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 6 Einführung Netzwerke • Computer Netzwerk: Ein Sammlung von verbundenen Computern, die in der Lage sind, untereinander Informa- tionen auszutauschen. • Ziele: Ortsunabhängigkeit hohe Verfügbarkeit/Redunanz hohe Energie- und Kostenezienz für Mainframe Rechner • Service: Sammlung von primitiven Operationen von unteren Schichten oberen Schichten verfügbar gemacht werden • Protocol: Satz von Regeln, die die Kommunikation innerhalb einer Schicht denieren. • Circuit Switching: Vor der Datenübertragung muss eine fest denierte Verbindung zwischen beiden Kommunika- tionspartnern aufgebaut werden, die erst nach dem Ende der Übertragung wieder geschlossen wird • Packet Switching: Ohne einen expliziten Verbindungsaufbau werden die Daten in Form von kleinen Paketen, die in ihrem Header die Zieladresse enthalten über spontan gewählte Übertragungswege vom Absender zum Empfänger versandt 6.1 OSI Referenz Modell 7. Application-Layer (Anwendungsschicht) • Verschat Anwendungen Zugri auf das Netz • Protokolle: Telnet, SMTP, HTTP, LDAP, FTP, NFS, SSH 6. Presentation-Layer (Darstellungsschicht) • Kommunikation zwischen Systemen • Denition Abstrakter Datenstrukturen • Datenkompression, Verschlüsselung, Übersetzer zwischen Datenformaten • Protokolle: ISO 8822/X.216, ASN.1 5. Session-Layer (Sitzungsschicht) • Prozesskommunikation, Dialogkontrolle, Token management, Synchronisation • Widerherstellung nach Sitzungszusammenbruch durch bereitgestellte Dienste • Protokolle: RPC, ISO 8306/X.215 4. Transport-Layer (Transportschicht) • Segmentierung des Datenstroms • Ende-zu-Ende-Kontrolle • Bietet den anwendungsorientierten Layern 5-7 einen einheitlichen Zugri • Protokolle: TCP, UDP, SCTP, ISO 8073/X.224 14 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 3. Network-Layer (Vermittlungsschicht) • Schalten von Verbindungen und Vermittlung von Paketen • Wegsuche / Routing • Bereitstellen netzwerkübergreifender Adressen • Protokolle: • Hardware: IP, IPsec, X.25, ISO 8208, CLNP, ESIS, ICMP Router, Layer-3-Switch (BRouter) 2. Data-Link-Layer (Sicherungsschicht) • lässt sich gliedern in Medium Access Control (MAC) und Logical Link Control (LLC) • Gewährleistung fehlerfreier Übertragung • Aufteilen des Datenstroms in Blöcke/Frames • Hinzufügen von Folgenummern und Prüfsummen • Daten Fusskontrolle • Protokolle: • Hardware: Ethernet, CSMA/CD, WLAN, Token Bus, Token Ring, FDDI Bridge, Switch (Multiport-Bridge) 1. Physical-Layer (Bitübertragungsschicht) • Hat die Aufgabe rohen Bitstream über einen physikalischen Kanal zu transportieren • Deniert die Interfaces des physikalisches Mediums (kabelgebunden, schurlos), die Signalübertragung und die Art Circuit Switching, Packet Switching) des hardwareseitigen Verbindungsaufbaus ( • Protokolle: • Hardware: V.24, V.28, X.21, RS 232 (Seriell), RS 422, RS 423, RS 499 Modem, Hub, Repeater 15 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 Teil II Algorithmen 1 Zuordnungsprobleme in Graphen 1.1 Bestimmen einer maximalen Zuordnung (ungewichteter bipartiter Graph) 1. Wähle einen freien Knoten 2. Suche ausgehend von diesem Knoten alle alternierenden Pfade (a) Ist der gefundene Pfad ein vergröÿerdner Pfad vergröÿere die Zuordnung durch Austausch von freien und gebunden Kanten (b) Tritt eine Schleife auf, wähle anderen Pfad. Gibt es keinen solchen, fahre fort mit 1.) 3. Wurden alle Knoten geprüft, ist die Zuordnung maximal. 1.2 Bestimmen einer maximalen Zuordnung (gewichteter bipartiter Graph) Eine Zuordnung mit minimalen Gewicht kann gefunden werden, wenn man das Maximum m aller Zellen bestimmt und jeden Zellenwert 1. Wähle yi 2. Erzeuge cij von diesem Wert abzieht: als das Maximum einer Zeile c0ij = m − cij und yj = 0 Überschuss-Matrix: eij = yi +yj −cij (Alle Spalten, die im vorherigen Durchlauf durchgestrichen wurden, ändern sich nicht) 3. Markiere alle Zellen, für die gilt: Gleichheitsgraphen G. (a) Bestimme die eij = 0. Zeichne für all diese Zellen die Kanten von yi maximale Zuordnung M des Gleichheitsgraphen G, nach yj in einen sogenannten ist diese perfekt wurde die Lösung gefun- den. Knotenüberdeckung W mit der Gröÿe |M | im Gleichheitsgraphen G Satz von König: Überdeckt die Knotenüberdeckung W alle Kanten des Graphen, (b) Finde eine (c) gibt es hingegen keine perfekte Zuordnung! 4. Streiche in der ehemaligen Überschuss-Matrix alle Spalten die eine 0 enthielten durch und ermittle aus aus den verbleibenden Zellen das Mimimum (a) Berechne die neuen yi zu m. yi0 = yi − m ∈ V2 \ W und yj0 = yj + m ∀yj ∈ V1 ∩ W . (b) Gehe wieder zu 2.) solange keine perfekte oder maximale Zuordung im Gleichheitsgraphen exisitiert. 1.3 Bestimmen einer maximalen Zuordnung (in allgemeinen Graphen, Algorithmus von Edmonds) 2 Balancierte Bäume 2.1 AVL-Baum 2.1.1 Einfügen 1. Einfügeposition mit binärer Suche bestimmen und Knoten einfügen. 2. Ausgehend von Einfügeposition nach unbalancierten Teilbäumen suchen und diese balancieren. 16 Zusammenfassung: GGI 3 2.1.2 Maximilian Lorent & Steen Vogel 11. März 2012 Entfernen 1. Wenn Knoten ein Blatt ist, entferne ihn (a) Ist der zu entfernende Knoten ein Blatt, entferne ihn. (b) Hat der zu entfernende Knoten nur ein Kind, entferne den Knoten und ersetze ihn duch sein Kind. (c) Sind beide Kinder des zu entfernenden Knotens Blätter, ersetze den Knoten durch eines seiner Blätter (beliebig). (d) Ist mindestens eines der beiden Kinder des zu entfernenden Knotens ein innerer Knoten: i. wähle den symmetrischen Knoten SR A. als Nachfolger (Balance des zu entfernenden Knotens B. als Vorgänger (Balance des zu entfernenden Knotens ii. übertrage den Schlüssel von iii. und lösche das Blatt SR < 0) ≥ 0) auf den zu entfernenden Knoten SR Balanciere den Baum nach jedem Schritt erneut! 2.1.3 Balancieren Es werden 4 Fälle unterschieden: • left-of-left: Rechts-Rotation nötig • right-of-left: Links-Rotation mit anschliessender Rechts-Rotation nötig • right-of-right: Links-Rotation nötig • left-of-right: Rechts-Rotation mit anschliessender Links-Rotation nötig 2.2 Rot-Schwarz Baum 2.2.1 Einfügen Neu eingefügte Knoten sind immer rot! 1. Der Baum ist leer: Füge den Knoten direkt ein und färbe ihn schwarz. 2. Der Vaterknoten ist schwarz: Füge den Knoten direkt ein 3. Vater-Knoten und Onkel-Knoten sind beide rot: Ändere die Farben dieser beiden Knoten in schwarz. Färbe den Groÿvaterknoten rot und betrachte ihn wie einen neu eingefügten Knoten bezüglich seiner Vorgänger 4. Der neue Knoten hat einen schwarzen oder keinen Onkel und ist das rechte Kind seines roten Vaters während der Vater jedoch links am Groÿvater sitzt: Führe eine linksrotation um den Vater aus, welche die Rolle des einzufügenden Knotens und seines Vaters vertauscht. Danach kann man den ehemaligen Vaterknoten mit Hilfe des fünften Falles bearbeiten. 5. Der neue Knoten hat einen schwarzen oder keinen Onkel und ist das linke Kind seines roten Vaters; der Vater hängt auch links am Groÿvater: Zunächst rechtsrotation um den Groÿvater, wodurch der ursprüngliche Vater nun der Vater von sowohl dem neu einzufügenden Knoten als auch dem ehemaligen Groÿvater ist. Im Anschluss Farben vom ehemaligen Groÿvaters bzw. Vaters tauschen. 17 Zusammenfassung: GGI 3 2.2.2 Maximilian Lorent & Steen Vogel 11. März 2012 Entfernen 1. Knoten ist rot und hat nur Blätter als Kindknoten: Lösche den Knoten 2. Knoten ist schwarz und hat nur einen roten Kind-Knoten: Ersetze ihn durch seinen Kindknoten und färbe diesen schwarz 3. Knoten ist schwarz und hat nur Blätter als Kind-Knoten: Entferne den Knoten. Anschlieÿend folgen Rotationen und Farbänderungen (Drehen & Umfärben, falls noch weitere Unterebenen vorhanden, sonst nur Umfärben) 4. Knoten (N) hat zwei innere Knoten als Kindknoten: Bestimme den symmetrischen Vorgänger oder Nachfolger und verschiebe die Werte von R nach N. Das Entfernen von R entspricht den Fällen 1-3. 2.3 B-Baum 2.3.1 Einfügen 1. Solange Einfügen, bis Anzahl Elemente in Knoten gleich m-1 ist 2. Dann überfüllten Knoten in linke und rechte Hälfte aufteilen und inneren Knoten hochschieben 3. Führt dies zu einer Überfüllung des oberen Knoten wiederhole für diesen Knoten Schritte 1-3 2.3.2 Löschen 1. Ist der Knoten aus dem ein Element gelöscht wird nach dem Löschen nicht leer, so werden die linken und rechten Kindknoten des gelöschten Knotens zusammengefasst. 2. Ist der Knoten nach dem Löschen leer, so wandert das Vaterelement in den leeren Knoten und wird mit seinem Geschwisterknoten zusammengefasst. Hierbei werden die Regeln des Einfügens beachtet. 3 Suchalgorithmen ? Tabelle: # mu mo m a[m].key a[m].key S k 3.1 Binäre Suche m = mu + 12 (mo − mu ) • Algorithmus: • Der Suchbereich halbiert sich (näherungsweise) bei jedem Schritt • Durchschnittliche Laufzeit: O(log N ) 3.2 Interpolationssuche k−a[mu ].key a[mo ].key−a[mu ].key (mo • Algorithmus: • Durchschnittliche Laufzeit: • Worst Case Laufzeit: m = mu + O(N ) O(log2 log2 N ) − mu ) (bei gleichverteilten Schlüsseln) (bei exponentiell ansteigenden Schlüsseln) 4 Hashverfahren • Kollisionsbehandlung Überläufer in verketteter Liste speichern Überläufer durch Sondierungsreihe verschieben 18 Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 5 Suchen in Texten 5.1 Naive Zeichenketten-Suche 1. Beginne mit dem ersten Zeichen des Textes und fahre fort bis zum Zeichen aN −M 2. Vergleiche das Muster zeichenweise mit dem Text. (a) Tritt ein Mismatch auf, verschiebe das Muster auf das Nächste Zeichen und beginne wieder bei 2.) (b) Wurde das Ende des Musters erreicht, wurde ein Vorkommen gefunden. 5.2 Knuth-Morris-Pratt Algorithmus 1. Aufbau einer Verschiebungstabelle: (a) m: (b) W: (c) T [m]: m, W, T [m] Index Muster Muster Anzahl der Zeichen, die ein Teil des Musters bereits mit dem Musteranfang übereinstimmt. 2. 6 Optimierungsprobleme & -verfahren 6.1 LP → SDP ( min s.t. mit ( min cT x cT x ⇒ Ax ≤ b s.t. −x1 diag(A1 ) − . . . − xn diag(An ) + diag(b) 0 Ak als Spaltenvektoren von A 6.2 QP → SDP skalarer Fall x = x1 1. Einführen einer zusätzlichen Optimierungsvariablen x2 min x2 s.t. 1 2 x1 P x1 + qx1 ≤ x2 G1 x1 ≤ h1 A1 x 1 = b1 2. Beschreibung der Ungleichheitsbedingungen durch eine positiv semidenite Matrix 3. Darstellung in SDP Standardform 6.3 6.4 6.5 6.6 Lagrange-Multiplikatoren Gradientenvefahren Newton'sches Verfahren Branch-and-Bound 7 Event-basierter Simulationskernel Tabelle: # Event Auslöser • Positive/steigende Flanke: • Negative/fallende Flanke: Simulierte Zeit Evaluation Zeilen Nr. clk.pos() clk.neg() 19 Updates ausgelöste Events Zusammenfassung: GGI 3 Maximilian Lorent & Steen Vogel 11. März 2012 8 Petri-Netze 8.1 Komplementäre-Stellen Transformation Die Komplementäre-Stellen Transformation beschreibt eine Umwandlung eines pures Petri-Netz ein Petri-Netz unendlicher endlicher Kapazität in Kapazität. Ziel der Umwandlung ist es, die Begrenzung der Kapazität aufzugeben. Gleichzeitig soll sich das Verhalten des Netzes dabei nicht ändern. 1. Einführen einer komplementären Stelle p0 für jede Stelle p mit M00 (p0 ) = K(p) − M0 (p) (t, p0 ) bzw. (p0 , t) zwischen jeder Transition und einigen komplementären Stellen p0 , so dass 0 0 die Summe der Tokens in p und p vor und nach dem Feuern von t gleich K(p) ist. Dabei gilt: w(t, p ) = w(p, t) 0 bzw. w(p , t) = w(t, p). 2. Einführen von Kanten 8.2 Lösung von Konikten durch zusätzliche Eingabestellen Rot markierte Stellen zwingen das Petri-Netz zwischen beiden Transitionen zu togglen. 8.3 Konstruktion eines Überdeckbarkeitsbaum 1. Anfangsmarkierung 2. Solange neue M0 ist Wurzel und wird als M gekennzeichnet Markierungen existieren: (a) Wähle eine neue Markierung (b) Wenn neu M identisch ist zu einer Markierung auf dem Pfad von der Wurzel zu M , dann kennzeichne M als alt und wähle eine andere Markierung. (c) Solange es in M aktivierte Transitionen gibt, tue folgendes für jede aktivierte Transition i. Ermittele Markierung M 0 , die aus Feuern von resultiert M ” mit M 0 (p) ≥ M ”(p) für jede Stelle p 0 und M 6= M ” existiert, ersetze M (p) mit ω für jedes p mit M (p) > M ”(p) 0 0 Führe einen Knoten für M sowie eine Kante t von M nach M ein und kennzeichne M' als neu ii. Wenn auf dem Pfad von der Wurzel zu 0 iii. t t: M eine Markierung 0 Beim Zeichnen des Baumes, darf man erst aufhören, wenn sich die Markierungen wiederholen. 8.4 Konstruktion eines Überdeckbarkeitsgraphen 1. Konstruiere gerichteten Graphen • Knotenmenge • Kantenmenge M i und V: G = (V, E) mit Menge aller verschiedenen Knoten im Überdeckbarkeitsbaum E : Menge aller Kanten, die einzelne Transition tk Mj Knoten aus V sind 20 repräsentieren, für die Mi [tk > Mj gilt, wobei