Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ......

40
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo T¨ aubig Lehrstuhl f¨ ur Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut f¨ ur Informatik Technische Universit¨ at M¨ unchen Sommersemester 2010 H. T¨ aubig (TUM) GAD SS’10 1 / 41

Transcript of Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ......

Page 1: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Grundlagen: Algorithmen und Datenstrukturen

Prof. Dr. Hanjo Taubig

Lehrstuhl fur Effiziente Algorithmen(Prof. Dr. Ernst W. Mayr)

Institut fur InformatikTechnische Universitat Munchen

Sommersemester 2010

H. Taubig (TUM) GAD SS’10 1 / 41

Page 2: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches

Ubersicht

1 OrganisatorischesVorlesungsdaten

2 Einfuhrung

H. Taubig (TUM) GAD SS’10 2 / 41

Page 3: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Grundlage

Inhalt der Vorlesung basiert auf dem Buch

K. Mehlhorn, P. Sanders:Algorithms and Data Structures – The Basic Toolbox(Springer, 2008)

Vorlage fur die Slides:

Slides aus SS’08 von Prof. Dr. Christian Scheideler bzw.Slides aus SS’09 von Prof. Dr. Helmut Seidl

H. Taubig (TUM) GAD SS’10 3 / 41

Page 4: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Vorlesungsdaten

Modul: IN0007

Titel: “Grundlagen: Algorithmen und Datenstrukturen”

3 SWS Vorlesung + 2 SWS Ubung

ECTS: 6 Credit Points

Dozent: Prof. Dr. Hanjo Taubig

Vorlesungszeiten:

Dienstag 14:15 – 15:45 Uhr (MI Horsaal 1)Donnerstag 12:15 – 13:00 Uhr (MI Horsaal 1)

Voraussetzung:

Modul IN0001: Einfuhrung in die Informatik 1

H. Taubig (TUM) GAD SS’10 4 / 41

Page 5: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Ubung

2 SWS Tutorubungen

24 Gruppen (davon 3 englische) an 16 verschiedenen Terminen

jeweils maximal 15 Teilnehmer

Anmeldung uber Grundstudium-Webseite:https://grundstudium.in.tum.de/

Installation eines Benutzerzertifikats erforderlich(!)Falls nicht vorhanden: ⇒ InfoPoint

Ubungsleitung:Tobias Lieber ([email protected])

Webseite:http://www14.in.tum.de/lehre/2010SS/gad/uebung/

H. Taubig (TUM) GAD SS’10 5 / 41

Page 6: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

UbungstermineMontag 16 - 18 Uhr

Dienstag 8 - 10 Uhr10 - 12 Uhr12 - 14 Uhr16 - 18 Uhr

Mittwoch 8 - 10 Uhr10 - 12 Uhr12 - 14 Uhr14 - 16 Uhr16 - 18 Uhr

Donnerstag 10 - 12 Uhr14 - 16 Uhr

Freitag 8 - 10 Uhr10 - 12 Uhr12 - 14 Uhr14 - 16 Uhr

H. Taubig (TUM) GAD SS’10 6 / 41

Page 7: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Zielgruppe

Bachelor Informatik

Bachelor Wirtschaftsinformatik

Bachelor Bioinformatik

Andere Studiengange mit Neben-/Zweitfach Informatik

Masterstudiengang Angewandte Informatik

Aufbaustudium Informatik

planmaßig im 2. Fachsemester(fur Wirtschaftsinformatik im 4. Fachsemester)

H. Taubig (TUM) GAD SS’10 7 / 41

Page 8: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Dozent / Kontaktdaten

Prof. Dr. Hanjo Taubig

Vertretungsprofessor fur Theoretische Informatikam Lehrstuhl fur Effiziente Algorithmen(Lehrstuhlinhaber: Prof. Dr. Ernst W. Mayr)

eMail: [email protected]

Web: http://www14.in.tum.de/personen/taeubig/

Telefon: 089 / 289-17740

Raum: 03.09.039

Sprechstunde: Mittwoch 13-14 Uhr(oder nach Vereinbarung)

H. Taubig (TUM) GAD SS’10 8 / 41

Page 9: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Inhalt

Grundlagen der Komplexitatsanalyse

Komplexitat der Operationen von Listen, Stacks und Schlangen

binare Baume und Algorithmen (preorder, inorder, postorder)

binare Suchbaume und balancierte Suchbaume (AVL, B-Baume)

Prioritatswarteschlangen

Hashing

Sortieren und sortierbasierte Algorithmen

Graph-Reprasentation und einfache Graphalgorithmen

Pattern Matching, Datenkompression

H. Taubig (TUM) GAD SS’10 9 / 41

Page 10: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Organisatorisches Vorlesungsdaten

Weitere Literatur

Cormen, Leiserson, Rivest, Stein:Introduction to Algorithms

Goodrich, Tamassia:Algorithm Design: Foundations, Analysis, and Internet Examples

Heun:Grundlegende AlgorithmenEinfuhrung in den Entwurf und die Analyse effizienter Algorithmen

Kleinberg, Tardos:Algorithm Design

Schoning:Algorithmik

Sedgewick:Algorithmen in Java. Teil 1-4

H. Taubig (TUM) GAD SS’10 10 / 41

Page 11: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung

Ubersicht

1 Organisatorisches

2 EinfuhrungBegriffsklarung: Algorithmen und DatenstrukturenBeispiele

H. Taubig (TUM) GAD SS’10 11 / 41

Page 12: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Algorithmus - Herkunft des Begriffs

Bezeichnung ist abgeleitet vom Namen Muhammed al-Chwarizmi(ca. 783-850)

sein arabisches Lehrbuch “Uber das Rechnen mit indischen Ziffern”begann in lateinischer Ubersetzung mit “Dixit Algorismi”(“Algorismi hat gesagt”)

Mittelalter: “algorismus” als Kunst des Rechnens mit den arabischenZiffern(angeblich zusammengesetzt aus dem Namen des Erfinders, demPhilosophen Algus, und dem griechischen Wort rismus/arithmos furZahl)

H. Taubig (TUM) GAD SS’10 12 / 41

Page 13: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Algorithmus - Definition

Definition

Ein Algorithmus ist eine formale Handlungsvorschrift zur Losung vonInstanzen eines Problems in endlich vielen Schritten.

Eingabe⇓

Algorithmus⇓

Ausgabe

H. Taubig (TUM) GAD SS’10 13 / 41

Page 14: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Algorithmus - Beispiele

KochrezeptI Eingabe: ZutatenI Algorithmus: RezeptI Ausgabe: Essen

BauanleitungI Eingabe: EinzelteileI Algorithmus: BauanleitungI Ausgabe: Schrank

Weitere BeispieleI Weg aus dem LabyrinthI Zeichnen eines Kreises

H. Taubig (TUM) GAD SS’10 14 / 41

Page 15: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Datenstruktur - Definition

Definition

Eine Datenstruktur ist ein formalisiertes Objekt, das der Speicherung undder Verwaltung von bzw. dem Zugriff auf Daten in geeigneter Weise dient,wobei die Daten dabei zweckdienlich angeordnet, kodiert und miteinanderverknupft werden.

Datenstrukturm m m

Operation 1 Operation 2 Operation 3

H. Taubig (TUM) GAD SS’10 15 / 41

Page 16: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Datenstruktur - Beispiele

LexikonOperation: Suche(Name)(Algorithmus mit Eingabe 〈Name〉,Ausgabe Information zu 〈Name〉)

KalenderOperation: Wochentag(Datum)(Algorithmus mit Eingabe 〈Datum〉,Ausgabe Wochentag zum 〈Datum〉)

H. Taubig (TUM) GAD SS’10 16 / 41

Page 17: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Softwareentwicklung

Problem⇓

Modellierung⇓

Algorithmen und Datenstrukturen⇓

Implementierung

H. Taubig (TUM) GAD SS’10 17 / 41

Page 18: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Grundsatzliche Probleme

Korrektheit

Effizienz

Komplexitat

Robustheit / Sicherheit

H. Taubig (TUM) GAD SS’10 18 / 41

Page 19: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Begriffsklarung: Algorithmen und Datenstrukturen

Effizienz

im Sinn von

Laufzeit

Speicheraufwand

Energieverbrauch

Kritische Beispiele:

Riesige Datenmengen (Bioinformatik)

Echtzeitanwendungen (Spiele, Flugzeugsteuerung)

Ziel der Vorlesung:

Grundstock an effizienten Algorithmen und Datenstrukturen furStandardprobleme

H. Taubig (TUM) GAD SS’10 19 / 41

Page 20: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

Problem: Es ist dunkel!

H. Taubig (TUM) GAD SS’10 20 / 41

Page 21: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

1. Versuch: mit einer Hand immer an der Wand lang

H. Taubig (TUM) GAD SS’10 21 / 41

Page 22: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

Problem: Inseln werden endlos umkreist

H. Taubig (TUM) GAD SS’10 22 / 41

Page 23: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

2. Versuch: gerade bis zur Wand, der Wand folgen bis man wiederin dieselbe Richtung lauft, dann wieder gerade bis zur Wand usw.

H. Taubig (TUM) GAD SS’10 23 / 41

Page 24: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

Problem: Jetzt laufen wir im ersten Beispiel im Kreis

H. Taubig (TUM) GAD SS’10 24 / 41

Page 25: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Pledge-Algorithmus

Algorithmus 1 : Labyrinth-Suche

Setze Umdrehungszahler auf 0;repeat

repeatGehe geradeaus;

until Wand erreicht ;Drehe nach rechts;Aktualisiere Umdrehungszahler;repeat

Folge dem Hindernis mit einer Hand;dabei: je nach Drehrichtung Umdrehungszahlerinkrementieren/dekrementieren;

until Umdrehungszahler=0 ;

until Ausgang erreicht ;

H. Taubig (TUM) GAD SS’10 25 / 41

Page 26: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

0

+1

+4

+3

+1

+1

+2

+2

+2

+3

1. Beispiel funktioniert

H. Taubig (TUM) GAD SS’10 26 / 41

Page 27: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Weg aus dem Labyrinth

0

+1

0

+1

+2

2. Beispiel funktioniert auch

H. Taubig (TUM) GAD SS’10 27 / 41

Page 28: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Wie kann ein Computer einen Kreis zeichnen?

H. Taubig (TUM) GAD SS’10 28 / 41

Page 29: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Naiver Ansatz: Verwendung von sin und cos fur α = 0 . . . 2π

−R R

x=R cos( )

y=R sin( )α

α

H. Taubig (TUM) GAD SS’10 29 / 41

Page 30: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Algorithmus 2 : Kreis1

for i = 0; i < n; i++ doplot(R · cos(2π · i/n), R · sin(2π · i/n));

Kreisumfang: 2π · R⇒ Bei Pixelbreite von 1 Einheit reicht n = 7R.

Problem: sin und cos sind teuer!

H. Taubig (TUM) GAD SS’10 30 / 41

Page 31: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Besserer Ansatz: x2 + y2 = R2 bzw. y = ±√

R2 − x2

−R Rx

yR

H. Taubig (TUM) GAD SS’10 31 / 41

Page 32: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Algorithmus 3 : Kreis2

for x = −R; y ≤ R; x++ doy = sqrt(R · R − x · x);plot(x, y);plot(x, -y);

Problem: sqrt ist auch noch relativ teuer!

H. Taubig (TUM) GAD SS’10 32 / 41

Page 33: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Besserer Ansatz: Ausnutzung von Spiegelachsen

−R R

(x,y)

(y,x)

(y,−x)

(x,−y)

(−x,y)

(−y,x)

(−y,−x)

(−x,−y)

H. Taubig (TUM) GAD SS’10 33 / 41

Page 34: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnenNoch besserer Ansatz: Ist der Mittelpunkt der Grundlinie des Pixelquadratsinnerhalb des Kreises? ja: x ← x + 1, nein: x ← x + 1, y ← y − 1

H. Taubig (TUM) GAD SS’10 34 / 41

Page 35: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnenMittelpunkt des ersten Quadrats: (x , y) = (0,R)Position seines Grundlinienmittelpunkts: (0,R − 1

2 )Test, ob (x , y) innerhalb des Kreises:

F (x , y) := x2 + y2 − R2 < 0

1. Quadrat: F (0,R − 12 ) = 02 + (R − 1

2 )2 − R2 = 14 − R < 0?

Quadrat rechts daneben:F (1,R − 1

2 ) = 12 + (R − 12 )2 − R2 = 5

4 − R < 0?Update:

F (x + 1, y) = (x + 1)2 + y2 − R2 = (x2 + 2x + 1) + y2 − R2

F (x + 1, y) = F (x , y) + 2x + 1

F (x + 1, y − 1) = (x + 1)2 + (y − 1)2 − R2

= (x2 + 2x + 1) + (y2 − 2y + 1)− R2

F (x + 1, y − 1) = F (x , y) + 2x − 2y + 2

H. Taubig (TUM) GAD SS’10 35 / 41

Page 36: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Algorithmus 4 : Bresenham1

(x , y) = (0,R) ;plot(0,R); plot(R, 0); plot(0,−R); plot(−R, 0);F = 5

4 − R;while x < y do

if F < 0 thenF = F + 2x + 1;

elseF = F + 2x − 2y + 2;y = y − 1;

x = x + 1;plot(x , y); plot(y , x); plot(−x , y); plot(y ,−x);plot(x ,−y); plot(−y , x); plot(−x ,−y); plot(−y ,−x);

Es geht sogar noch etwas schneller!

H. Taubig (TUM) GAD SS’10 36 / 41

Page 37: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnenErsetzung der Korrekturterme fur F :

F = F + 2x + 1 → F = F + dE

F = F + 2x − 2y + 2 → F = F + dSE

mit dE = 2x + 1 und dSE = 2x − 2y + 2Anfangswerte:

dE (0,R) = 2 · 0 + 1 = 1

dSE (0,R) = 2 · 0− 2 · R + 2 = 2− 2 · RUpdate nach rechts:

dE (x + 1, y) = 2 · (x + 1) + 1 = dE (x , y) + 2

dSE (x + 1, y) = 2 · (x + 1)− 2 · y − 2 = dSE (x , y) + 2

Update nach rechts unten:

dE (x + 1, y − 1) = 2 · (x + 1) + 1 = dE (x , y) + 2

dSE (x + 1, y − 1) = 2 · (x + 1)− 2 · (y − 1) + 2 = dSE (x , y) + 4H. Taubig (TUM) GAD SS’10 37 / 41

Page 38: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnen

Außerdem kann der Bruch 54 durch 1 ersetzt werden, weil sich F

immer um einen Betrag ganzer Zahlen andert.

D.h.

F =5

4− R + k < 0

ist aquivalent zuF = 1− R + k < 0

Vorteil:

nur noch ganze Zahlen!

H. Taubig (TUM) GAD SS’10 38 / 41

Page 39: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Kreis zeichnenAlgorithmus 5 : Bresenham2

(x , y) = (0,R); plot(0,R); plot(R, 0); plot(0,−R); plot(−R, 0);F = 1− R;dE = 1; dSE = 2− 2 · R;while x < y do

if F < 0 thenF = F + dE ;dSE = dSE + 2;

elseF = F + dSE ;y = y − 1;dSE = dSE + 4;

x = x + 1;dE = dE + 2;plot(x , y); plot(y , x); plot(−x , y); plot(y ,−x);plot(x ,−y); plot(−y , x); plot(−x ,−y); plot(−y ,−x);

H. Taubig (TUM) GAD SS’10 39 / 41

Page 40: Grundlagen: Algorithmen und Datenstrukturen€¦ · Algorithm Design: Foundations, ... Bresenham-Algorithmus wurde Anfang der 1960er Jahre von Jack Bresenham (damals bei IBM) ...

Einfuhrung Beispiele

Bresenham-Algorithmus

wurde Anfang der 1960er Jahre von Jack Bresenham(damals bei IBM) entwickelt

verwendet nur einfache Additionen ganzer Zahlen

ist damit deutlich schneller als die naiven Ansatze

diese und weitere Beispiele:

Taschenbuch der Algorithmen (Springer, 2008)

H. Taubig (TUM) GAD SS’10 40 / 41