• Keine Ergebnisse gefunden

Algorithmische Mathematik I Wintersemester 2017/18 Prof. Dr. Ira Neitzel AR. Dr. Tino Ullrich

N/A
N/A
Protected

Academic year: 2021

Aktie "Algorithmische Mathematik I Wintersemester 2017/18 Prof. Dr. Ira Neitzel AR. Dr. Tino Ullrich"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmische Mathematik I

Wintersemester 2017/18 Prof. Dr. Ira Neitzel AR. Dr. Tino Ullrich

Ubungsblatt 7. ¨ Abgabe am 27.11.2017 vor der Vorlesung.

Aufgabe 1. (Bubblesort)

a. Gegeben sei folgende Zahlenfolge:

7, 17, 5, 3, 2, 11, 13

Sortieren Sie diese Zahlenfolge mit dem Bubblesort-Algorithmus! Geben Sie dabei in jedem Schleifendurchlauf die bis dahin entstandene Permutation an, etwa so:

Anfang: 7, 17, 5, 3, 2, 11, 13 m = 6, i = 1 : .. .

m = 6, i = 2 : 7, 5, 17, 3, 2, 11, 13 . . .

b. Jemand sortiert eine Permutation der Zahlen 1, . . . , 8 mit Bubblesort. Gerade als die 8 ihre Position ganz hinten erreicht hat, versch¨ uttet er Kaffee auf seine L¨ osung.

Nun ist da nur noch folgendes zu lesen (ein ∗ steht dabei f¨ ur eine unleserliche Zahl):

4, 3, ∗, 8, ∗, ∗, ∗, ∗

(Einige ganz unleserliche Zeilen)

∗, ∗, ∗, ∗, ∗, ∗, ∗, 6 4, 3, 2, ∗, ∗, ∗, ∗, 8

Erkl¨ aren Sie, warum er sich entspannen kann, da seine L¨ osung ohnehin falsch ist!

c. Nehmen Sie an, eine Implementierung des Bubblesort ben¨ otigt zum Sortieren von 1000 Adressen im Durchschnitt eine Hundertstelstesekunde. Wie lange w¨ urde es in etwa dauern die Adressen der 81 Millionen Einwohner Deutschlands zu sortieren?

Wie lange f¨ ur die aller 7 Milliarden Menschen?

(4 + 4 + 2 = 10 Punkte) Aufgabe 2. (Fibonacci-Folge)

Gegeben sei die Fibonacci-Folge

f

n

= f

n−1

+ f

n−2

, n > 2, f

1

= f

2

= 1.

a. Zeigen Sie, dass die Folgenglieder der expliziten Formel f

n

= a

n

− b

n

5 mit a = 1 + √ 5

2 und b = 1 − √ 5 2 gen¨ ugen.

1

(2)

b. Zeigen Sie, dass lim

n→∞

f

n+1

/f

n

existiert. Berechnen Sie diesen Grenzwert.

Hinweis. Zeigen sie zun¨ achst, dass a = 1 +

1a

und b = 1 +

1b

gilt.

(5 Punkte) Aufgabe 3. (Zeiger in C/C++)

Nach den Definitionen int i=5;

int *pi, pj;

char *pc, pd;

werden folgende Zuweisungen (einzeln) ausgef¨ uhrt pi=i;

pi=&i;

*pi=i;

*pi=&i;

pi=pj;

pc=&pd;

pi=pc;

pd=*pi;

*pi=i**pc;

pi=0;

Entscheiden Sie, welche Zuweisungen syntaktisch korrekt sind und geben sie nach jeder syntaktisch korrekten Zuweisung den Wert der linken Seite an (bei Zeigern dereferenzie- ren).

(5 Punkte) Programmieraufgabe 1. (Fibonacci)

a. Implementieren Sie eine rekursive C/C++ Funktion, die fuer ein Argument n die n-te Fibonaccizahl ausgibt.

b. Implementieren Sie eine Funktion, die f¨ ur ein Argument n die ersten n Fibonac- cizahlen in einem array speichert und anschließend ausgibt. Daf¨ ur soll das array als Parameter ¨ ubergeben werden. Implementieren Sie zwei Varianten. Die eine Implementierung soll Teilaufgabe a) benutzen und die andere m¨ oglichst effizient vorgehen.

Die Programmieraufgabe ist eine Pr¨ asenzaufgabe und wird nicht bepunktet.

Programmieraufgabe 2. (Addition mit Listen) Gegeben sei folgendes Beispielprogramm:

1

# i n c l u d e < l i m i t s . h >

# i n c l u d e < i o s t r e a m >

3

u s i n g n a m e s p a c e std ;

5

int m a i n ()

7

{

u n s i g n e d int i = U I N T _ M A X ;

9

u n s i g n e d int j = U I N T _ M A X ; c o u t < < i + j ;

11

}

2

(3)

Kompilieren Sie dieses Programm und schauen Sie sich die Ausgabe an. Was bemerken Sie?

In manchen F¨ allen wollen Sie auch ganze Zahlen, die ¨ uber die maximalen Werte der Standarddatentypen gehen, verwenden. Hierf¨ ur eignen sich dynamische Datenstruktu- ren, wie einfach verkettete Listen. In diesen Listen k¨ onnen sehr große Ganzzahlen in folgender Form gespeichert werden:

127

10

= 1 · 10

2

+ 2 · 10

1

+ 7 · 10

0

⇒ Liste 7 → 2 → 1

Mit dieser Darstellung der Ganzzahl k¨ onnen nun beliebig große Zahlen addiert werden:

7 → 2 → 1 +

7 → 0 → 0

Nun kann man, wie gewohnt aus Grundschulzeiten, von hinten die Zahlen in der Liste addieren und den ¨ Ubertrag zur n¨ achsten Stelle weiter reichen.

Erste Stelle: 7 + 7 = 14 ¨ Ubertrag: 1 Zweite Stelle: 2 + 0 + 1 = 3 ¨ Ubertrag: 0 Dritte Stelle: 1 + 0 + 0 = 1 ¨ Ubertrag: 0

In der resultierenden Liste steht nun das Ergebnis 134 = 4 → 3 → 1 .

a. Definieren Sie den Datentyp struct element, der eine Ziffer und einen Zeiger auf das n¨ achste Element enth¨ alt (einfach verkettete Liste).

b. Addieren Sie folgenden Zahlen mit ihrem neuen Datentyp:

(a) 65535 + 65535

(b) 18446744073709551615 + 9223372036854775807

c. Wie k¨ onnte man eine Langzahlmultiplikation implementieren?

Hinweise:

a. Die aktuelle Ziffer bekommen Sie mittels (ziffer1 + ziffer2 + ?) % 10.

b. Den ¨ Ubertrag bekommen Sie mittels (int)((ziffer1 + ziffer2 + ?) / 10).

Die Programmieraufgabe ist eine Pr¨ asenzaufgabe und wird nicht bepunktet.

3

Referenzen

ÄHNLICHE DOKUMENTE

Aufgabe 1. Weisen Sie nach, dass die Lagrange-Grundpolynome eine Basis des Polynomraums P n−1 bilden.. b. Stellen Sie die zu den St¨ utzstellen geh¨ orenden

n¨ otig um eine weitere richtige Dezimalstelle im Ergebnis zu erhalten.

Welcher arithmetischen Operation entspricht im b-adischen Zahlensystem das Ver- schieben (bzgl. des Stellenwertsystems) der Ziffern einer Zahl nach links, also.. (d n−1

Das betrachtete Element wird eingef¨ ugt, indem die gr¨ oßeren Elemente einfach um eine Position nach rechts bewegt werden.. Notieren Sie diesen Algorithmus

(2 + 2 = 4 Punkte) Aufgrund des Dies Academicus der Universit¨ at Bonn findet die Vorlesung Al- gorithmische Mathematik I am Mittwoch, den 06.12.2017, nicht statt.. Statt- dessen

Wenn Graphen mittels einer Adjazenzmatrix gespeichert werden, dann kann damit sehr einfach entschieden werden, ob ein Graph gerichtet oder ungerichtet ist, (stark, schwach)

Zwei Ecken x, y ∈ V werden genau dann durch eine Kante {x, y} verbunden, wenn sich die beiden {0, 1}-Folgen von x und y an genau einer Stelle unterscheiden.. Es bietet sich an

Diese Autoren (ohne Erd¨ os) bilden einen Graph, wobei zwei Autoren adjazent sind, wenn sie eine gemeinsame Publikation haben.. Auf der Webseite zur Vorlesung finden Sie diese Daten