Adnan Kadric Kevin Kandler Seminararbeit Sommersemester 2017

Größe: px
Ab Seite anzeigen:

Download "Adnan Kadric Kevin Kandler Seminararbeit Sommersemester 2017"

Transkript

1 Adnan Kadric Kevin Kandler Seminararbeit Sommersemester

2 Contents 1 Einleitung Sortieren in Linearer Zeit Untere Schranke für das Sortieren Das Entscheidungsbaum-Modell Eine untere Grenze für den schlechtesten Fall Beweis Countingsort Zeit von Countingsort Radixsort Lochkarten Radixsort Code von Radixsort Lemma Lemma Bucketsort Laufzeit Bucketsort Literatur 18 2

3 1 Einleitung Es existieren Sortier-Algorithmen, die n Zahlen in Zeit O(n log n) sortieren können. Darunter befinden sich Heapsort und Mergesort, die diese obere Grenze im schlechtesten Fall erreichen, während Quicksort dies im Mittel schafft. Für jeden der genannten Algorithmen kann eine Folge von n Eingabezahlen angegeben werden, für die der Algorithmus in der Zeit Ω(n log n)läuft. Eine interessante Eigenschaft weisen all diese Algorithmen auf: Die sortierte Reihenfolge, die sie bestimmen, basiert nur auf Vergleichen zwischen den Eingabeelementen. Daher werden diese Algorithmen auch vergleichende Sortierverfahren genannt. Die oben genannten Sortierverfahren gehören dieser Klasse an. Im nachfolgenden Abschnitt 1.1 wird bewiesen, dass im schlechtesten Fall jedes der vergleichenden Sortierverfahren Ω(n log n) Vergleichsoperationen durchführen muss, um n Elemente zu sortieren. Das bedeutet, dass Heapsort und Mergesort asymptotisch optimal sind. Dabei existieren keine anderen vergleichende Sortierverfahren, die um mehr als einen konstanten Faktor schneller sind. In Abschnitt 2, 3 und 4 werden 3 weitere Sortieralgorithmen - Countingsort, Radixsort und Bucketsort - vorgestellt, die alle in linearer Zeit sortieren. Diese Algorithmen benutzen noch andere Operationen als Vergleich, um die sortierte Reihenfolge zu bestimmen. Folglich gilt für sie die untere Grenze Ω(n log n) nicht. 1.1 Sortieren in Linearer Zeit Untere Schranke für das Sortieren Bei vergleichenden Sortierverfahren kommen ausschließlich Vergleiche zwischen den Elementen vor, um Information über die Reihenfolge der Eingabesequenz (a 1, a 2,..., a n ) zu gewinnen. Für zwei gegebene Elemente a i und a j werden für die Bestimmung der relativen Reihenfolge einer der Tests a i < a j, a i a j, a i = a j,a i a j oder a i > a j vorgenommen. Es ist nicht möglich, die Werte der Elemente zu inspizieren oder auf anderem Weg Information über sie zu erlangen. Für die folgende Diskussion werden Elemente angenommen, die paarweise verschieden sind. Unter dieser Voraussetzung sind Vergleiche der Form a i = a j nutzlos. Daraus folgt, dass Vergleiche dieser Art nicht ausgeführt werden. Außerdem wird festgestellt, dass die Vergleichsoperationen a i a j, a i a j,a i > a j und a i < a j äquivalent sind, da sie zu identischen Informationen über die Reihenfolge von a i und a j führen. Das bedeutet schlussendlich, dass alle Vergleiche von der Art a i a j sind. 3

4 1.1.2 Das Entscheidungsbaum-Modell Sortierverfahren können durch abstrakte Entscheidungsbäume dargestellt werden. Ein Entscheidungsbaum ist ein vollständiger binärer Baum, der die Vergleiche zwischen den Elementen eines vorgegebenen Eingabefeldes darstellt. Alle anderen Aspekte wie Steuerung oder Datenbewegung werden vernachlässigt. Somit zeigt der Baum, welche Operationen auf welche Elemente des Eingabefeldes einer vorgegebenen Länge durchgeführt werden. Abbildung 1.1 zeigt den Entscheidungsbaum für Insertion Sort bei der Eingabe von drei Elementen. Abbildung 1.1 Entscheidungsbaum für Insertionsort von drei Elementen. Ein mit i:j gekennzeichneter innerer Knoten stellt einen Vergleich zwischen a i und a j dar. Ein Endknoten (Blattknoten) stellt die Permutation (π(1),...., π(n)) der Eingabeelemente dar und gibt die Reihenfolge a π (1) a π (2)... a π (n) an. Der schattierte Pfad zeigt die Entscheidungen die bei der Eingabefolge (a 1 = 6, a 2 = 8, a 3 = 5) getroffen werden. Die Permutation(3,1,2) am Blattknoten dieses Pfades sagt, dass die sortierte Reihenfolge a 3 = 5 a 1 = 6 a 2 = 8 ist. Es gibt somit 3!=6 mögliche Permutationen der Eingabeelemente und so hat der Entscheidungsbaum mindestens 6 Blätter. In einem Entscheidungsbaum wird jeder interne Knoten durch i:j dargestellt, für ein i und j aus dem Bereich 1 i, j n, wobei n die Anzahl der Elemente in der Eingabefolge angibt. Jeder Blattknoten steht für eine Permutation (π(1),..., π(n)) der Eingabeelemente. Die Ausführung des Sortieralgorithmus entspricht der Verfolgung eines einfachen Pfades von der Wurzel bis hinunter zum Blattknoten. Jeder interne Knoten symbolisiert einen Ver- 4

5 gleich der Art a i a j. Führt der Vergleich zu einem positivem Ergebnis, so wird der linke Teilbaum beschritten, andernfalls der rechte. Dieses Szenario gilt für alle Knoten eines Entscheidungsbaumes. Bei Erreichen eines Blattknotens hat der Sortieralgorithmus die Reihenfolge a π (1)... a π (n) und damit sein Ziel festgelegt. Da jeder korrekt arbeitende Sortieralgorithmus in der Lage sein muss jede Permutation der Eingabe zu erzeugen, muss jede der n! Permutationen als einer der Blattknoten im Entscheidungsbaum vorkommen. Darüber hinaus muss jeder Blattknoten von einem von der Wurzel startenden Pfad erreichbar sein, der einer tatsächlichen Ausführung des vergleichenden Sortierverfahrens entspricht. Folglich werden nur solche Entscheidungsbäume betrachtet, in denen jede Permutation als erreichbarer Blattknoten erscheint Eine untere Grenze für den schlechtesten Fall Die Länge des längsten Pfades von der Wurzel eines Entscheidungsbaumes zu den erreichbaren Blattknoten stellt die Anzahl von Vergleichen dar, die im schlechtesten Fall vom Sortieralgorithmus ausgeführt werden. Folglich entspricht die Anzahl von Vergleichen eines vergleichenden Sortieralgorithmus im schlechtesten Fall der Höhe des Entscheidungsbaumes. Eine untere Grenze für die Höhe aller Entscheidungsbäume, in der jede Permutation als ein erreichbarer Blattknoten erscheint, ist folglich eine untere Grenze für die Laufzeit irgendeines vergleichenden Sortieralgorithmus Beweis Theorem 1.1. Jeder vergleichende Sortieralgorithmus erfordert im schlechtesten Fall Ω(n log n) Vergleichsoperationen. Nach der vorangegangenen Diskussion genügt es, die Höhe eines Entscheidungsbaumes zu bestimmen, in dem jede Permutation als erreichbarer Blattknoten vorkommt. Betrachte einen Entscheidungsbaum der Höhe h mit l erreichbaren Blattknoten, der für ein vergleichendes Sortierverfahren angewandt auf n Elemente steht. Da jede der n! Permutationen der Eingabefolge als Blattknoten vorkommt, gilt n! l. Da ein binärer Baum der Höhe h nicht mehr als 2 h Blattknoten hat, gilt: n! l 2 h sodass durch Anwenden des Logarithmus die Aussage folgt: h lg(n!) = Ω(n lg n) 5

6 Korollar 1.1. Heapsort und Mergesort sind asymptotisch optimale vergleichende Sortierverfahren. beweis 1.1. Die obere Grenze O(n lg n) der Laufzeiten von Heapsort und Mergesort entspricht der unteren Grenze im schlechtesten Fall von Theorem Countingsort Der Countingsort setzt für jedes Eingabeelement n voraus, dass n N 0 ist. Die Variable k nimmt den größten Wert des Eingabefeldes an. Der Algorithmus bestimmt für jede eingegebene Zahl n die Anzahl der Elemente, die kleiner sind als n. Somit wird die Position ermittelt in dem n später stehen muss. Bsp 2.1: Auf das Eingabefeld A = [2, 1, 3, 5, 7] soll ein neuer Eingabewert n = 18 eingefügt werden. n gehört im Eingabefeld an die Stelle A[5]. Hier ist zu beachten, dass man in Feldern mit der Zahl 0 beginnt zu zählen. Somit wird k = 18 dadurch das der neue Wert betragsmäßig größer ist als alle anderen Werte im Feld. Zur Optimierung des Algorithmus wird im Eingabefeld mit der Zahl 1 begonnen zu zählen und nicht wie im bsp 2.1 mit der Zahl 0. Dies hat den Vorteil, dass der Algorithmus merkt das 5 Elemente kleiner gleich n sind und somit n an stelle A[6] kommt. Dadurch wird der Vorteil gewonnen das nun das Eingabefeld A die Größe A.länge besitzt. Das erlaubt es dem Algorithmus mit den Indexwerten der Felder zu arbeiten und nicht, wie man naiv vermuten würde mit Vergleichen. Somit wird der Code für den Sortieralgorithmus so programmiert, dass die Eingabe aus einem Feld A = [1... n] und die Länge von A gleich der Anzahl der Eingabeelemente gleich n ist. Zum Code werden außerdem noch zwei weitere Felder benötigt. Ein Feld B das die sortierte Ausgabe speichert. Mit der Eigenschaft, dass dieses Feld die gleiche grösse hat wie A. Ebenso wird auch ein Hilfsfeld C benötigt was einen temporären Arbeitsspeicher darstellen soll. Dieses Feld zählt wie oft ein Wert in A vorkommt und wie viele Werte kleiner sind als A[i], i (1,..., A.Länge). Anders als bei den Ein- und Ausgabefeld beginnt das Hilfsfeld mit dem Wert 0 zu zählen und hat die Länge k. Im Bsp 2.1 wäre k = 18 und somit wäre C[0...18] und C.Länge = 19. 6

7 Abbildung 2.1 Abbildung 2.1 zeigt die Arbeitsweise von Countingsort auf das Eingabefeld A[1..8], alle Elemente des Feldes sind positive Zahlen die 5 sind. (a) Das Feld A und das Hilfsfeld C nach Ausführung von Zeile 5. Das bedeutet, dass in C steht wie oft jeder Wert in A vorkommt.(b) Das Feld C nach Zeile 8. Jetzt kennt C durch Aussumieren über A n n+1 + A n n A n alle Werte die kleiner sind als i. (c)-(e) Das Ausgabefeld B und das Hilfsfeld C nach drei Iterationen der Schleife aus den Zeilen Nur die schattierten Elemente des Feldes B wurden eingeführt. (f) Das abschließende sortierte Ausgabefeld B. Abbildung 2.2 Abbildung 2.2 gibt die Arbeitsweise des Countingssorts wieder. Die for- Schleife in Zeile 2 und 3 setzt jedes Element von C auf 0. Danach folgt die Schleife in 4 und 5. Hier arbeitet der Code mit der Laufvariable j = 1 und geht bis zur Größe von A. Mit dieser Schleife inkrementiert dieser dann im 7

8 Feld C den Wert von A[j] an der Position C[A[j]]. Somit erhalten wir wie oft der Wert in unserem Eingabef eld vorkommt. In den Zeilen 7-8 bekommt man durch aufsummieren wie viele Elemente kleiner als i sind. Hier ist zu beachten, dass das Feld C bei der 0 anfängt zu zählen. In der letzten Schleife platziert der Algorithmus jedes Element von A[j] an der richtigen Stelle im Ausgabefeld. Sollten alle Eingabeelemente paarweise verschieden sein, werden diese beim erstmaligen ausführen von Zeile 10 für jedes A[j] der Wert C[A[j]] in dessen richtige Endposition im Ausgabefeld bestimmt. Wieso das so ist, ist leicht nachzuvollziehen. Dadurch, dass es C[A[j]] Elemente gibt die kleiner oder gleich A[j] sind, kann es nie anders auftreten. Der Algorithmus schließt nicht aus, dass die Elemente paarweise verschieden sein müssen deswegen wird im Code C[A[j]] jedes mal dekrementiert, wenn er einen Wert A[j] in das Ausgabefeld B schreiben muss. Das bewirkt, falls ein Wert A[j] geschrieben werden soll und der Gleiche Wert im Ausgabefeld schon vorhanden ist, dieser an die unmittelbar vorherige Position von A[j] geschrieben wird. 2.1 Zeit von Countingsort Welche Zeit benötigt der Algorithmus Die Schleife in Zeile 2-3 benötigt die Zeit Θ(k), die Schleife der Zeilen 4-5 läuft in Zeit Θ(n) und die Schleife in Zeile 7-8 braucht genauso wie die Schleife aus Zeile 2-3 Θ(k) Zeit. Die letzte wiederum braucht auch Θ(n). Daraus folgt, dass die Gesamtlaufzeit von Countingsort nur Θ(n + k) Zeit braucht. In der Praxis ist es erstrebenswert das k = O(n) ist. Dadurch das dann das Verfahren auch in Θ(n) Zeit läuft. Die bewiesene Untere Schranke aus Abschnitt 1.1 gilt hier nicht, da der Countingsort diese tatsächlich unterbietet, da es kein vergleichbares Sortierverfahren ist. Im Code kommen auch keine Vergleiche zwischen den Elementenvor. Stattdessen arbeitet dieses Sortierverfahren mit den reellen Werten der Elemnte als Index in einem Feld. Die untere Schranke von Ω(n lg n) gilt nicht, wenn Sortierverfahren betrachtet werden die nicht vergleichbar sind. Eine wichtige Eigenschaft des Countingsort ist, dass er stabil ist. Dadurch, dass die Zahlen mit gleichen Werten im Ausgabefeld in der gleichen Reihenfolge erscheinen, wie sie eingelesen wurden. Das beduetet sind zwei Zahlen gleich entscheidet der Algorithmus, dass die zuerst eingelesene Zahl aus dem Eingabefeld als erstes in das Ausgefeld geschrieben wird. Eigentlich ist die Stabilität nur von Bedeutung, wenn auch sogenannte Satellitendaten mit den zu sortierenden Elementen mitgeführt werden. Die Stabilität ist jedoch aus noch einem anderen Grund wichtig. Der Countingsort wird meist als Unteroutine von Radixsort verwendet. 8

9 3 Radixsort Dieser Algorithmus hatte seinen Höhepunkt zur Zeit der Lochkarten, wie diese die man heute nur noch in Museen findet. 3.1 Lochkarten Die Lochkarte war zur seiner damaligen Zeit essentiell was die Datenverarbeitung betraf. Sie diente als Eingabe und Speichermedium. Die Lochkarten haben insgesamt 80 Spalten und 12 Zeilen. Die Zeilen stellen die Dezimalzahlen von 0 bis einschließlich 9 dar. Die restlichen Zeilen dienen als Vorzeichen, sprich dem plus und dem minus. Die Spalten wiederum müssen nicht als eine Zahl gewertet werden sondern lassen sich aufteilen. So könnte ein Unternehmen, dass die Ware mit der Produktnummer Y an den Kunden X, zum Preis i,mit der Stückzahl Z verkauft, auswerten. Teilt man diese 80 Spalten durch vier, hätte jeder dieser Variablen 20 Spalten für sich. Da es jedoch unnötig ist dem Preis i 20 Spalten zuzuweisen, da der Preis in der Regel aus einigen vorkomma, und aus genau zwei nachkomma stellen, besteht. So teilt dieses Unternehmen für X = 30 Spalten, Y = 20, Z = 20 und i = 10, zu. Das Unternehmen erstellt jetzt einen Datensatz auf einer Lochkarte, auf einer der die Werte festgehalten werden. Bsp 3.1 Kunde Müller Kunden I D = 213 kauft das Produkt mit der Produktnummer=1457 zum Preis von 14 Euro und einer Stückzahl von 1000 Stück. Wie im Bsp 3.1 gezeigt wird hat der Kunde Müller die Kunden id von 213 das setzt voraus das es weitere Kunden gibt und zwar mindestens 212 weitere. Beim Radixsort bietet es sich an, wenn jeder Wert der ausgewertet werden soll die gleiche Größe hat. So würde der Kunde 3 und 212 schwer zu sortieren sein. Deswegen werden die freien Plätze der Lochkarte mit 0 Initalisiert. Dies bedeutet wenn von 30 stellen tatsächlich nur 3 stellen verwendet werden, werden die restlichen Spalten mit 0 Initialisiert. Angenommen das Unternehmen hat einem Tag nicht nur einen Kunden, sondern 1000, so kann jetzt der Tagesumsatz nach der Größe sortiert werden. Es wird jedoch verausgesetzt, dass die Daten von einer geeigneten Kartenlesemaschine auf einen Computer überspielt werden und dieser die Daten dann Verarbeiten kann, Voraussetzung ist hier eine entsprechenden Programmierung. Nicht nur Zahlen sondern auch Buchstaben und Sonderzeichen lassen sich auf einer Lochkarte kodieren. Ermöglicht wird das durch Merhfachlochungen innerhalb einer Spalte verschiedene Zeichen sind mit 12 Löchern darstellbar. 9

10 3.2 Radixsort Für den weiteren Verlauf des Algorithmuses wird das Bsp 3.1 betrachtet. Jedoch werden die Kunden nach Kundennummer sortiert. Hier bietet sich der Radixsort gut an. Der Radixsort arbeitet in dem es jeweils eine Zahl aus allen Datensätzen vergleicht und diese dann sortiert.rein Inutitiv sollte man meinen, dass es sich anbietet Zahlen des Datensatzes mit dem Höchstwertigen Bit anzufangen zu vergleichen und dann zu Sortieren. Jedoch darf man hier nicht vergessen, dass der Algrithmus aus der Lochkarten Zeit stammt und diese Prozedur zu viele temporäre Stapel erzeugen würde. Entgegen der Intuition löst Radixsort das Problem indem es zuerst nach der Stelle mit der geringsten Wertigkeit sortiert. Daraufhin fügt dieser dann die Karten zu einem Kartenstapel zusammen, wobei die Karten aus dem Kasten 0 vor denen des Kasten 1 kommen, dieser wiederum vor denen aus Kasten 2 und so weiter. Ist dies für die geringste Wertigkeit abgeschlossen beginnt der Algorithmus mit der zweitgeringsten Wertigkeit und fügt sie auf die gleiche Art und weise wieder zusammen. Dies wird fortgeführt bis die Karten nach allen 30 Stellen sortiert wurden. Bemerkenswerter weise sind die Karten zu diesem Zeitpunkt vollständig nach der 30-stelligen Zahl sortiert. Somit werden zum Sortieren nur 30 durchläufe durch den Kartenstapel gebraucht. Bsp radix sort. Abbildung 3.1 Damit der Radixsort korrekt sortieren kann, muss das Verfahren zum Sortieren nach einer Stelle stabil sein. Das Sortierverfahren ist auch Stabil, jedoch muss der Operator darauf achten, dass die Reihenfolge der Lochkarten in der sie aus dem Kasten kommen nicht verändert werden. Auch nicht dann 10

11 wenn alle Lochkarten eines Kastens in der gewählten Spalte die gleiche Ziffer stehen haben. Bsp 3.2 Ein Beispiel aus heutiger Zeit ohne Lochkarten. Radixsort wendet man an, um Datensätze zu sortieren, die aus mehreren Komponenten-Schlüssel bestehen wie ein Datum. Bei einem Datum gibt es drei Schlüssel: der Tag, der Monat und das Jahr. Als erstes wird nach dem Jahr Sortiert sollten diese übereinstimmen, dann nach Monat und dann gegebenenfalls nach dem Tag. 3.3 Code von Radixsort Der Code für Radixsort ist einfach. Der Algorithmus setzt voraus das jedes Element des Feldes aus einer d stelligen Zahl besteht wobei die Stelle 1 die niederwertigste Stelle ist und die Stelle d die höchstwertigste. Im Zusammenspiel mit Countingsort wird auch vorausgesetzt, dass die Zahlen ganze Positive Zahlen sind. Abbildung 3.2: Code von Radixsort 3.4 Lemma 1.3 Sind n d-stellige Zahlen gegeben, bei denen jede Stelle k mögliche Werte annehmen kann, sortiert Radixsort diese Zahlen in der Zeit Θ(d(n + k)), wenn das in den Zwischenschritten verwendete stabile Sortierverfahren jeweils Zeit Θ(n + k) benötigt. Beweis: Die Richtigkeit von Radixsort erfolgt durch Induktion. Die Analyse der Laufzeit hängt von dem im Zwischenschritt verwendeten stabilen Sortierverfahren ab. Wenn jede Stelle im Bereich von 0 bis k 1 liegt, sodass sie k mögliche Werte annehmen kann und k nicht zu groß ist, dann ist Countingsort die naheliegende Wahl. Jeder Durchlauf über die n d-stellige Zahlen benötigt dabei die Zeit θ(n+k). Es gibt somit d Durchläufe und die gesamte 11

12 Laufzeit für Radixsort θ(d(n + k)). Für konstantes d und k = O(n) läuft Radixsort in Linearer Zeit. 3.5 Lemma 1.4 Bei gegebenen n b-bit Zahlen und einer positiven Zahl r b sortiert Radixsort diese Zahlen in der Zeit von Θ((b/r)(n + 2 r ), wenn das verwendete stabile Sortierverfahren für die Zahlen im Bereich von 0 bis k die Zeit Θ(n + k) benötigt. Beweis: Für einen Wert r b wird jeder Schlüssel in d = b/r Stellen von r Bits unterteilt. Jede Stelle kann als eine Zahl im Bereich von 0 bis 2 r 1 betrachtet werden, mit dem Effekt, dass der Countingsort mit k = 2 r zur Anwendung kommt. Unterteilt man z.b. ein 32-Bit Wort in 4 Stellen zu jeweils 8 Bits, dann ist b = 32, r = 8, k = 2 r = 256 und d = b/r = 4. Jeder Durchlauf des Countingsort benötigt also Θ(n + k) = θ(n + 2 r ) Zeit. Es sind d Durchläufe notwendig, mit einer Gesamtlaufzeit von θ(d(n + 2 r )) = θ((b/r)/(n + 2 r )). Sind Werte für n und b gegeben, dann kann der Wert von r, unter Berücksichtigung von r b, dahingehend gewählt werden, dass der Ausdruck (b/r)(n + 2 r ) minimiert wird. Ist b < lg n, dann gilt für jeden Wert r b die Gleichung (n + 2 r ) = θ(n). Wird r = b gewählt, dann ergibt sich eine Laufzeit von (b/b)(n/ + 2 b ) = θ(n), was asymptotisch optimal ist. Ist b lg n, dann wird mit der Wahl r = lg n die, bis auf eine Konstante, beste Laufzeit erreicht. Mit der Wahl von r = lg n beträgt die Laufzeit θ(bn/ lg n). Ist der Wert von r, wie oben angegeben, größer als lg n, dann wächst der 2 r Term im Zähler schneller als der r Term im Nenner; das führt zu einer Laufzeit von Ω(bn/ lg n). Ist der Wert von r dagegen kleiner als lg n, dann wächst der Term b/r und der Term n + 2 r bleibt bei Θ(n). Die Frage lautet also: Ist Radixsort einem vergleichenden Sortieralgorithmus, wie z.b. Quicksort, vorzuziehen? Angenommen b = O(lg n), was oft der Fall ist, und r lg n, dann beträgt die Laufzeit von Radixsort Θ(n). Im ersten Augenblick erscheint dies besser zu sein als die Laufzeit von Quicksort mit Θ(n lg n). Jedoch unterscheiden sich die konstanten, verborgenen Faktoren in der Θ Notation. Obwohl Radixsort eventuell weniger Durchläufe als Quicksort für die n Schlüssel benötigt, ist es vorstellbar, dass ein Durchlauf bei Radixsort eine signifikant längere Zeit braucht. Welcher Sortieralgorithmus nun vorzuziehen ist, hängt in erster Linie von den Eigenschaften der Implementierung ab, von der zugrunde liegenden Maschine (Quicksort ist bei der Nutzung von Hardware Caches oft effektiver als Radixsort) und von der Eingabe ab. Darüber hinaus sortiert die Version von Radixsort, die zwischendurch Countingsort verwendet, nicht in-place, was aber die Mehrheit 12

13 der vergleichenden Sortieralgorithmen mit einer Laufzeit von Θ(n lg n) tun. Folglich ist unter der Prämisse, dass primärer Speicher in ausreichender Zahl zur Verfügung steht, ein in-place Sortieralgorithmus wie Quicksort die erste Wahl. 4 Bucketsort Der Bucketsort unterliegt der Eigenschaft das die Eingabe unter der Gleichverteilung auftritt und hat eine mittlere Laufzeit von O(n). Bucketsort und der Countingsort sind schnell da sie gewisse Annahmen über die Eingabe treffen. Während der Countingsort vorgibt, dass die Eingabe positive ganze Zahlen aus einem kleinen Bereich sein müssen, geht Bucketsort davon aus, dass die Eingabe durch zufällige Prozesse erzeugt wird. Dieser Prozess verteilt die Eingabe gleichmäßig und unabhängig voneinander über den Zahlenbereich [0, 1) d.h die Eingabe darf nur von einschließlich 0 bis zur 1 gehen ohne die 1 selbst. Der Algrithmus teilt das Interval [0, 1) in Buckets auf, diese Intervalle sind gleichgroß, daraufhin verteilt er die n Eingabezahlen in diesem Bereich. Sind die Eingabezahlen gleichmäßig und unabhängig von einander verteilt ist nicht zu erwarten das viele Zahlen in die gleichen Buckets einsortiert werden. Um eine Ausgabe zu erzeugen werden die Zahlen innerhalb des Buckets sortiert und der Reihe nach ausgegeben. Der Code für den Bucketsort setzt voraus das die Eingabe ein Feld A mit der Größe n ist und jedes Element A[i] die Bedingung 0 a[i] < 1 erfüllt. Wie auch beim Countingsort wird hier ein Hilfsfeld benötigt mit der Größe b = [0... n 1]. Da dieser Algorithmus mit verketteten Listen (die Buckets) arbeitet, brauchen wir n solcher Hilfsfelder. Im Pseudocode wird davon ausgegangen das eine Verwaltung solcher Felder schon vorhanden ist (siehe code 8-9) 13

14 Abbildung 4.1: Code Bucketsort Abbildung 4.2 Um zu verstehen wie dieser Algorithmus arbeitet betrachtet man zwei Elemente A[i] und A[j]. unter der Annahme, ohne Beschränkung auf die Allgemeinheit, das A[i] A[j] ist. Wegen na[i] na[j] wird A[i] entweder in die gleiche Liste (Bucket) wie A[j] sortiert oder in eines mit einem kleinerem Index. Sollten A[i] und A[j] in das gleiche Bucket einsortiert werden, sorgt die for Schleife in zeile 7-8 dafür, dass diese in die richtige Reihenfolge kommen. Sollten diese Elemente in unterschiedliche Buckets kommen, dann sorgt die Schleife in Zeile 9 dafür, dass diese richtig sortiert werden. Somit arbeitet Bucketsort korrekt. 4.1 Laufzeit Bucketsort Um die Laufzeit auszuwerten, stellt man fest, dass alle Zeilen außer Zeile 8 im schlechtesten Fall die Zeit O(n) benötigt. Dabei legt man die Zeit fest, die durch die n Aufrufe von Sortieren durch Einfügen in Zeile 8 verbraucht wird. Um die Kosten für die Aufrufe von Sortieren durch Einfügen zu untersuchen, 14

15 führt man die Zufallsvariable n i ein, die die Anzahl der Elemente in Bucket B[i] beschreibt. Das Sortieren durch Einfügen in quadratischer Zeit läuft, ist die Laufzeit von Bucketsort n 1 T (n) = Θ(n) + O(n 2 i ). Nun bestimmt man die Laufzeit im Mittel von Bucketsort, indem die erwartete Höhe der Laufzeit berechnet wird und die Eingangsverteilung zu Grunde gelegt wird. Auf beiden Seiten wird ein Erwartungswert gebildet und dabei dessen Linearität ausgenutzt, so erhält man i=0 n 1 E[T (n)] = E[θ(n) + O(n 2 i )] i=0 n 1 = θ(n) + E[O(n 2 i )] wegen der Liniarität des Erwartungswertes i=0 n 1 = θ(n) + O(E[n 2 i ]) i=0 Wir behaupten, dass E[n 2 i ] = 2 1/n für i = 0, 1,..., n 1 gilt. Es überrascht nicht, dass jedes Bucket i für (E[n 2 i ]) den gleichen Wert hat, denn jeder Wert des Eingabefeldes A hat für jedes Bucket die gleiche Wahrscheinlichkeit, um in dieses eingefügt zu werden. Um die Gleichung E[n 2 i ] = 2 1/n zu beweisen, definieren wir die Indikatorfunktionen X ij = I{A[j] wird in Bucket i eingefügt} für i = 0, 1,..., n 1 und j = 1, 2,..., n. somit gilt n i = n j=1 X ij. Um (E[n 2 i ]) zu berechnen, multiplizieren wir das Quadrat aus und ordnen die Terme um: 15

16 (E[n 2 i ]) = n E j=1 n = E X ij j=1 k=1 2 n X ij X ik n = E Xi 2 j + = j=1 1 j n n E[Xi 2 j] + j=1 1 j n 1 i m k j 1 i m k j X ij X ik E[X ij X ik ] Die letzte Zeile folgt aus der Linearität des Erwartungswertes. Wir werten die beiden Summen seperat aus. Die Indikatorfunktion X ij ist mit einer Wahrscheinlichkeit 1/n gleich 1 und mit einer Wahrscheinlichkeit 1 1/n gleich 0; also gilt: (E[Xi 2 j]) = ( n ) n = 1 n für k j sind die Variablen X ij und X ik unabhängig, sodass (E[X ij X ij ]) = E[X ij ] E[X ik ] = 1 n 1 n = 1 n 2 16

17 gilt. Substituieren wir diese beiden Erwartungswerte in die Gleichung, so erhalten wir (E[n 2 i ] = j=1 1 n + 1 j n 1 k n k j = n 1 n + n(n 1) 1 n 2 = 1 + n 1 n = 2 1 n 1 n 2 womit die Gleichung bewiesen ist. Setzen wir diese Erwartungswerte in die Gleichung ein, so sehen wir, dass die Laufzeit von Bucketsort im Mittel in Θ(n) + O(2 1/n) = θ(n) ist. Selbst wenn die Eingabefolge nicht einer gleichmäßigen Verteilung genügt, kann Bucketsort in linearer laufzeit laufen. Solange die Eigenschaft erfüllt ist, dass die Summe der Quadrate der Bucketgrößsen linear in der Gesamtzahl der Elemente ist, sagt uns die erste Gleichung, dass Bucketsort in linearer Zeit laufen wird. 17

18 5 Literatur Thomas H.Cormen. Introduction to Algorithms. Third Edition. July Alle Bilder und Beweise in dieser Arbeit wurden aus diesem Buch übernommen 18

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2 Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte Algorithmen 2. Erste Beispiele Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest

Mehr

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

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

Mehr

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch

Mehr

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

Mehr

Folge 13 - Quicksort

Folge 13 - Quicksort Für Abiturienten Folge 13 - Quicksort 13.1 Grundprinzip des Quicksort Schritt 1 Gegeben ist ein unsortierter Array von ganzen Zahlen. Ein Element des Arrays wird nun besonders behandelt, es wird nämlich

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch

Mehr

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6. November 2014 (O-Notation, Theta, Omega) Junior-Prof. Dr. Olaf Ronneberger

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

Übungsblatt 2 - Lösung

Übungsblatt 2 - Lösung Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 2 - Lösung Vorlesung Algorithmentechnik im WS 08/09 Ausgabe 04. November 2008 Abgabe 8. November, 5:0 Uhr (im Kasten vor Zimmer

Mehr

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 12 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n) Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

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

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016 und Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016 25. April 2016 Die Dimensionsformel Definition 3.9 Sei f : V W eine lineare Abbildung zwischen zwei K-Vektorräumen. Der Kern

Mehr

Grundlagen der Programmierung 2. Sortierverfahren

Grundlagen der Programmierung 2. Sortierverfahren Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge

Mehr

Permutationen und symmetrische Gruppe

Permutationen und symmetrische Gruppe Permutationen und symmetrische Gruppe Für eine beliebige Menge M bilden die Bijektionen von M in M, versehen mit der Komposition von Abbildungen als Operation, eine Gruppe, die sogenannte symmetrische

Mehr

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 17 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 08.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

Mehr

Referat zum Thema Huffman-Codes

Referat zum Thema Huffman-Codes Referat zum Thema Huffman-Codes Darko Ostricki Yüksel Kahraman 05.02.2004 1 Huffman-Codes Huffman-Codes ( David A. Huffman, 1951) sind Präfix-Codes und das beste - optimale - Verfahren für die Codierung

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

Mehr

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Studiengang Bachelor of Computer Science Modulprüfung Praktische Informatik 1 Wintersemester 2010 / 2011 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und

Mehr

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen 3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge

Mehr

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Dynamisches Huffman-Verfahren

Dynamisches Huffman-Verfahren Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über

Mehr

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Übung zur Vorlesung Algorithmische Geometrie

Übung zur Vorlesung Algorithmische Geometrie Übung zur Vorlesung Algorithmische Geometrie Dipl.-Math. Bastian Rieck Arbeitsgruppe Computergraphik und Visualisierung Interdisziplinäres Zentrum für Wissenschaftliches Rechnen 8. Mai 2012 B. Rieck (CoVis)

Mehr

Gruber I Neumann. Erfolg in VERA-8. Vergleichsarbeit Mathematik Klasse 8 Gymnasium

Gruber I Neumann. Erfolg in VERA-8. Vergleichsarbeit Mathematik Klasse 8 Gymnasium Gruber I Neumann Erfolg in VERA-8 Vergleichsarbeit Mathematik Klasse 8 Gymnasium . Zahlen Zahlen Tipps ab Seite, Lösungen ab Seite 0. Zahlen und Zahlenmengen Es gibt verschiedene Zahlenarten, z.b. ganze

Mehr

37 Gauß-Algorithmus und lineare Gleichungssysteme

37 Gauß-Algorithmus und lineare Gleichungssysteme 37 Gauß-Algorithmus und lineare Gleichungssysteme 37 Motivation Lineare Gleichungssysteme treten in einer Vielzahl von Anwendungen auf und müssen gelöst werden In Abschnitt 355 haben wir gesehen, dass

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

3. Musterlösung. Problem 1: Boruvka MST

3. Musterlösung. Problem 1: Boruvka MST Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner. Musterlösung Problem : Boruvka MST pt (a) Beweis durch Widerspruch. Sei T MST von G, e die lokal minimale Kante eines

Mehr

Vorkurs: Mathematik für Informatiker

Vorkurs: Mathematik für Informatiker Vorkurs: Mathematik für Informatiker Teil 3 Wintersemester 2016/17 Steven Köhler mathe@stevenkoehler.de mathe.stevenkoehler.de 2 c 2016 Steven Köhler Wintersemester 2016/17 Inhaltsverzeichnis Teil 1 Teil

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 32 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 32 1 Überblick: was ist Effizienz? 2 Landau-Symbole 3 Eier im Korb 4

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Darstellungsformeln für die Lösung von parabolischen Differentialgleichungen

Darstellungsformeln für die Lösung von parabolischen Differentialgleichungen Kapitel 8 Darstellungsformeln für die Lösung von parabolischen Differentialgleichungen Wir hatten im Beispiel 5. gesehen, dass die Wärmeleitungsgleichung t u u = f auf Ω (0, ) (8.1) eine parabolische Differentialgleichung

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe 1 (Güte von Hashfunktionen): Untersuchen Sie, inwiefern sich die folgenden Funktionen

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Vom Leichtesten zum Schwersten Sortieralgorithmen

Vom Leichtesten zum Schwersten Sortieralgorithmen Aktivität 7 Vom Leichtesten zum Schwersten Sortieralgorithmen Zusammenfassung Häufig verwendet man Computer dazu Listen von Elementen in eine bestimmte Ordnung zu bringen. So kann man beispielsweise Namen

Mehr

Seminar über Algorithmen, SS2004. Textkompression. von Christian Grümme und Robert Hartmann

Seminar über Algorithmen, SS2004. Textkompression. von Christian Grümme und Robert Hartmann Seminar über Algorithmen, SS2004 Textkompression von Christian Grümme und Robert Hartmann 1. Einleitung Textkompression wird zur Verringerung des Speicherbedarfs und der Übertragungskapazität von allgemeinen

Mehr

Dieses Quiz soll Ihnen helfen, Kapitel besser zu verstehen.

Dieses Quiz soll Ihnen helfen, Kapitel besser zu verstehen. Dieses Quiz soll Ihnen helfen, Kapitel 2.5-2. besser zu verstehen. Frage Wir betrachten ein Würfelspiel. Man wirft einen fairen, sechsseitigen Würfel. Wenn eine oder eine 2 oben liegt, muss man 2 SFr zahlen.

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme Universität Hamburg Fachbereich Mathematik Seminar: Proseminar Graphentheorie Dozentin: Haibo Ruan Sommersemester 2011 Ausarbeitung zum Modulabschluss Graphentheorie spannende Bäume, bewertete Graphen,

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form. für Informatik Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Vollständige Induktion): Finden Sie eine geschlossene Form für die

Mehr

Antwort: h = 5.70 bit Erklärung: Wahrscheinlichkeit p = 1/52, Informationsgehalt h = ld(1/p) => h = ld(52) = 5.70 bit

Antwort: h = 5.70 bit Erklärung: Wahrscheinlichkeit p = 1/52, Informationsgehalt h = ld(1/p) => h = ld(52) = 5.70 bit Übung 1 Achtung: ld(x) = Logarithmus dualis: ld(x) = log(x)/log(2) = ln(x)/ln(2)! Aufgabe 1 Frage: Wie gross ist der Informationsgehalt einer zufällig aus einem Stapel von 52 Bridgekarten gezogenen Spielkarte?

Mehr

Kurs über Lineare Gleichungssysteme. PD Dr. Karin Halupczok

Kurs über Lineare Gleichungssysteme. PD Dr. Karin Halupczok Kurs über Lineare Gleichungssysteme PD Dr. Karin Halupczok Mathematisches Institut Albert-Ludwigs-Universität Freiburg http://home.mathematik.unifreiburg.de/halupczok/diverses.html karin.halupczok@math.uni-freiburg.de

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)

Mehr

2. Spezielle anwendungsrelevante Funktionen

2. Spezielle anwendungsrelevante Funktionen 2. Spezielle anwendungsrelevante Funktionen (1) Affin-lineare Funktionen Eine Funktion f : R R heißt konstant, wenn ein c R mit f (x) = c für alle x R existiert linear, wenn es ein a R mit f (x) = ax für

Mehr

2. Felder (Arrays) 2.1 Suchen in Feldern. lineares Suchen: siehe Kapitel 1. Binäres Suchen. Vor.: Elemente (z.b. aufsteigend) sortiert

2. Felder (Arrays) 2.1 Suchen in Feldern. lineares Suchen: siehe Kapitel 1. Binäres Suchen. Vor.: Elemente (z.b. aufsteigend) sortiert 10 2.1 Suchen in Feldern 2. Felder (Arrays) lineares Suchen: siehe Kapitel 1 Binäres Suchen Vor.: Elemente (z.b. aufsteigend) sortiert ( später) Idee: Divide & Conquer (teile und herrsche) public

Mehr

TU Darmstadt FB Mathematik, AG 9 WS 2004/2005 Jakob Creutzig (1 + ρ)

TU Darmstadt FB Mathematik, AG 9 WS 2004/2005 Jakob Creutzig (1 + ρ) TU Darmstadt FB Mathematik, AG 9 WS 2004/2005 Jakob Creutzig 9..04 Lösungsvorschläge zum 3. Aufgabenblatt der Vorlesung,,Einführung in die Finanzmathematik Gruppenübungen Aufgabe : Es sei Ω = {, +} n,

Mehr

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck Lemma 15 KLP 1 ist genau dann lösbar, wenn das dazugehörige LP KLP 2 eine Lösung mit dem Wert Z = 0 besitzt. Ist Z = 0 für x 0, x 0, dann ist x eine zulässige Lösung von KLP 1. Beweis von Lemma 15: Nach

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Effiziente Algorithmen

Effiziente Algorithmen Effiziente Algorithmen Aufgabe 5 Gruppe E Martin Schliefnig, 0160919 Christoph Holper, 9927191 Ulrike Ritzinger, 0125779 1. Problemstellung Gegeben ist eine Datei, die eine Million reelle Zahlen enthält.

Mehr

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

damit hätten wir nach Ende der Schleife: a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge. Korrektheit Invariante: a[0 k-1] enthält nur Elemente aus a[0 k-1], aber in sortierter Reihenfolge Terminierung: Die Schleife endet mit k=n def insertionsort(a): for k in range( 1, len(a) ): while i >

Mehr

Die (Un-)Sicherheit von DES

Die (Un-)Sicherheit von DES Die (Un-)Sicherheit von DES Sicherheit von DES: Bester praktischer Angriff ist noch immer die Brute-Force Suche. Die folgende Tabelle gibt eine Übersicht über DES Kryptanalysen. Jahr Projekt Zeit 1997

Mehr

31 Polynomringe Motivation Definition: Polynomringe

31 Polynomringe Motivation Definition: Polynomringe 31 Polynomringe 31.1 Motivation Polynome spielen eine wichtige Rolle in vielen Berechnungen, einerseits weil oftmals funktionale Zusammenhänge durch Polynome beschrieben werden, andererseits weil Polynome

Mehr

Informatik II. Sommersemester 2011 IV/X/MMXI, Name:... Matrikelnummer:...

Informatik II. Sommersemester 2011 IV/X/MMXI, Name:... Matrikelnummer:... Prof. G. Zachmann Dipl.-Inf. D. Mohr TU Clausthal Institut für Informatik Klausur zu Informatik II Sommersemester 2011 IV/X/MMXI, 14 00 15 00 Name:......................... Matrikelnummer:.........................

Mehr

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht

Mehr

Lösungen zur Klausur GRUNDLAGEN DER WAHRSCHEINLICHKEITSTHEORIE UND STATISTIK

Lösungen zur Klausur GRUNDLAGEN DER WAHRSCHEINLICHKEITSTHEORIE UND STATISTIK Institut für Stochastik Dr. Steffen Winter Lösungen zur Klausur GRUNDLAGEN DER WAHRSCHEINLICHKEITSTHEORIE UND STATISTIK für Studierende der INFORMATIK vom 17. Juli 01 (Dauer: 90 Minuten) Übersicht über

Mehr

Unabhängigkeit KAPITEL 4

Unabhängigkeit KAPITEL 4 KAPITEL 4 Unabhängigkeit 4.1. Unabhängigkeit von Ereignissen Wir stellen uns vor, dass zwei Personen jeweils eine Münze werfen. In vielen Fällen kann man annehmen, dass die eine Münze die andere nicht

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.

Mehr

3. Das Reinforcement Lernproblem

3. Das Reinforcement Lernproblem 3. Das Reinforcement Lernproblem 1. Agierender Agent in der Umgebung 2. Discounted Rewards 3. Markov Eigenschaft des Zustandssignals 4. Markov sche Entscheidung 5. Werte-Funktionen und Bellman sche Optimalität

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1)

In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N. Wenn (mit einem n > 1) 34 Determinanten In diesem Abschnitt betrachten wir nur quadratische Matrizen mit Komponenten aus einem Körper K, also A K n n für ein n N Wenn (mit einem n > 1) a 11 a 12 a 1n a 21 a 22 a 2n A =, (1)

Mehr

Klausur Informatik B April Teil I: Informatik 3

Klausur Informatik B April Teil I: Informatik 3 Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.

Mehr

1 Zahlentheorie. 1.1 Kongruenzen

1 Zahlentheorie. 1.1 Kongruenzen 3 Zahlentheorie. Kongruenzen Der letzte Abschnitt zeigte, daß es sinnvoll ist, mit großen Zahlen möglichst einfach rechnen zu können. Oft kommt es nicht darauf, an eine Zahl im Detail zu kennen, sondern

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

k np g(n, p) = Pr p [T K] = Pr p [T k] Φ. np(1 p) DWT 4.1 Einführung 359/467 Ernst W. Mayr

k np g(n, p) = Pr p [T K] = Pr p [T k] Φ. np(1 p) DWT 4.1 Einführung 359/467 Ernst W. Mayr Die so genannte Gütefunktion g gibt allgemein die Wahrscheinlichkeit an, mit der ein Test die Nullhypothese verwirft. Für unser hier entworfenes Testverfahren gilt ( ) k np g(n, p) = Pr p [T K] = Pr p

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Klausur zur Vorlesung,,Algorithmische Mathematik II

Klausur zur Vorlesung,,Algorithmische Mathematik II Institut für angewandte Mathematik, Institut für numerische Simulation Sommersemester 2015 Prof. Dr. Anton Bovier, Prof. Dr. Martin Rumpf Klausur zur Vorlesung,,Algorithmische Mathematik II Bitte diese

Mehr

Stochastik I. Vorlesungsmitschrift

Stochastik I. Vorlesungsmitschrift Stochastik I Vorlesungsmitschrift Ulrich Horst Institut für Mathematik Humboldt-Universität zu Berlin Inhaltsverzeichnis 1 Grundbegriffe 1 1.1 Wahrscheinlichkeitsräume..................................

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr