11 Ausgewählte Algorithmen der Computergraphik Digitale Geometrie Gebiete und Konturen Farbmodelle Renderalgorithmen Schnelle Multiplikation Fast Fourier.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Fast Fourier Transformation
Polynomial Root Isolation
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Schnelle Matrizenoperationen von Christian Büttner
Abschluss Gegeben Menge F von funktionalen Abhängigkeiten.
Suche in Texten (Stringsuche )
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
Faltung Entfaltung Bestimmung der (unbekannten) Funktion f aus den (bekannten) Funktionen h und g. Bezeichnung h(x) … Messdaten f(y) … Physikalisches Profil.
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Beispiele für Gleichungssysteme
V. Algebra und Geometrie
Quaternionen Eugenia Schwamberger.
Mathematische Grundlagen und Rechnen mit algebraischen Zahlen
Grundsätzliche Resultate Theorem: Für jeden Relationstyp R(A 1,...,A n ) und jede Menge von FDs über {A 1,...,A n } gibt es: –eine verlustlose (aber nicht.
Folie 1 § 30 Erste Anwendungen (30.2) Rangberechnung: Zur Rangberechnung wird man häufig die elementaren Umformungen verwenden. (30.1) Cramersche Regel:
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
§10 Vektorraum. Definition und Beispiele
§24 Affine Koordinatensysteme
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Chromatische Zahl.
Multiplikation großer Zahlen mit Standard-FFT
Diskrete Mathematik II
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Polynome und schnelle Fourier-Transformation
Algorithmen und Datenstrukturen Übungsmodul 3
PHP: Operatoren und Kontrollstrukturen
Fourier-Analyse und technologische Anwendungen
Scaffold 29S: Komplexe Zahlen
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Folie 1 §21 Das Produkt von Matrizen (21.1) Definition: Für eine (m,n)-Matrix A und eine (n,s)-Matrix B ist das (Matrizen-) Produkt AB definiert als (21.2)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Wichtige Transformationen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Wozu Maple? Symbolische Algebra Manche Sachen soll man besser nicht von Hand machen –kleine Rechnungs Fehler können mehrere Millionen werden – am besten.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Vorstellen und Herleiten der Horner Schemas
Fallunterscheidung und Iteration Programmierung I Prof. Dr. Michael Löwe.
Wiederholte Programmausführung
§8 Gruppen und Körper (8.1) Definition: Eine Gruppe G ist eine Menge zusammen mit einer Verknüpfung, die jedem Paar (a,b) von Elementen aus G ein weiteres.
Unmöglichkeitsbeweise
2.4 Rekursion Klassifikation und Beispiele
Prüfungsbesprechung Barbara Scheuner
EnerGel Liquid Gel-Tintenroller
Wiederholung Größte gemeinsame Teiler Satz von Bezout:
LernBar LU 16: Zehn hoch.
Christian Scheideler WS 2008
Syntax: while ( BEDINGUNG ) { // Anweisungen die so lange immer wieder ausgeführt // werden, wie die Bedingung zutrifft } for (INITIALISIERUNG; BEDINGUNG;
Wiederholung Körper K Eigenschaften von multiplikativen Gruppen
Kleiner Schreibfehler
Korrektur Aufgabe 8.1 Anstatt x2-2x+3 muss es heissen x2-4x+3.
Wiederholung Gruppen Untergruppen Gruppenisomorphismen
Wiederholung Umwandlung in Koordinatenform
Wiederholung Chinesischer Restsatz RSA TexPoint fonts used in EMF.
ReduSoft Ltd. Kurzbeschreibungen zu einigen Modulen, die im Programm MathProf 5.0 unter dem Themenbereich Algebra implementiert sind. Matrizen.
ReduSoft Ltd. Kurzbeschreibungen zu einigen Modulen, die im Programm MathProf 5.0 unter dem Themenbereich Algebra implementiert sind. Matrizen.
Interferenzen von Wellen
Kapitel I. Vorspann zum Begriff Vektorraum
Vorstellen und Herleiten der Horner Schemas
The Programming Language Pascal
Rechenausdrücke (Terme) – Fachbegriffe - Rechenregeln
 Präsentation transkript:

11 Ausgewählte Algorithmen der Computergraphik Digitale Geometrie Gebiete und Konturen Farbmodelle Renderalgorithmen Schnelle Multiplikation Fast Fourier Transform

22 Kapitel 7.4 Definition Bild R:= {(x,y)  Z2, 0  x  a, 0  y  b} B: R  [0,255]3, RGB-Farbraum

33 Farbmodelle

44 Vier- und Achtnachbarntopologie

55 Tracer-Algorithmus

66 Streckenrasterung

77 Bresenham-Algorithmus Algorithmus Bresenham_Haarstrecke_erster Oktant input (dx,dy) ; {Input Differenzen 0  dy  dx} x := 0; y := 0 ; abweichung := - dx ; {Initialisierung} while ( abweichung < 0) and (x <= dx ) do begin { Zeichne das erste Linienstück mit Ordinate 0 } abweichung := abweichung + 2*dy ; plot (x,y) ; inc(x) ; end ; abweichung := abweichung - 2*dx ; inc(y); { Schleife für Ordinaten von 1 bis dy - 1 } while (y < dy ) do begin while (abweichung < 0) do { eine Ordinate abhandeln } begin abweichung := abweichung + 2*dy ; plot (x,y) ; inc(x) ; end ; abweichung := abweichung - 2*dx ; inc(y) ; end ; while ( x  dx ) do begin { Zeichne das Linienstück mit Ordinate dy } abweichung := abweichung + 2*dy ; plot (x,y) ; inc(x); end ; end ;

88 Erläuterungen

99 Bresenham Achtelkreis Bresenham_Achtelkreis (r: integer {r Radius}); x := 0; y := r ; control := 1-r ; while x<= y do begin plot(x,y); inc(x); if control>=0 then begin dec(y) ; control := control - shl(y) end; control := control + shl(x) + 1; end; {while} end;

1010 Schnelle Multiplikation „Klassische“ Algorithmen: O(n²) Rückführung auf die serielle Addition  Durch Zerlegung „3M“: O(nld(3) )  O(n 1.585)) U = (Ahigh + Alow)(Bhigh + Blow) V = Ahigh * Bhigh; W = Alow * Blow A*B = V*22p + (U-W-V)*2p + W [Karatsuba, 1962] Drei kurze statt vier kurzen oder zwei langen Multiplikationen (Ausarbeitung Matthias Bogaczyk)

1111 Strassen-Algorithmus Schnelle Multiplikation

1212 Polynommultiplikation  A(x)=  0  k<n akxk, B(x)=  0  k<n bkxk, C(x)=  0  k<2n-1 ckxk entspricht genau der Faltung der beiden Vektoren A und B  Beispiel für zwei Vektoren A und B der Länge n: c0 = a0b0 c1 = a0b1 + a1b0 c2 = a0b2 + a1b1 + a2b0 cn-1 = a0bn-1 + a1bn an-2b1 + an-1b0 cn = 0a0 + a1bn an-1b1 + 0b0 c2n-2 = an-1bn-1 Um das Produkt der beiden Polynome zu bestimmen, kann man auch die Polynome A und B an 2n-1 Stellen auswerten und dann C konstruieren.

1313 Polynommultiplikation (2) Die Konstruktion über das Hornerschema benötigt auch O(n2) Schritte. Daher muss man sich einen anderen Zugang überlegen und die Polynomauswertung anders darstellen.

1414 Polynomauswertung an Einheitswurzeln Es ist also günstig, wenn man Es x0=  0; x1 =  1; x2 =  2; …; xn-1 =  n-1,,setzt wobei  n = 1, und  i  i1‚ für 0 < i < n gilt. r 0 < i < n  ist die n-te komplexe Einheitswurzel exp(  i /n).

1515 Diskrete Fouriertransformation

1616

1717 Die schnelle Fourier-Transformation Bekanntlich kann die diskrete Fouriertransformation mit dem Teile und Herrsche–Prinzip mit einem Aufwand von O(N logN) Operationen unter Ausnutzung derselben Routine für die Hin– und Rücktransformation schnell implementiert werden. Ausgehend von dem Fourierpolynom einer 1–periodischen Funktion f(x) p(x) :=  0  k  N-1 bk exp(i2πkx),  = exp(i2  /N) gilt p(k/N) = fk := f (k/N)=, k = 0, 1,...,N-1 genau dann, wenn bk = 1/N  0  l  N-1 fl exp(-2πilk/N), k = 0,...,N-1.

1818 Die schnelle Fourier-Transformation 2 Wir schildern nun kurz den eindimensionalen FFT–Algorithmus von Cooley and Tukey nach Gauß und setzen N = 2n: Dazu führen wir die inverse Darstellung τ(k) zur Binärdarstellung einer ganzen Zahl k ein: k = a0 + a12 + a an-1 2n-1, ai  {0, 1}  τ(k) = an-1 + an , a0 2n-1. Nach der Initialisierung des Tableaus b[τ(k)] := f(k/N) kann der eindimensionale Grundalgorithmus folgendermaßen beschrieben werden:

1919 Die schnelle Fourier-Transformation 3 for m := 1 to n do begin E := 1; for j := 0 to 2^(m-1) - 1 do for r := 0 to N-1 step 2^m do begin u := b[r+j]; v := b[r+j+2^(m-1)] * E; b[r+j] := u + v; b[r+j+2^(m-1)] := u - v; E := E * exp(-2 * pi * i / 2^m); end;

2020 Die schnelle Fourier-Transformation 4 Anschließend finden wir im Tableau b[k], 0 ≤ k ≤ 2n -1 die mit N multiplizierten Koeffizienten des komplexen Fourierpolynoms, die mittels der Korrespondenzen A0 := 2b0, Ak := bk + bN-k, Bk := i(bk – bN-k) in die Koeffizienten des reellen Fourierpolynoms umgerechnet werden können. Für die Rücktransformation wird die abschließende Division durch N unter- drückt und die letzte Zeile der Iteration in E := E · exp(2πi/2m) modifiziert. Die Berechnung der Transformation τ geschieht mit folgendem kleinen Programmfragment:

2121 Die schnelle Fourier-Transformation 5 m1 := N div 2; l := 0; for k := 0 to N-1 do begin read(Re(b[k]), Im(b[k])); If k > l then begin swap(Re(b[k]), Re(b[l])); swap(Im(b[k]), Im(b[l])); end; j := m1; while (j 0) do begin l := l - j; j := j div 2 end; l := l + j; end; Dieser Algorithmus überträgt sich auch auf den zweidimensionalen Fall.