Parallele Programmierung

Größe: px
Ab Seite anzeigen:

Download "Parallele Programmierung"

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

Mehr

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1

GPGPU 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 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) Ü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

Mehr

Suchen und Sortieren Sortieren. Heaps

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

Mehr

7. Sortieren Lernziele. 7. Sortieren

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

Mehr

Informatik II - Übung 12

Informatik 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

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

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

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

Sortieren II / HeapSort Heaps

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

Mehr

MATLAB-Tutorium WS18 Nathalie Marion Frieß

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

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & 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

Mehr

Algorithms & Data Structures 2

Algorithms & 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

Mehr

Programmiertechnik II

Programmiertechnik 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

Mehr

Algorithmen und Datenstrukturen II

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

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

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

Mehr

Christoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers. Wissenschaftl. Arbeitstechniken und Präsentation

Christoph 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

Mehr

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...

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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen 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

Mehr

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

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

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

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

Mehr

Informatik II - Tutorium 12

Informatik 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

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

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

Mehr

Algorithmen und Datenstrukturen Heapsort

Algorithmen 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

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

7. Parallele Algorithmen für FPGA-Implementierungen

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

Mehr

Algorithmen und Datenstrukturen 12

Algorithmen 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

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 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

Mehr

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Tutoraufgabe 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) Ü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

Ü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

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

Mehr

Numerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006

Numerik 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

Mehr

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Einfache 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

Mehr

Rechnerarchitektur SS 2013

Rechnerarchitektur 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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Informatik I (D-ITET)

Informatik 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

Mehr

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

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

Mehr

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing

Algorithmen 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

Mehr

Informatik B Sommersemester Musterlösung zur Klausur vom

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

Mehr

p 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

p 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

Mehr

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort 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

Mehr

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

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

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 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

Mehr

Stabiles Sortieren. Dieses Prinzip lässt sich natürlich auf beliebiege andere Zahlensystem oder auch komplett anders gestaltete Mengen übertragen.

Stabiles 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

6. Parallele Algorithmen

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

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Grundlagen der Programmierung

Grundlagen 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

Mehr

3.2. Divide-and-Conquer-Methoden

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

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

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 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

Mehr

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

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

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

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

Mehr

Algorithmen und Programmieren II

Algorithmen 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

Mehr

Probeklausur Name: (c)

Probeklausur 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

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen 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

Mehr

Copyright, Page 1 of 7 Heapsort

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

Mehr

Kapitel 1 Parallele Modelle Wie rechnet man parallel?

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

f 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

f 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

Mehr

Wiederholung. Divide & Conquer Strategie

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

Mehr

Datenstrukturen und Algorithmen (SS 2013)

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

Mehr

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

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

Mehr

Algorithmen und Datenstrukturen 02

Algorithmen 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

Mehr

p 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

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

(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

Mehr

5. Übung - Kanalkodierung/Programmierung

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

Mehr

Datenstrukturen und Algorithmen D-INFK

Datenstrukturen 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

Mehr

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen 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

Mehr

Datenstrukturen Kurzanleitung

Datenstrukturen 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

Mehr

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

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

Mehr

Grundlagen von CUDA, Sprachtypische Elemente

Grundlagen 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

Mehr

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

Mehr

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

Mehr

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

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

Mehr

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Datenstrukturen 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

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen 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

Mehr

Technische Universität München

Technische 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

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

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

Mehr

Algorithmen I - Tutorium 28 Nr. 7

Algorithmen 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

Mehr

Dynamische Datenstrukturen

Dynamische 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

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

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

Mehr

Beispielblatt VU Algorithmen und Datenstrukturen 1 VU 6.0

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

Mehr

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

Mehr

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