> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik
|
|
- Lorenz Hummel
- vor 6 Jahren
- Abrufe
Transkript
1 > Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013 Parallele und Verteilte Systeme, Institut für Informatik
2 Inhaltsverzeichnis 2 1 Besprechung des 4. Übungsblattes Aufgabe 9: Globales OR Aufgabe 10: Suchen im vorsortierten Array 2 Quicksort auf CRCW-PRAM
3 Globales OR 3 Gesucht ist die Lösung von: b 0 b 1 b n 1 (globales OR) Schreiben Sie einen sequentiellen Algorithmus für dieses Problem und geben Sie dessen Komplexität an. Sequentieller Algorithmus for (i = 1; i < n; ++i) b[0] = b[i]; /* Ergebnis in b[0] */ Komplexität: O(n)
4 Globales OR auf CREW-PRAM 4 Gesucht ist die Lösung von: b 0 b 1 b n 1 (globales OR) Geben Sie einen möglichst schnellen Algorithmus für eine CREW-PRAM an. Welche asymptotische Komplexität hat er? Algorithmus für CREW-PRAM-Reduktion mit assoziativem OR; n/2 Prozessoren for all n/2 procs: for (j = 0; j < (log(n - 1) + 1); ++j) if (pid % (1<<j) == 0 && (2*pid+(1<<j)) < n) /* Prozessor pid an Berechnung beteiligt, zweiter Operand vorhanden */ b[2*pid] = b[2*pid+(1<<j)]; /* Ergebnis in b[0] */ Komplexität: O(log n) nicht kostenoptimal: O(logn) n/2 > O(n)
5 Globales OR auf CREW-PRAM 5 Kostenoptimalität erreichbar? Ja, falls O(logn) p = O(n) p = n logn Aber: Zeitkomplexität steigt, falls Prozessorenzahl sinkt Jeder Prozessor sortiert sequential n = logn Elemente: O(logn) p Zeitkomplexität also O(log n) +O(logn) = O(logn) }{{}}{{} Sortieren Reduktion
6 Globales OR auf CRCW-COMMON-PRAM 6 Gesucht ist die Lösung von: b 0 b 1 b n 1 (globales OR) Geben Sie einen möglichst schnellen Algorithmus für eine CRCW-COMMON-PRAM und seine asymptotische Komplexität an. Algorithmus auf CRCW-COMMON-PRAM; n Prozessoren result = true; // Annahme: mindestens 1 Bit gesetzt /* result wird false, falls kein Bit gesetzt */ result = b[pid]; Komplexität: O(1) kostenoptimal: O(1) n = O(N)
7 Aufgabe 10: Suchen im vorsortierten Array 7 Schreiben Sie einen möglichst schnellen CREW-PRAM-Algorithmus für p < N Prozessoren, der nach einem Element in einem sortierten Array von N Elementen sucht und den Index des gesuchten Elements zurückliefert. Binäres Suchen auf einem Prozessor: Vergleiche das gesuchte Element e mit dem mittleren Element m des Arrays e = m fertig. e < m rekursive Suche auf linker Teilliste. e > m rekursive Suche auf rechter Teilliste. Idee für p Prozessoren: 2 Teillisten p Teillisten Annahme: keine doppelten Einträge, p und N sind Zweierpotenzen
8 Aufgabe 10: Suchen im vorsortierten Array 8 /* globale Variablen */ left, right // Grenzen des globalen Intervalls wert // zu suchender Wert result // Index des gefundenen Wertes /* lokale Variablen */ myleft, myright // Grenzen des Intervalls von Prozessor pid if (pid == 0) { left = 0; right = N; // Grenzen setzen result = -1; } // auf allen p Prozessoren: while (result == -1) { // solange Wert nicht gefunden // 1. berechne lokale Grenzen myleft = left + pid * ((right - left) / p); myright = left + (pid + 1) * ((right - left) / p); // 2. suche Wert if (a[myleft] == wert) // Wert gefunden result = myleft; else // Wert nicht gefunden if (a[myleft] < wert && wert <= a[myright - 1]) { // Wert ist in lokalem Intervall // -> als neues globales Intervall uebernehmen left = myleft; right = myright; }
9 Aufgabe 10: Suchen im vorsortierten Array 9 Algorithmus stellt sicher, dass immer genau ein Prozessor schreibend auf globale Variablen zugreift Komplexität? O(log p n) Asymptotisch, d. h. mit steigender Arraygröße schneller als auf einem Prozessor? Nein, da O(log p n) = O( log 2 n log 2 p ) = O(log 2n).
10 Quicksort auf CRCW-PRAM 10 Quicksort entspricht der Konstruktion eines Baums: Pivot-Element = Wurzel; kleinere Elemente = linker Teilbaum; größere Elemente = rechter Teilbaum Implementierung als CRCW-PRAM-Algorithmus mit drei Schritten 1 : 1 Baum konstruieren 2 Größen aller (linken und rechten) Teilbäume ermitteln 3 Elementposition in sortiertem Array ermitteln und sortieren Ausführung auf n Prozessoren einer pro Element 1 J. Keller et al. Practical PRAM Programming. Wiley, 2001.
11 Baum konstruieren 11 /* globale Variablen */ A[] // Array root // Wurzelknoten lchild[], rchild[] // linke/rechte Kinder /* lokale Variablen */ pid // Prozessor-ID bzw. Array-Index parent // Elternknoten root = pid; // Wurzel (Pivot) bestimmen parent = root; // Pivot lesen lchild[pid] = rchild[pid] = N; // Kindlisten initialisieren while (pid!= parent) // wiederhole bis alle Elemente Pivot sind if ( A[pid] < A[parent] (A[pid] = A[parent] && pid < parent) { /* Element pid kleiner/ gleich Pivot -> linker Teilbaum */ IAmALeftChild = 1; lchild[parent] = pid; // Pivot linker Teilbaum bestimmen if (pid!= lchild[parent]) // Element pid ist nicht Pivot parent = lchild[parent]; } // -> Pivot ist Elternknoten else { // Element pid groesser als Pivot -> rechter Teilbaum IAmALeftChild = 0; rchild[parent] = pid; // Pivot rechter Teilbaum bestimmen if (pid!= rchild[parent]) // Element pid ist nicht Pivot parent = rchild[parent]; } // -> Pivot ist Elternknoten
12 Größen aller Teilbäume ermitteln 12 /* globale Variablen */ lnum[], rnum[] // Groesse linker/ rechter Teilbaum /* lokale Variablen */ num // Groesse eigner Teilbaum IAmALeftChild // true, falls Element linker Kindknoten ist lnum[pid] = rnum[pid] = num = 0; if (pid!= root) if (lchild[pid] == N) if (rchild[pid] == N) num = 1; // pid ist Blattknoten else { // pid hat nur rechten Teilbaum while (rnum[pid] == 0); // Warte auf rnum[pid] num = rnum[pid] + 1; } else // pid hat linken Teilbaum... if (rchild[pid]==n) { //... aber keinen rechten Teilbaum while (lnum[pid] == 0); // Warte auf lnum[pid] num = lnum[pid] + 1; } else { //... und rechten Teilbaum while (lnum[pid] == 0 rnum[pid] == 0) // auf beides Warten num = lnum[pid] + rnum[pid] + 1; } // num ist jetzt Groesse des linken und rechten Teilbaums + 1 if (IAmALeftChild) lnum[parent] = num; else rnum[ parent] = num;
13 Array sortieren 13 Position im sortierten Array bestimmen /* globale Variablen */ order[] // Elementpositionen im sortieren Array /* lokale Variablen */ z // Position des Elternknotens order[ pid] = -1; // Positionsliste initialisieren if (pid == root) order[ pid] = lnum[ pid]; // Wurzel einsortieren else do z = order[parent]; while (z == -1); // auf eigenen Elternknoten warten if (IAmALeftChild) order[pid] = z - rnum[pid] - 1; else order[pid] = z + lnum[pid] + 1; Array sortieren A[order[pid]] = A[pid] // Array sortieren
14 Komplexität 14 Durchschnittliche Kosten für parallelen Algorithmus: 1 Baum konstruieren erstelle 1 Ebene je Iteration O(log n), falls Pivot immer optimal gewählt; gilt auch im Mittel (siehe Laufzeit Quicksort) 2 Größen aller Teilbäume bestimmen alle Ebenen bottom-up durchlaufen O(log n) 3 Position im sortierten Array bestimmen alle Ebenen top-down durchlaufen O(log n) 4 Array sortieren parallele Zuweisung aller Elemente O(1) (3 O(logn)+O(1)) n = O(nlogn) Durchschnittliche Kosten für sequentielle Implementierung: O(n log n) CRCW-PRAM-Algorithmus ist (im Mittel) kostenoptimal Worst case: Baum der Höhe n Kosten: O(n 2 ) entspricht ebenfalls Kosten der sequentiellen Implementierung
15 15 5. Übungsblatt im Web Nächste Übung am 12. Dezember 2012
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)
MehrAbschnitt: 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
MehrDer 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
MehrKapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
MehrProgrammiertechnik II
Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...
MehrÜberblick. Lineares Suchen
Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität
MehrLaufzeit und Komplexität
Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen
Mehr13. Binäre Suchbäume
1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),
MehrSortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block
Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in
MehrSortierverfahren 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
MehrSortierverfahren. Sortierverfahren für eindimensionale Arrays
Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten
MehrVorkurs Informatik WiSe 15/16
Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner
MehrWiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
MehrÜ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
MehrAlgorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
MehrSuchen und Sortieren (Die klassischen Algorithmen)
Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle
MehrProgrammieren 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
MehrGrundlagen der Programmierung 2. Bäume
Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)
MehrKap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis
Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest
MehrEine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
MehrSortierte Folgen 250
Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:
MehrAVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:
AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls
Mehr1. 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
MehrSkript zur Vorlesung Parallele Algorithmen. Andreas Goerdt Technische Universität Chemnitz Fakultät Informatik Theoretische Informatik
Skript zur Vorlesung Parallele Algorithmen Andreas Goerdt Technische Universität Chemnitz Fakultät Informatik Theoretische Informatik Wintersemester 1994 Das Skript ist eine etwas breiter dargestellte
Mehr1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert
Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume
MehrIdee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10
Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien
MehrKap. 4.2: Binäre Suchbäume
Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:
MehrSuchen in Listen und Hashtabellen
Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren
MehrDatenstruktur, die viele Operationen dynamischer Mengen unterstützt
Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)
Mehr- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:
6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)
MehrBäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
MehrSuchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative
MehrProgrammierung und Modellierung
Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Datenorganisation und Datenstrukturen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00
MehrAlgorithmen & 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
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
MehrTutorium Algorithmen & Datenstrukturen
June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten
MehrEndTermTest PROGALGO WS1516 A
EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von
MehrFolge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
MehrData Mining und Text Mining Einführung. S2 Einfache Regellerner
Data Mining und Text Mining Einführung S2 Einfache Regellerner Hans Hermann Weber Univ. Erlangen, Informatik 8 Wintersemester 2003 hans.hermann.weber@gmx.de Inhalt Einiges über Regeln und Bäume R1 ein
MehrMAXIMUM2.STR 02.10.2002. Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.
Struktogramme 02.10.2002 Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben. MAX_DOZ1 Integer a, b, c, max M AX IM U M 1.S T R Inte g er a, b, c Ausgabe "Zahlen eingeben" E ing abe a, b, c
MehrReihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03
Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen
MehrEntwurf von Algorithmen - Kontrollstrukturen
Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer
MehrInformatik II. PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri
Informatik II PVK Part1 Severin Wischmann wiseveri@student.ethz.ch n.ethz.ch/~wiseveri KAUM JAVA Kaum Java Viel Zeit wird für Java-spezifisches Wissen benützt Wenig wichtig für Prüfung Letztjähriger Assistent
MehrSuchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)
MehrKurs 1613 Einführung in die imperative Programmierung
Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i
Mehr2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen
2 2 Java: Bäume 2.1 Implementierung von Bäumen 2.2 Implementierung eines binären Suchbaums 2.3 Traversierung von Bäumen 2.4 Implementierung von Heapsort 19 Teil II Java: Bäume Überblick Implementierung
MehrInf 12 Aufgaben 14.02.2008
Inf 12 Aufgaben 14.02.2008 Übung 1 (6 Punkte) Ermitteln Sie eine mathematische Formel, die die Abhängigkeit der Suchzeit von der Anzahl der Zahlen N angibt und berechnen Sie mit Ihrer Formel die durchschnittliche
MehrSuchen und Sortieren
(Folie 69, Seite 36 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner, rechte Kinder größer als Elternknoten Externe und interne Knoten Externe Knoten
Mehr1. 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.
MehrAlgorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.
Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen
MehrTeile und Herrsche Teil 2
Teile und Herrsche Teil 2 binär Suchen und schnell Multiplizieren Markus Fleck Manuel Mauky Hochschule Zittau/Görlitz 19. April 2009 Suchen in langen Listen (0, 1, 2, 7, 8, 9, 9, 13, 13, 14, 14, 14, 16,
MehrTeil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik
Grundlagen der Programmierung 1 Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2 Softwaretechnik Prof. Dr. O. Drobnik Professur Architektur und Betrieb verteilter Systeme Institut für
MehrKostenmaße. F3 03/04 p.188/395
Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);
Mehr4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum
4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.
MehrKapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung
Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler
Mehr2. Lernen von Entscheidungsbäumen
2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse
MehrGrundlagen der Programmierung 2. Parallele Verarbeitung
Grundlagen der Programmierung 2 Parallele Verarbeitung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 27. Mai 2009 Parallele Algorithmen und Ressourcenbedarf Themen: Nebenläufigkeit,
MehrProgrammiertechnik 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
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung
MehrGraphen: Datenstrukturen und Algorithmen
Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.
MehrKurs: Parallele Algorithmen (01824) Datum: Oktober 2011 Prüfer: Prof. Verbeek Dauer: 30 Minuten Art: Leistungsnachweis (unbenotet, bestanden)
Kurs: Parallele Algorithmen (01824) Datum: Oktober 2011 Prüfer: Prof. Verbeek Dauer: 30 Minuten Art: Leistungsnachweis (unbenotet, bestanden) Professor Verbeek ist ein angenehmer Prüfer, der mehr an einem
MehrB-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP
B-Bäume I Annahme: Sei die Anzahl der Objekte und damit der Datensätze. Das Datenvolumen ist zu groß, um im Hauptspeicher gehalten zu werden, z.b. 10. Datensätze auf externen Speicher auslagern, z.b. Festplatte
Mehr6. Algorithmen der Computer-Geometrie
6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie
MehrBinärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
MehrKapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Technische Universität München Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für
Mehr5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)
5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!
Mehr9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen
9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel
Mehr3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel
3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36
MehrAlgorithmen und Datenstrukturen SS09
Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell
MehrSortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1
Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal
MehrDatenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Mathematische Grundlagen: Das Handwerkszeug Mariano Zelke Datenstrukturen 2/26 Formeln: n - i = n (n+1) 2 und - i=1 k i=0 a i = ak+1 1 a 1, falls a 1 Rechnen
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 5. Vorlesung Martin Middendorf / Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Quick-Sort
MehrCodes und Informationsgehalt
Aufgaben 2 Codes und Informationsgehalt Auf wie viele Dezimalziffern genau können vorzeichenlose ganze Zahlen in einem binären Code der Länge 32 bit dargestellt werden? 2 Codes und Informationsgehalt Auf
Mehr4 Greedy-Algorithmen (gierige Algorithmen)
Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine
MehrBinäre lineare Optimierung mit K*BMDs p.1/42
Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre
MehrAlgorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015. Vorlesung 8, Donnerstag 11.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 8, Donnerstag 11. Dezember 2014 (Cache-Effizienz, Teile und Herrsche) Junior-Prof. Dr.
MehrPunktbeschriftung in Dynamischen Karten
Vorlesung Algorithmische Kartografie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Benjamin Niedermann Martin Nöllenburg 28.05.2015 1 Übungen Nachtrag 1) Überlegen Sie sich, wie man den
Mehrt r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )
Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen
MehrInformatik II Greedy-Algorithmen
7/7/06 lausthal Erinnerung: Dynamische Programmierung Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:
MehrWas bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):
Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel
MehrProgrammieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu
Mehr6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester 2012. Robert Marti
6 Baumstrukturen Formale Grundlagen der Informatik I Herbstsemester 2012 Robert Marti Vorlesung teilweise basierend auf Unterlagen von Prof. emer. Helmut Schauer Beispiel: Hierarchisches File System 2
MehrEin Verfahren zur Aufzählung binärer Audrucksbäume
Ein Verfahren zur Aufzählung binärer Audrucksbäume Rüdiger Plantiko 5. Januar 2012 Zusammenfassung Ein arithmetischer Ausdruck kann durch einen binären Ausdrucksbaum repräsentiert werden. Es ist wohlbekannt,
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrNachtrag zu binären Suchbäumen
Nachtrag zu binären Suchbäumen (nicht notwendigerweise zu AVL Bäumen) Löschen 1 3 2 10 4 12 1. Fall: Der zu löschende Knoten ist ein Blatt: einfach löschen 2. Fall: Der zu löschende Knoten hat ein Nachfolgeelement
MehrSortieren. Eine Testmenge erstellen
Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten
MehrSeminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum: 26.06.2013
Julius-Maximilians-Universität Würzburg Institut für Informatik Lehrstuhl für Informatik I Effiziente Algorithmen und wissensbasierte Systeme Seminarausarbeitung Entwurf und Analyse von Datenstrukturen
MehrVorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz
Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Werner Struckmann Wintersemester 2005/06 6. Bäume 6.1 Bäume 6.2 Binäre Suchbäume 6.3 Ausgeglichene Bäume 6.4 Heapsort Listen und Bäume Listen und Bäume: Listen: Jedes Listenelement
MehrCBLOCK: An Automatic Blocking Mechanism for Large-Scale De-duplication Tasks. Cathleen Ramson, Stefan Lehmann LSDD SS 2013 25.04.
CBLOCK: An Automatic Blocking Mechanism for Large-Scale De-duplication Tasks Cathleen Ramson, Stefan Lehmann LSDD SS 2013 25.04.2013 Gliederung 2 Motivation Ziel Algorithmen Zusammenfassung Bewertung Motivation
MehrAlgorithmen II Vorlesung am 15.11.2012
Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales
MehrParallele Berechnungen
Kapitel 7 Parallele Berechnungen 7.1 Teile und Herrsche (Divide and Conquer) Diese Entwurfsmethode für Algorithmen ist in vielen Bereichen nützlich und lässt sich folgendermaßen beschreiben: Teile das
Mehr