Parallele Programmierung
|
|
- Silvia Huber
- vor 5 Jahren
- Abrufe
Transkript
1 Parallele Programmierung 10. Vorlesung Thorsten Grosch Danke an Hendrik Lensch
2 Überblickbli Paralleles Sortieren Paralleler Speicherzugriff Scan Letzte reguläre Vorlesung Nächste Woche keine Vorlesung In zwei iwochen Wiederholung &F Fragen zur Klausur Nächste Übungen 9. Übung: Stoffsimulation 6 Punkte +3 Bonuspunkte 10. Übung: optional, nur noch Bonuspunkte 2
3 Bitonici Merge Sort
4 Bitonici Merge Sort [Batcher 1986] Beispiel aus GPU Gems Vertauscht werden (parallel) jeweils die beiden Elemente pro Pfeil Der Pfeil gibt die Richtung an (auf / absteigend) Wenn die beiden Werte gegen Pfeilrichtung eingetragen sind, dann wird vertauscht Woher kommen die Pfeile? Die Pfeile sind immer gleich (unabhängig von der Eingabe) Manchmal wird absteigend sortiert 4
5 Bitonici Sequence Ein Folge wird als Bitonic bezeichnet, wenn sie zunächst aufsteigend und dann absteigend sortiert ist (oder umgekehrt) Bsp: Oder: Verallgemeinerte Definition Eine Folge ist Bitonic, wenn man durch einen zyklischen Shift eine Folge erhält, die zunächst aufsteigend und dann absteigend sortiert ist Bsp
6 Bitonici Split Gegeben: Bitonic Sequenz (a0, a1,, an-1) ) Bitonic Split: Bilde zwei Sequenzen der halben Länge ( Min(a0, an/2), Min(a1,an/2+1), ) ( Max(a0, an/2), Max(a1,an/2+1), ) Dann gilt: 1. Beide Sequenzen sind Bitonic 2. Die Elemente der ersten Liste sind alle kleiner als die in der zweiten Liste Split Bsp. für n=8 :
7 Warum gelten die beiden Eigenschaften? Gegeben ist eine Sequenz mit Bitonic Eigenschaft Zunächst monoton wachsend, dann fallend Den Bitonic Split erhält man, indem man beide Hälften überlagert und jeweils komponentenweise Min/Max bildet Aufgrund der Bitonic Eigenschaft gibt es einen (unbekannten) Kreuzungspunkt der beiden Kurven Links von diesem Punkt gilt Das Minimum kommt aus der ersten Hälfte, das Maximum aus der zweiten Hälfte Rechts von diesem Punkt gilt Das Minimum kommt aus der zweiten Hälfte, das Maximum aus der ersten Hälfte beide Teilfolgen sind Bitonic Die Minimum-Sequenz liegt unterhalb der Maximum-Sequenz max min Hinweis: Diese Beschreibung gilt so nur, wenn das Maximum der Sequenz genau in der Mitte liegt Zyklischer Shift 7
8 Somit kann man folgendes folgern Mit Hilfe der Bitonic Split Operation kann die Folge in zwei Hälften unterteilt werden, wobei die erste Folge komplett kleiner ist als die zweite Folge Da die beiden entstehenden Folgen wieder die Bitonic Eigenschaft haben, kann das Verfahren rekursiv auf beide Teilfolgen angewandt werden Liegt also eine Bitonic Sequenz vor, so entsteht durch wiederholte Anwendung der Bitonic Split Operation eine sortierte Folge Bitonic Merge Sort 1. Erstellung der Bitonic Sequenz (Bitonic Merge) 2. Wiederholtes Anwenden der Bitonic Split Operation 8
9 Bitonici Merge Sort Bi Beispiel il Aufbau der Bitonic Sequenz Wiederholtes Anwenden der Bitonic Split Operation Stage 3: komplette Folge Bitonic Stage 2: Folge 1-4 Bitonic, Folge 5-8 Bitonic, Folge 1-4 kleiner als Folge 5-8 Stage 1: Folge 1-2 kleiner als Folge 3-4, kleiner als Folge 5-6, kleiner als Folge 7-8 9
10 Wie wird die Bitonici Sequenz aufgebaut? Zusammenfügen von zwei Bitonic Sequenzen zu einer Sequenz mit Bitonic Eigenschaft (Merge) Erster Schritt Erzeuge Bitonic Sequenzen der Länge 4 2El Elemente aufsteigend, dann 2El Elemente absteigend Dazu werden jeweils 2 aufeinanderfolgende Elemente der Original-Sequenz abwechselnd aufsteigend und absteigend vertauscht igend ren Aufstei sortier Absteig gend sortiere en Aufsteig gend sortiere en Absteige end sortiere en Zweiter Schritt Die vorhandenen 4-elementigen Bitonic Sequenzen werden dann sortiert Dazu wird die wiederholte Bitonic Split Operation auf jede 4-elementige Sequenz angewandt Die 4-elementigen Folgen werden dabei abwechselnd aufsteigend und absteigend sortiert Es entstehen Bitonic Sequenzen der Länge 8 Wiederholung der Merge-Operation bis komplette Folge Bitonic Aufsteig gend sortiere en Absteig end sortiere en 10
11 Bitonici Merge Sort Bi Beispiel il Bitonic Sequenzen der Länge 4 erzeugen (2 aufeinanderfolgende Werte abwechselnd aufsteigend / absteigend vertauschen) Bitonic Split auf 4- elementige Folgen anwenden 4-elementige Sequenzen sortieren (abwechselnd aufsteigend / absteigend) 8-elementige Gesamt- Sequenz sortieren Bitonic Split auf 8- elementige Gesamt- Folge anwenden 11
12 Bitonici Merge Sort : Länge & Richtung der Pfeile i=0..7 step 2 Länge der Bitonic Sequenz (step = 1.. log2n) stage 2 Länge der Bitonic Sequenz während Bitonic Split (stage = step.. 1) stage 1 2 Länge der Pfeile während Bitonici Split Der Pfeil zu einem Index i zeigt aufwärts, falls man in der ersten Hälfte der nächstgrößeren Bitonic Sequenz liegt Das andere Ende des Pfeils zu Index i befindet sich in aufsteigender Richtung, falls man in der ersten Hälfte der aktuellen Bitonic Sequenz liegt step ( i / 2 ) % 2 == 0 i % 2 stage 1 < 2 stage 12
13 CUDA Code (einfache Variante) global void bitonic_sort( int *a, int stepmax ) // stepmax = log(n) { int tid = threadidx.x; // this thread handles the data at its thread id for (int step = 1 ; step <= stepmax ; step++) { int stepnum = 1 << step; for (int stage = step ; stage > 0 ; stage--) { int offset = 1 << (stage - 1); // Pfeillänge int stagenum = 2 * offset; // Länge der Bitonic Sequenz int csign = ((tid % stagenum) < offset)? 1 : -1; // Tauschpartner auf/abwärts int cdir = ((tid / stepnum) % 2 == 0)? 1 : -1; // Pfeilrichtung int targetindex = tid + csign * offset; // Index anderes Ende Pfeil int val0 = a[tid]; // beide Werte auslesen int val1 = a[targetindex]; int minval = min(val0, val1); // min/max bilden int maxval = max(val0, val1); syncthreads(); // sync da in-place } } } a[tid] = (csign == cdir)? minval : maxval; // anderen Wert eintragen // falls gegen Pfeilrichtung syncthreads(); // ein Zeitschritt fertig Wieviele Zeitschritte werden benötigt? 13
14 csign / cdir cdir+ csign- i cdir+ csign+ cdircsign+ cdir- csign- cdir : Pfeilrichtung csign : Richtung für Tauschpartner Am Index i muß das Minimum der beiden Werte eingetragen werden, falls cdir == csign 14
15 Bitonici Merge Sort Analyse Paralleles Sortierverfahren N/2 Vertauschungen in jedem Zeitschritt (im Idealfall parallel) Pfeile unabhängig von den Eingangsdaten gut für GPU, alle Threads laufen zeitgleich, keine Sonderfälle i=1..log2n Steps mit jeweils i Stages Anzahl Zeitschritte log2 N log2 N(log2 N + 1) 2 i = O(log2 N) 2 i=11 Vgl. O(N log N) von CPU Verfahren Anzahl Vertauschungen 2 O ( N log 2 N) (Optimal wären O(N log N) Vertauschungen) Die vorgestellte, einfache Implementierung funktioniert nur für kleine Werte von N Shared Memory, Synchronisation 15
16 Bitonici Merge Sort: Vergleich mit CPUSortierung [Baraglia et al. 2009] 16
17 Bitonici Merge Sort: Vergleich mit anderen GPU Verfahren [Peters et al. 2011] 17
18 Anwendung Bitonici Merge Sort Szene mit vielen transparenten Flächen Alternative zu Sortierung auf der CPU Pro Pixel eine Liste aller dort rasterisierten Fragmente speichern pro Pixel auf der GPU sortieren Advances in Real-Time Rendering Course Siggraph 2010, Los Angeles, CA [Yang et al. 2010] 18
19 Speicherzugriff iff
20 Shared Memory & Bank Conflicts Der Zugriff auf Shared Memory ist genauso schnell wie der Zugriff auf ein Register, falls ki keine Bank kconflicts aufteten t Erklärung: Shared memory ist in Banks aufgeteilt 1 Bank = 32 Bit 16 Banks vorhanden Die Banks liegen interleaved im Speicher Beispiel shared float cache[64]; // 1 float = 32 Bit cache[0] bank 0 cache[1] bank 1 cache[15] bank 15 cache[16] bank 0 cache[17] bank 1... Annahme: 16 Threads laufen exakt zeitgleich (Half-warp) Dann können zeitgleiche Speicherzugriffe im Shared Memory parallel erfolgen, wenn sie auf verschiede Banks erfolgen 20
21 Shared Memory Bank Conflicts Idealfall Alle Threads greifen auf unterschiedliche Banks zu kein Bank conflict, parallel Schlechter Fall Mehrere Threads greifen auf die gleich Bank zu Zugriffe müssen serialisiert werden Kosten: Maximale Anzahl simultaner Zugriffe auf gleiche Bank Sonderfall Alle Threads greifen auf die gleiche Adresse zu kein Bank Conflict (broadcast) 21
22 Lineare Addressierung shared float shared[256]; Thread 0 Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 float foo = shared[baseindex + s* threadidx.x]; Thread 6 Bank 6 Thread 7 s=1 Bank 0 Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 7 Der Zugriff ist frei von Bank-Conflicts falls s keinen gemeinsamen Teiler mit der Anzahl der Banks hat: ggt(numbanks, s) = 1 numbanks=16 (G80) s muß ungerade sein Thread 15 Thread 0 Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Thread 6 Thread 7 s=3 Bank 15 Bank 0 Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Thread 15 Bank 15 22
23 Datentypen und dbank kconflicts Keine Konflikte falls Größe von Basistyp 32-bit: foo = shared[baseindex + threadidx.x] Probleme bei kleineren Datentypen: 4-way bank conflicts: shared char shared[]; foo = shared[baseindex + threadidx.x]; Thread 0 Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Thread 6 Thread 7 Thread 15 Bank 0 Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Bank 15 2-way bank conflicts: Thread 0 Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Thread 6 Thread 7 Bank 0 Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 shared short shared[]; Bank 7 foo = shared[baseindex + threadidx.x]; Thread 15 Bank 15 23
24 Shared Memory Broadcast Jeder Thread liest das gleiche Element Thread 0 Bank 0 kein Bank Conflict Thread 1 Bank k1 x = shared[0]; Thread 2 Thread 3 Thread 4 Thread 5 Thread 6 Thread 7 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Thread 15 Bank 15 24
25 Common Array Bank Conflict Patterns 1D Jeder Thread lädt 2 Elemente ins Shared Memory: Pro Zugriff: 2-way-interleaved loads 2-way bank conflicts: Thread 0 Bank 0 Thread 1 Thread 2 shared float shared[256]; Thread 3 int tid = threadidx.x; x; Thread 4 shared[2*tid] = global[2*tid]; shared[2*tid+1] = global[2*tid+1]; Bank 1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Sinnvoller Zugriff für eine CPU, da Cache Kohärenz ausgenutzt wird Aber: Für Shared Memory auf der GPU gibt es keine Cache Lines, sondern Banking Effekte Bank 7 Thread 8 Thread 9 Thread 10 Thread 11 Bank 15 25
26 Besserer Array Zugriff Jeder Thread lädt ein Element in blockdim Schritten shared[tid] = global[tid]; shared[tid + blockdim.x] = global[tid + blockdim.x]; Keine Bank Conflicts Vergleiche z.b. Reduce Durch große Schrittweiten werden Bank Conflicts vermieden (solange Schrittweite >= 16) Thread 0 Thread 1 Thread 2 Thread 3 Thread 4 Thread 5 Thread 6 Thread 7 Bank 0 Bank k1 Bank 2 Bank 3 Bank 4 Bank 5 Bank 6 Bank 7 Thread 15 Bank 15 26
27 Parallel l Prefix Sums / Scan
28 Scan (Parallel lprefix Sums) [Blelloch 1990] a0 a, a,...,, a N Gegeben ist eine Folge N 1 Bilde die Summe der ersten i Elemente Beispiel: a0, a0 + a1, a0 + a1 + a2,..., N N 1 a i i= 0 [ ] Scan [ ] Wofür braucht man das? Interessanterweise viele Anwendungen, z.b. wenn N Threads eine Ausgabe unterschiedlicher Länge in ein gemeinsames Ausgabearray produzieren: Was ist der Startindex für Thread i? 28
29 Scan auf fder CPU void scan( float* scanned, float* input, int length) { scanned[0] = input[0]; for(int i = 1; i < length; ++i) { scanned[i] = input[i] + scanned[i-1]; } } Einfache Schleife N-1 Additionen Wie funktioniert das parallel? 29
30 Einfacher paralleler l Scan Stride 1 a0 a1 a2 a3 a4 a a 5 6 a7 1 fertig Stride 2 a0 a0.. 1 a1.. 2 a2.. 3 a3.. 4 a a a fertig Stride 4 a0 a0.. 1 a0.. 2 a0.. 3 a1.. 4 a a a fertig a0 a0.. 1 a0.. 2 a0.. 3 a0.. 4 a0.. 5 a0.. 6 a fertig logn Zeitschritte 30
31 Pseudocode d einfacher, paralleler l Scan for d = 0 to log2n - 1 for all k in parallel if k >= 2^d a[k] += a[k 2^d] Warum kann das trotz Synchronisation zu Problemen führen? 31
32 Pseudocode d einfacher, paralleler l Scan mit Double Buffering for d = 0 to log2n 1 swap ping & pong for all k in parallel a[pong][k] = a[ping][k] if k >= 2^d a[pong][k] += a[ping][k 2^d] Double Buffering benötigt (!) Sonst evtl. gegenseitiges Überschreiben der Operanden bei der Addition Ausnahme: Für (Half-) Warp (16/32 Threads exakt im Gleichtakt) in-place Addition möglich 32
33 CUDA: Einfacher Scan mit Double Buffering global void scangpu(float *outdata, float *indata) { shared float temp[2][n]; int thid = threadidx.x; int pong = 0; int ping = 1; temp[0][thid] = indata[thid]; syncthreads(); for (int offset = 1 ; offset < N ; offset *= 2) { pong = 1 - pong; ping = 1 - pong; temp[pong][thid] = temp[ping][thid]; if (thid >= offset) temp[pong][thid] += temp[ping][thid - offset]; } syncthreads(); } outdata[thid] = temp[pong][thid]; 33
34 Analyse Einfacher paralleler l Scan N parallele Threads log2n Schritte deutlich schneller als CPU Aber: Pro Schritt O(N) Additionen (N-1, N-2, N-4, ) Insgesamt O(Nlog2N) Additionen Seltsam: Die CPU Version braucht nur O(N) Additionen (?) 34
35 Besserer paralleler l Scan: Phase 1(Up-Sweep) Stride 1 a0 a1 a2 a3 a4 a a 5 6 a7 Stride 2 a0 a0.. 1 a2 a2.. 3 a4 a a a Stride 4 a0 a0.. 1 a2 a0.. 3 a4 a a a a0 a0.. 1 a2 a0.. 3 a4 a4.. 5 a6 a (Impliziter) Binärbaum, Blätter Wurzel, logn Zeitschritte, N-1 Additionen 35
36 Besserer paralleler l Scan: Phase 2(Down-Sweep) 0 a0 a0.. 1 a0.. 2 a0.. 3 a0.. 4 a a a Stride 1 0 a0 a0.. 1 a2 a0.. 3 a4 a a a Stride 2 0 a0 a0.. 1 a2 a0.. 3 a4 a a a Stride 4 0 a0 a0.. 1 a2 a0.. 3 a4 a4.. 5 a6 a (Impliziter) Binärbaum, Wurzel Blätter, logn Zeitschritte, N-1 Additionen 36
37 Analyse besserer Scan N parallele Threads 2log2N Zeitschritte Doppelt so viel wie vorher, trotzdem schneller durch weniger Speicherzugriffe In-place Insgesamt 2(N-1) Additionen Work Efficient Umsetzung in CUDA selber versuchen [Harris et al., GPU Gems 3] Alternative Implementierungen Letztes Element weglassen Auflösung der Bank Conflicts siehe ih [Harris et al. lgpug Gems 3] 37
38 Scan für große Arrays [Mark Harris] 38
39 Scan Anwendung Real-time Depth of Field siehe Übung [Harris et al. GPU Gems 3] 39
40 Depth of Field mit Scan Es gibt verschiede Verfahren zur Darstellung von Tiefenunschärfe Eine Möglichkeit ist ein Mittelwertfilter mit variierender Filtergröße Dazu wird ein z-wert festgelegt als Fokusebene Die Abweichung vom z-wert bestimmt pro Pixel die Filtergröße Also: FilterSize = const * abs(zbuffer[x,y] zfocus) +1 Einfache Implementierung Fragment Program (oder CUDA Kernel) bekommt Bild und zbuffer als Eingabe Pro Fragment wird ein (FilterSize x FilterSize) )Mittelwert-Filter berechnet Problem: sehr langsam für großen Filter 40
41 SummedArea Table Idee: Verwende Summed Area Table (SAT) Eine Summed Area Table enthält für jede Position (x,y) die Summe aller Pixelwerte, die im Rechteck links unter (x,y) liegen (2D Variante von Scan) Ay A Ax A = p( x, y) y A y x A x 41
42 Berechnung beliebiger Rechtecke B w A h C D A B D C D Mittelwert über Rechteck ABCD: (evtl. bei B,C,D um 1 Pixel links/unten korrigieren) A B C + w h D 42
43 Summed Area Table mit Scan z.b. so: 1. Scan horizontal pro Zeile danach 2. vertikaler Scan auf dem Ergebnis pro Spalte 43
44 Wi Weitere Anwendungen von Scan radix sort quicksort String comparison Lexical analysis Stream compaction Polynomial evaluation Solving recurrences Tree operations Range Histograms 44
45 Zusammenfassung Parallele Sortierung auf der GPU Speicherzugriffe Shared Memory Scan In zwei Wochen Fragestunde zur Klausur 45
Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch
Wiederholung Vorlesung Thorsten Grosch Klausur 2 Zeitstunden (26.7., 8:30 10:30 Uhr, G29/307) Keine Hilfsmittel Kein Bleistift / Rotstift verwenden 3 Aufgabentypen Wissensfragen zur Vorlesung (ca. 1/3)
MehrGPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1
GPGPU Basiskonzepte von Marc Kirchhoff 29.05.2006 GPGPU Basiskonzepte 1 Inhalt Warum GPGPU Streams, Kernels und Prozessoren Datenstrukturen Algorithmen 29.05.2006 GPGPU Basiskonzepte 2 Warum GPGPU? Performance
Mehr(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016
(Digital) Sorting October 2, 2016 Algorithms & Datastructures 2 Exercises WS 2016 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci
MehrSuchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrInformatik II - Übung 12
Informatik II - Übung 12 Katja Wolff katja.wolff@inf.ethz.ch Übungsblatt 11 1) Sortieren mit Suchbäumen 2) Zeitkomplexität 3) Ein neuer Rechner! 4) Ein Springer auf dem Schachbrett Informatik II Übung
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] Heapsort 211 Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
MehrÜbung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
MehrSortieren II / HeapSort Heaps
Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php
Mehr> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013. Parallele und Verteilte Systeme, Institut für Informatik
> Parallele Systeme Übung: 4. Übungsblatt Philipp Kegel Wintersemester 2012/2013 Parallele und Verteilte Systeme, Institut für Informatik Inhaltsverzeichnis 2 1 Besprechung des 4. Übungsblattes Aufgabe
MehrMATLAB-Tutorium WS18 Nathalie Marion Frieß
MATLAB-Tutorium WS18 Nathalie Marion Frieß nathalie.friess@uni-graz.at Zugang UNI-IT Arbeitsplätzen lokal vorinstalliert Von zu Hause: Zugriff über Terminalserver Installation des Citrix Receiver Clients:
MehrDatenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
MehrAlgorithms & Data Structures 2
Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN
MehrProgrammiertechnik II
Sortieren: Einfache Algorithmen Sortieren Abstrakte Operation geg: Menge von items (Elemente) jedes Element besitzt Sortierschlüssel Schlüssel unterliegen einer Ordnung eventuell sind doppelte Schlüssel
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II und Red-Black-Trees Dr. Georg Sauthoff 1 AG Praktische Informatik July 1, SoSe 2011 1 gsauthof@techfak.uni-bielefeld.de Suchbäume (Indexdatenstrukturen) Zugriff in O(logn)
MehrÜbung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
Mehr14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
MehrChristoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers. Wissenschaftl. Arbeitstechniken und Präsentation
Christoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers 1. Was ist paralleles Programmieren 2. Bitoner Sortieralgorithmus 3. Quicksort a) sequenzielles Quicksort b) paralleles Quicksort
Mehr1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...
ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für
Mehr8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
MehrHeapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
MehrInformatik II - Tutorium 12
Informatik II - Tutorium 12 Vincent Becker vincent.becker@inf.ethz.ch 23.05.2018 Vincent Becker 24.05.2018 1 Reversi-Turnier 30.5.2018 Deadline für Einreichung SONNTAG NACHT!!! Umfrage Bitte an Umfrage
MehrTutoraufgabe 1 (Sortieralgorithmus):
Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):
MehrAlgorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
MehrJAVA - 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
Mehr7. Parallele Algorithmen für FPGA-Implementierungen
7. Parallele Algorithmen für FPGA-Implementierungen Odd-Even-Transposition-Sort für 8 Elemente Ein sinnvolles Werkzeug bei der Entwicklung und dem Beweis von Sortierverfahren ist das 0-1-Pinzip. 0-1-Prinzip
MehrAlgorithmen und Datenstrukturen 12
12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort
MehrKapitel 3: Sortierverfahren Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
MehrTutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise
MehrÜbersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015
Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter
MehrÜbungsklausur Algorithmen I
Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:
MehrNumerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006
12. Juni 2006 Bibliothek für Lineare Algebra GPGPU-Programming: Low-Level High-Level Bibliothek Bibliothek für Lineare Algebra Gliederung 1 Bibliothek für Lineare Algebra 2 Skalare Bibliothek für Lineare
MehrEinfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Arrays: Wiederholung Ein
MehrRechnerarchitektur SS 2013
Rechnerarchitektur SS 2013 Parallel Random Access Machine (PRAM) Michael Engel TU Dortmund, Fakultät für Informatik Teilweise basierend auf Material von Gernot A. Fink und R. Yahyapour 6. Juni 2013 Parallel
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 018/19 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I - 4 Heute: Wir bauen eine Datenstruktur Datenstruktur: Konzept,
MehrInformatik I (D-ITET)
Ablauf Informatik I (D-ITET) Übungsstunde 5, 26.10.2009 simonmayer@student.ethz.ch ETH Zürich Nachbesprechung Übung 3 Besprechung/Vertiefung der Vorlesung [21.10.2009] Vorbesprechung Übung 5 2.c) Test
MehrHeapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays
Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array
MehrAlgorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-5. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-16 Heaps 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines
MehrInformatik B Sommersemester Musterlösung zur Klausur vom
Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =
Mehrp max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1
Massivparallele Modelle und Architekturen Wintersemester 2010/2011 Lösungsvorschlag 1. Übung 1. Aufgabe: Leistungsbewertung paralleler Systeme Betrachtet werden soll der Odd-Even-Sort-Algorithmus mit n
MehrQuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert
4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand
MehrKonvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510
Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links),
MehrKapitel 2. Weitere Beispiele Effizienter Algorithmen
Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte
MehrStabiles Sortieren. Dieses Prinzip lässt sich natürlich auf beliebiege andere Zahlensystem oder auch komplett anders gestaltete Mengen übertragen.
Prof. Thomas Richter 3. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 27.04.2017 Stabiles
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen
Mehr6. Parallele Algorithmen
6. Parallele Algorithmen 6.1 Vorbemerkungen Bisher: Instruktionen von Programmen werden durch einen einzigen Prozessor sequentiell ausgeführt. Eine Beschleunigung von Algorithmen ist dabei nur möglich,
MehrHeapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen
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
Mehr3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
MehrTechnische 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016
MehrAbschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
MehrCUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg
CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche
MehrWiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.
Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten
MehrAlgorithmen und Programmieren II
Algorithmen und Programmieren II Sortieralgorithmen (Teil III) 2 46 69 4 5 6 4 4 0 8 9 0 6 4 2 Prof. Dr. Margarita Esponda Sortieralgorithmen Vergleichs- Algorithmen quadratisch Bubblesort O(n 2 ) Insertsort
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrAlgorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
MehrCopyright, Page 1 of 7 Heapsort
www.mathematik-netz.de Copyright, Page 1 of 7 Heapsort Alle grundlegenden, allgemeinen Sortierverfahren benötigen O(n 2 ) Zeit für das Sortieren von n Schlüsseln. Die kritischen Operationen, d.h. die Auswahl
MehrKapitel 1 Parallele Modelle Wie rechnet man parallel?
PRAM- PRAM- DAG- R UND R Coles und Kapitel 1 Wie rechnet man parallel? Vorlesung Theorie Paralleler und Verteilter Systeme vom 11. April 2008 der Das DAG- Das PRAM- Das werkmodell Institut für Theoretische
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 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
Mehrf 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
MehrWiederholung. Divide & Conquer Strategie
Wiederholung Divide & Conquer Strategie Binäre Suche O(log n) Rekursives Suchen im linken oder rechten Teilintervall Insertion-Sort O(n 2 ) Rekursives Sortieren von a[1..n-1], a[n] Einfügen von a[n] in
MehrDatenstrukturen und Algorithmen (SS 2013)
Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-
MehrKlausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011
Kompaktkurs Einführung in die Programmierung Klausur Seite 1/10 Name, Vorname, Unterschrift: Matrikelnummer: Wichtig: Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek
MehrÜbung Datenstrukturen. Sortieren
Übung Datenstrukturen Sortieren Aufgabe 1 Gegeben sei nebenstehender Sortieralgorithmus für ein Feld a[] ganzer Zahlen mit N Elementen: a) Um welches Sortierverfahren handelt es sich? b) Geben Sie möglichst
MehrAlgorithmen und Datenstrukturen 02
3. Mai 2012 1 Organisatorisches Allgemeine Hinweise Texteditoren 2 Besprechung Blatt 1 Erste Eindrücke 3 Daten Zahlen Zeichen, Strings und String-Operationen 4 Methoden und die Java Api Methoden Was ist
Mehrp max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1
Massivparallele Modelle und Architekturen Wintersemester 13/14 Lösungsvorschlag 1. Übung 1. Aufgabe: Leistungsbewertung paralleler Systeme Betrachtet werden soll der Odd-Even-Sort-Algorithmus mit n Eingangswerten
Mehr(08 - Einfache Sortierverfahren)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um
Mehr5. Übung - Kanalkodierung/Programmierung
5. Übung - Kanalkodierung/Programmierung Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Kanalkodierung a Folgende Kodes stehen Ihnen zur Verfügung: Kode 1: 0000000 Kode
MehrDatenstrukturen und Algorithmen D-INFK
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 Peter Widmayer
MehrCUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1
CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A3. Sortieren: Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März 2018 Sortieralgorithmen Inhalt dieser Veranstaltung A&D Sortieren Komplexitätsanalyse
MehrDatenstrukturen Kurzanleitung
Datenstrukturen Kurzanleitung Insertionsort p = (7, 5, 4, 83, 6, 6) n = 6 Start: K ist sortierte Folge. Für i =, 3, 4,..., n: Füge ki in eine sortierte Folge ( k, k, k 3,..., k n ) in der richtigen Position
MehrDatenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Präsenzübung Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Dienstag, 28. Mai 2013 Nachname: Vorname: Matrikelnummer: Studiengang:
MehrGrundlagen von CUDA, Sprachtypische Elemente
Grundlagen von CUDA, Sprachtypische Elemente Stefan Maskanitz 03.07.2009 CUDA Grundlagen 1 Übersicht 1. Einleitung 2. Spracheigenschaften a. s, Blocks und Grids b. Speicherorganistion c. Fehlerbehandlung
MehrEINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrKurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.
Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom 15.08.98 Seite 1 Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15. August 1998 Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur
Mehr8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrDatenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)
Aufgabe 3 a) Wir verwenden zur Lösung den Algorithmus Build-Heap 1, dieser verwendet die Funktion Heapify. Unser Array A ist gegeben durch [7, 10,, 5, 5,, 3, 3, 17]. 10 5 5 3 17 7 Abbildung 1: Das Array
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrTechnische Universität München
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrPräsenzübung Datenstrukturen und Algorithmen SS 2014
Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik
MehrAlgorithmen I - Tutorium 28 Nr. 7
Algorithmen I - Tutorium 28 Nr. 7 14.07.2016: Spaß mit Heaps und weiteren Baeumen Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE KIT
MehrDynamische Datenstrukturen
Dynamische Datenstrukturen B-Bäume größere Datenmengen verwalten Extern speichern Art der Speicherung berücksichtigen sonst kein optimaler Datenzugriff möglich Art der Speicherung großer Datenmengen Magnetplatten
MehrDr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund
EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrBeispielblatt VU Algorithmen und Datenstrukturen 1 VU 6.0
Beispielblatt 1 186.813 VU Algorithmen und Datenstrukturen 1 VU 6.0 25. September 2013 Aufgabe 1 (a) Bringen Sie folgende Laufzeitfunktionen, in Abhängigkeit von n in Θ-otation, in die aufsteigende Reihenfolge.
MehrEINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17
EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrTechnische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen
Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen
Mehr