89
Effizienz Gerd Bohlender Einstieg in die Informatik mit Java, Vorlesung vom 9.5.07 Gerd Bohlender Effizienz

Effizienz - KIT - Fakultät für Mathematik · Uberlegungen zur Effizienz¨ Ben¨otigte Rechenzeit Ausnutzung der Performance des Computers Beispiel Parallelrechner mit p Prozessoren:

  • Upload
    vokhue

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Effizienz

Gerd Bohlender

Einstieg in die Informatik mit Java, Vorlesung vom 9.5.07

Gerd Bohlender Effizienz

Ubersicht

1 Uberlegungen zur Effizienz

2 Landau-Symbole

3 Eier im Korb

4 Zyklische Ziffern

Gerd Bohlender Effizienz

Uberlegungen zur Effizienz

Benotigte Rechenzeit

Ausnutzung der Performance des Computers

Beispiel Parallelrechner mit p Prozessoren:Effizienz(p) = Zeit(1)

pZeit(p)

Benotigter Speicher

Aufwand des Programmierers

...

2 Beispiele

Gerd Bohlender Effizienz

Uberlegungen zur Effizienz

Benotigte Rechenzeit

Ausnutzung der Performance des Computers

Beispiel Parallelrechner mit p Prozessoren:Effizienz(p) = Zeit(1)

pZeit(p)

Benotigter Speicher

Aufwand des Programmierers

...

2 Beispiele

Gerd Bohlender Effizienz

Uberlegungen zur Effizienz

Benotigte Rechenzeit

Ausnutzung der Performance des Computers

Beispiel Parallelrechner mit p Prozessoren:Effizienz(p) = Zeit(1)

pZeit(p)

Benotigter Speicher

Aufwand des Programmierers

...

2 Beispiele

Gerd Bohlender Effizienz

Uberlegungen zur Effizienz

Benotigte Rechenzeit

Ausnutzung der Performance des Computers

Beispiel Parallelrechner mit p Prozessoren:Effizienz(p) = Zeit(1)

pZeit(p)

Benotigter Speicher

Aufwand des Programmierers

...

2 Beispiele

Gerd Bohlender Effizienz

Uberlegungen zur Effizienz

Benotigte Rechenzeit

Ausnutzung der Performance des Computers

Beispiel Parallelrechner mit p Prozessoren:Effizienz(p) = Zeit(1)

pZeit(p)

Benotigter Speicher

Aufwand des Programmierers

...

2 Beispiele

Gerd Bohlender Effizienz

Uberlegungen zur Effizienz

Benotigte Rechenzeit

Ausnutzung der Performance des Computers

Beispiel Parallelrechner mit p Prozessoren:Effizienz(p) = Zeit(1)

pZeit(p)

Benotigter Speicher

Aufwand des Programmierers

...

2 Beispiele

Gerd Bohlender Effizienz

Asymptotischer Aufwand eines Algorithmus –Landau-Symbole

Schreibweise O(g(n))Landau-Symbole (Edmund Landau, Gottingen, 1877-1938)

Die Funktion f (n) ist O(g(n)), fur n →∞, genau wenn esKonstanten n0 und M gibt mit

|f (n)| < M · |g(n)|

fur alle n > n0

Dabei ist g(n) meist eine einfache Funktion, z.B.O(n),O(n2),O(log n), ...

Gerd Bohlender Effizienz

Asymptotischer Aufwand eines Algorithmus –Landau-Symbole

Schreibweise O(g(n))Landau-Symbole (Edmund Landau, Gottingen, 1877-1938)

Die Funktion f (n) ist O(g(n)), fur n →∞, genau wenn esKonstanten n0 und M gibt mit

|f (n)| < M · |g(n)|

fur alle n > n0

Dabei ist g(n) meist eine einfache Funktion, z.B.O(n),O(n2),O(log n), ...

Gerd Bohlender Effizienz

Asymptotischer Aufwand eines Algorithmus –Landau-Symbole

Schreibweise O(g(n))Landau-Symbole (Edmund Landau, Gottingen, 1877-1938)

Die Funktion f (n) ist O(g(n)), fur n →∞, genau wenn esKonstanten n0 und M gibt mit

|f (n)| < M · |g(n)|

fur alle n > n0

Dabei ist g(n) meist eine einfache Funktion, z.B.O(n),O(n2),O(log n), ...

Gerd Bohlender Effizienz

Landau-Symbole – Anwendung

Angaben zum Rechenaufwand eines Algorithmus(asymptotische Komplexitat)

Angaben zum Speicherbedarf eines Algorithmus

Beispiel: n × n-Matrix (n Zeilen, n Spalten)

Speicherbedarf O(n2)

Rechenaufwand fur Addition O(n2)

Rechenaufwand fur Multiplikation O(n3)

n O(n2) O(n3)

10 100 1000100 10000 1000000

1000 1000000 1000000000

Gerd Bohlender Effizienz

Landau-Symbole – Anwendung

Angaben zum Rechenaufwand eines Algorithmus(asymptotische Komplexitat)

Angaben zum Speicherbedarf eines Algorithmus

Beispiel: n × n-Matrix (n Zeilen, n Spalten)

Speicherbedarf O(n2)

Rechenaufwand fur Addition O(n2)

Rechenaufwand fur Multiplikation O(n3)

n O(n2) O(n3)

10 100 1000100 10000 1000000

1000 1000000 1000000000

Gerd Bohlender Effizienz

Landau-Symbole – Anwendung

Angaben zum Rechenaufwand eines Algorithmus(asymptotische Komplexitat)

Angaben zum Speicherbedarf eines Algorithmus

Beispiel: n × n-Matrix (n Zeilen, n Spalten)

Speicherbedarf O(n2)

Rechenaufwand fur Addition O(n2)

Rechenaufwand fur Multiplikation O(n3)

n O(n2) O(n3)

10 100 1000100 10000 1000000

1000 1000000 1000000000

Gerd Bohlender Effizienz

Landau-Symbole – Rechenregeln

O(c · g(n)) = O(g(n)) fur eine Konstante c

O(g(n) + h(n)) = max(O(g(n),O(h(n))

z.B. O(2n3 + 3n2 + 24n + 799) = O(n3)

Gerd Bohlender Effizienz

Landau-Symbole – Rechenregeln

O(c · g(n)) = O(g(n)) fur eine Konstante c

O(g(n) + h(n)) = max(O(g(n),O(h(n))

z.B. O(2n3 + 3n2 + 24n + 799) = O(n3)

Gerd Bohlender Effizienz

Landau-Symbole – Rechenregeln

O(c · g(n)) = O(g(n)) fur eine Konstante c

O(g(n) + h(n)) = max(O(g(n),O(h(n))

z.B. O(2n3 + 3n2 + 24n + 799) = O(n3)

Gerd Bohlender Effizienz

Landau-Symbole – Einsatz zum Vergleich von Algorithmen

Beispiel: sortiere n Zahlen x0, x1, . . . , xn−1

Algorithmus 1 (Bubblesort) Algorithmus 2 (Quicksort)n O(n2) O(n log n)

2 4 24 16 88 64 24

...1000 106 10000106 1012 20 · 106

Algorithmus ist fur n = 106 etwa 100000 mal schneller.

100000 ≈ 1 Tag / 1 Sekunde

Gerd Bohlender Effizienz

Landau-Symbole – Einsatz zum Vergleich von Algorithmen

Beispiel: sortiere n Zahlen x0, x1, . . . , xn−1

Algorithmus 1 (Bubblesort) Algorithmus 2 (Quicksort)n O(n2) O(n log n)

2 4 24 16 88 64 24

...1000 106 10000106 1012 20 · 106

Algorithmus ist fur n = 106 etwa 100000 mal schneller.

100000 ≈ 1 Tag / 1 Sekunde

Gerd Bohlender Effizienz

Landau-Symbole – Vorsicht

Aber Vorsicht! Alle Aussagen gelten nur asymptotisch furn →∞, also ab einem (unbekannten) n0 und mit einem(unbekannten) Faktor M.

Fur ein”kleines“ n konnte Algorithmus 1 durchaus schneller

sein als Algorithmus 2.

Gerd Bohlender Effizienz

Eier im Korb - Aus einem alten Rechenbuch

Ein Mann stoßt den Korb voller Eier einer Marktfrau um. Die Eiergehen zu Bruch. Der Mann will den Schaden ersetzen und fragtwieviele Eier im Korb waren.Die Marktfrau antwortet:

”Die genaue Zahl weiß ich nicht.

Aber wenn ich immer 2 Eier aus dem Korb genommenhabe, dann blieb eines ubrig.Genauso, wenn ich immer 3, immer 4, immer 5 oderimmer 6 Eier heraus genommen habe.Aber wenn ich immer 7 Eier heraus genommen habe,dann blieb keines ubrig.“

Wieviele Eier waren (mindestens) im Korb?

Gerd Bohlender Effizienz

Eier im Korb - Aus einem alten Rechenbuch

Ein Mann stoßt den Korb voller Eier einer Marktfrau um. Die Eiergehen zu Bruch. Der Mann will den Schaden ersetzen und fragtwieviele Eier im Korb waren.Die Marktfrau antwortet:

”Die genaue Zahl weiß ich nicht.

Aber wenn ich immer 2 Eier aus dem Korb genommenhabe, dann blieb eines ubrig.Genauso, wenn ich immer 3, immer 4, immer 5 oderimmer 6 Eier heraus genommen habe.Aber wenn ich immer 7 Eier heraus genommen habe,dann blieb keines ubrig.“

Wieviele Eier waren (mindestens) im Korb?

Gerd Bohlender Effizienz

Eier im Korb - Aus einem alten Rechenbuch

Ein Mann stoßt den Korb voller Eier einer Marktfrau um. Die Eiergehen zu Bruch. Der Mann will den Schaden ersetzen und fragtwieviele Eier im Korb waren.Die Marktfrau antwortet:

”Die genaue Zahl weiß ich nicht.

Aber wenn ich immer 2 Eier aus dem Korb genommenhabe, dann blieb eines ubrig.Genauso, wenn ich immer 3, immer 4, immer 5 oderimmer 6 Eier heraus genommen habe.Aber wenn ich immer 7 Eier heraus genommen habe,dann blieb keines ubrig.“

Wieviele Eier waren (mindestens) im Korb?

Gerd Bohlender Effizienz

Eier im Korb - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n bei Division durch 2, 3, 4, 5, 6 den Rest1 ergibt und ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n bei Division durch 2, 3, 4, 5, 6 den Rest1 ergibt und ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n bei Division durch 2, 3, 4, 5, 6 den Rest1 ergibt und ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n bei Division durch 2, 3, 4, 5, 6 den Rest1 ergibt und ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Erstes Java-Programm

public class Eier {

public static void main (String [] args){int i=0;do i++;while (i%2!=1 || i%3!=1 || i%4!=1 ||

i%5!=1 || i%6!=1 || i%7!=0);System.out.println("Es waren " + i +

" Eier im Korb.");}

}

Gerd Bohlender Effizienz

Eier im Korb - Zweiter Algorithmus

Es kommen nur Zahlen in Frage, die bei Division durch 2, 3, 4, 5,6 den Rest 1 ergeben.Mit etwas Mathematik stellt man fest: Es kommen nur Zahlen inFrage, die bei Division durch kgV(2, 3, 4, 5, 6) = 60 den Rest 1ergeben.

Also: Teste alle Zahlen n = 1, 61, 121...

Beginne mit n = 1

Prufe, ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 60 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Zweiter Algorithmus

Es kommen nur Zahlen in Frage, die bei Division durch 2, 3, 4, 5,6 den Rest 1 ergeben.Mit etwas Mathematik stellt man fest: Es kommen nur Zahlen inFrage, die bei Division durch kgV(2, 3, 4, 5, 6) = 60 den Rest 1ergeben.Also: Teste alle Zahlen n = 1, 61, 121...

Beginne mit n = 1

Prufe, ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 60 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Zweiter Algorithmus

Es kommen nur Zahlen in Frage, die bei Division durch 2, 3, 4, 5,6 den Rest 1 ergeben.Mit etwas Mathematik stellt man fest: Es kommen nur Zahlen inFrage, die bei Division durch kgV(2, 3, 4, 5, 6) = 60 den Rest 1ergeben.Also: Teste alle Zahlen n = 1, 61, 121...

Beginne mit n = 1

Prufe, ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 60 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Zweiter Algorithmus

Es kommen nur Zahlen in Frage, die bei Division durch 2, 3, 4, 5,6 den Rest 1 ergeben.Mit etwas Mathematik stellt man fest: Es kommen nur Zahlen inFrage, die bei Division durch kgV(2, 3, 4, 5, 6) = 60 den Rest 1ergeben.Also: Teste alle Zahlen n = 1, 61, 121...

Beginne mit n = 1

Prufe, ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 60 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Zweiter Algorithmus

Es kommen nur Zahlen in Frage, die bei Division durch 2, 3, 4, 5,6 den Rest 1 ergeben.Mit etwas Mathematik stellt man fest: Es kommen nur Zahlen inFrage, die bei Division durch kgV(2, 3, 4, 5, 6) = 60 den Rest 1ergeben.Also: Teste alle Zahlen n = 1, 61, 121...

Beginne mit n = 1

Prufe, ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 60 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Zweiter Algorithmus

Es kommen nur Zahlen in Frage, die bei Division durch 2, 3, 4, 5,6 den Rest 1 ergeben.Mit etwas Mathematik stellt man fest: Es kommen nur Zahlen inFrage, die bei Division durch kgV(2, 3, 4, 5, 6) = 60 den Rest 1ergeben.Also: Teste alle Zahlen n = 1, 61, 121...

Beginne mit n = 1

Prufe, ob n durch 7 ohne Rest teilbar ist.

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 60 und prufe nochmal.

Gerd Bohlender Effizienz

Eier im Korb - Zweites Java-Programm

public class Eier2 {

public static void main (String [] args){int i=1;do i += 60;while (i%7 != 0);System.out.println("Es waren " + i +

" Eier im Korb.");}

}

Gerd Bohlender Effizienz

Vergleich der Effizienz

Programm 2 braucht nur 1/60 der Rechenzeit von Programm1

Beide Programm brauchen nur Bruchteile einer Sekunde

Rechenzeit spielt hier keine Rolle

Fazit: Die Arbeitszeit des Programmierers fur diemathematischen Uberlegungen ist

”verschwendet“

Ubrigens ... es waren 301 Eier im Korb!

Gerd Bohlender Effizienz

Vergleich der Effizienz

Programm 2 braucht nur 1/60 der Rechenzeit von Programm1

Beide Programm brauchen nur Bruchteile einer Sekunde

Rechenzeit spielt hier keine Rolle

Fazit: Die Arbeitszeit des Programmierers fur diemathematischen Uberlegungen ist

”verschwendet“

Ubrigens ... es waren 301 Eier im Korb!

Gerd Bohlender Effizienz

Vergleich der Effizienz

Programm 2 braucht nur 1/60 der Rechenzeit von Programm1

Beide Programm brauchen nur Bruchteile einer Sekunde

Rechenzeit spielt hier keine Rolle

Fazit: Die Arbeitszeit des Programmierers fur diemathematischen Uberlegungen ist

”verschwendet“

Ubrigens ... es waren 301 Eier im Korb!

Gerd Bohlender Effizienz

Vergleich der Effizienz

Programm 2 braucht nur 1/60 der Rechenzeit von Programm1

Beide Programm brauchen nur Bruchteile einer Sekunde

Rechenzeit spielt hier keine Rolle

Fazit: Die Arbeitszeit des Programmierers fur diemathematischen Uberlegungen ist

”verschwendet“

Ubrigens ... es waren 301 Eier im Korb!

Gerd Bohlender Effizienz

Vergleich der Effizienz

Programm 2 braucht nur 1/60 der Rechenzeit von Programm1

Beide Programm brauchen nur Bruchteile einer Sekunde

Rechenzeit spielt hier keine Rolle

Fazit: Die Arbeitszeit des Programmierers fur diemathematischen Uberlegungen ist

”verschwendet“

Ubrigens ... es waren 301 Eier im Korb!

Gerd Bohlender Effizienz

Zyklische Ziffern - Das Problem

Finde eine Zahl mit Endziffer 5

Multipliziere sie mit 5

Ist das Produkt gleich der ursprunglichen Zahl, wenn man die5 am Ende streicht und dafur vorne anfugt?

Beispiel: 5 * abcd5 = 5abcd(mit 4 Ziffern a, b, c, d)

Verallgemeinerung: ersetze 5 durch Faktor 2 bis 9

Quelle: Jacques Arsac, Computerdenkspiele selbst programmiert,Problem 3

Gerd Bohlender Effizienz

Zyklische Ziffern - Das Problem

Finde eine Zahl mit Endziffer 5

Multipliziere sie mit 5

Ist das Produkt gleich der ursprunglichen Zahl, wenn man die5 am Ende streicht und dafur vorne anfugt?

Beispiel: 5 * abcd5 = 5abcd(mit 4 Ziffern a, b, c, d)

Verallgemeinerung: ersetze 5 durch Faktor 2 bis 9

Quelle: Jacques Arsac, Computerdenkspiele selbst programmiert,Problem 3

Gerd Bohlender Effizienz

Zyklische Ziffern - Das Problem

Finde eine Zahl mit Endziffer 5

Multipliziere sie mit 5

Ist das Produkt gleich der ursprunglichen Zahl, wenn man die5 am Ende streicht und dafur vorne anfugt?

Beispiel: 5 * abcd5 = 5abcd(mit 4 Ziffern a, b, c, d)

Verallgemeinerung: ersetze 5 durch Faktor 2 bis 9

Quelle: Jacques Arsac, Computerdenkspiele selbst programmiert,Problem 3

Gerd Bohlender Effizienz

Zyklische Ziffern - Das Problem

Finde eine Zahl mit Endziffer 5

Multipliziere sie mit 5

Ist das Produkt gleich der ursprunglichen Zahl, wenn man die5 am Ende streicht und dafur vorne anfugt?

Beispiel: 5 * abcd5 = 5abcd(mit 4 Ziffern a, b, c, d)

Verallgemeinerung: ersetze 5 durch Faktor 2 bis 9

Quelle: Jacques Arsac, Computerdenkspiele selbst programmiert,Problem 3

Gerd Bohlender Effizienz

Zyklische Ziffern - Das Problem

Finde eine Zahl mit Endziffer 5

Multipliziere sie mit 5

Ist das Produkt gleich der ursprunglichen Zahl, wenn man die5 am Ende streicht und dafur vorne anfugt?

Beispiel: 5 * abcd5 = 5abcd(mit 4 Ziffern a, b, c, d)

Verallgemeinerung: ersetze 5 durch Faktor 2 bis 9

Quelle: Jacques Arsac, Computerdenkspiele selbst programmiert,Problem 3

Gerd Bohlender Effizienz

Zyklische Ziffern - Das Problem

Finde eine Zahl mit Endziffer 5

Multipliziere sie mit 5

Ist das Produkt gleich der ursprunglichen Zahl, wenn man die5 am Ende streicht und dafur vorne anfugt?

Beispiel: 5 * abcd5 = 5abcd(mit 4 Ziffern a, b, c, d)

Verallgemeinerung: ersetze 5 durch Faktor 2 bis 9

Quelle: Jacques Arsac, Computerdenkspiele selbst programmiert,Problem 3

Gerd Bohlender Effizienz

Zyklische Ziffern - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n die Bedingung”Zyklische Ziffern“ erfullt

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Zyklische Ziffern - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n die Bedingung”Zyklische Ziffern“ erfullt

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Zyklische Ziffern - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n die Bedingung”Zyklische Ziffern“ erfullt

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Zyklische Ziffern - Erster Algorithmus

Teste alle Zahlen n = 1, 2, 3, ...

Beginne mit n = 1

Prufe, ob die Zahl n die Bedingung”Zyklische Ziffern“ erfullt

Ist dies der Fall, dann brich ab und gib das Ergebnis aus.Andernfalls erhohe n um 1 und prufe nochmal.

Gerd Bohlender Effizienz

Zyklische Ziffern - Erstes Java-Programm

public class ZykZiff1 {

public static void main (String [] args){int i=0;do i++;while (i*5 != i/10+50000); // bei 4 Ziffern abcdSystem.out.println("Zyklische Ziffern: " + i);

}

}

Gerd Bohlender Effizienz

Zyklische Ziffern - Probleme mit diesem Programm

Unbekannt, ob 4 Stellen abcd notig sind oder mehr oderweniger

Ggf. mussen alle Stellenzahlen durchprobiert werden

Reicht der Zahlbereich von int (9 Stellen) aus?

Reicht long (19 Stellen)?

Rechenzeit???

Gerd Bohlender Effizienz

Zyklische Ziffern - Probleme mit diesem Programm

Unbekannt, ob 4 Stellen abcd notig sind oder mehr oderweniger

Ggf. mussen alle Stellenzahlen durchprobiert werden

Reicht der Zahlbereich von int (9 Stellen) aus?

Reicht long (19 Stellen)?

Rechenzeit???

Gerd Bohlender Effizienz

Zyklische Ziffern - Probleme mit diesem Programm

Unbekannt, ob 4 Stellen abcd notig sind oder mehr oderweniger

Ggf. mussen alle Stellenzahlen durchprobiert werden

Reicht der Zahlbereich von int (9 Stellen) aus?

Reicht long (19 Stellen)?

Rechenzeit???

Gerd Bohlender Effizienz

Zyklische Ziffern - Probleme mit diesem Programm

Unbekannt, ob 4 Stellen abcd notig sind oder mehr oderweniger

Ggf. mussen alle Stellenzahlen durchprobiert werden

Reicht der Zahlbereich von int (9 Stellen) aus?

Reicht long (19 Stellen)?

Rechenzeit???

Gerd Bohlender Effizienz

Zyklische Ziffern - Probleme mit diesem Programm

Unbekannt, ob 4 Stellen abcd notig sind oder mehr oderweniger

Ggf. mussen alle Stellenzahlen durchprobiert werden

Reicht der Zahlbereich von int (9 Stellen) aus?

Reicht long (19 Stellen)?

Rechenzeit???

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Mathematische Idee

Fuhre Ziffernvergleich bei 5 ∗ abcd5 = 5abcd durch,beginnend bei der niederwertigsten Ziffer.

5 ∗ abcd5 = 5abcd fuhrt wegen 5 ∗ 5 = 25 zu d = 5

Es entsteht ein Ubertrag von 2, der im nachsten Schritt zuberucksichtigen ist

5 ∗ abc55 = 5abc5 fuhrt wegen 5 ∗ 5 + 2 = 27 zu c = 7

Es entsteht ein Ubertrag von 2

5 ∗ ab755 = 5ab75 fuhrt wegen 5 ∗ 7 + 2 = 37 zu b = 7

Es entsteht ein Ubertrag von 3

usw. (egal wie viele Stellen abcd vorliegen)

Der Algorithmus ist zu Ende, wenn

die berechnete Ziffer = 5 ist, undder Ubertrag = 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Zweiter Algorithmus

Verallgemeinerung: ersetze 5 durch beliebigen Faktor 2 bis 9

Starte mit Ziffer = Faktor und Ubertrag = 0

Berechne das 2-stellige Produkt = Ziffer * Faktor + Ubertrag

Zerlege Produkt in die niederwertige Zifferund den hoherwertigen Ubertrag

Wiederhole solange

die berechnete Ziffer nicht 5 ist, oderder Ubertrag nicht 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Zweiter Algorithmus

Verallgemeinerung: ersetze 5 durch beliebigen Faktor 2 bis 9

Starte mit Ziffer = Faktor und Ubertrag = 0

Berechne das 2-stellige Produkt = Ziffer * Faktor + Ubertrag

Zerlege Produkt in die niederwertige Zifferund den hoherwertigen Ubertrag

Wiederhole solange

die berechnete Ziffer nicht 5 ist, oderder Ubertrag nicht 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Zweiter Algorithmus

Verallgemeinerung: ersetze 5 durch beliebigen Faktor 2 bis 9

Starte mit Ziffer = Faktor und Ubertrag = 0

Berechne das 2-stellige Produkt = Ziffer * Faktor + Ubertrag

Zerlege Produkt in die niederwertige Zifferund den hoherwertigen Ubertrag

Wiederhole solange

die berechnete Ziffer nicht 5 ist, oderder Ubertrag nicht 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Zweiter Algorithmus

Verallgemeinerung: ersetze 5 durch beliebigen Faktor 2 bis 9

Starte mit Ziffer = Faktor und Ubertrag = 0

Berechne das 2-stellige Produkt = Ziffer * Faktor + Ubertrag

Zerlege Produkt in die niederwertige Zifferund den hoherwertigen Ubertrag

Wiederhole solange

die berechnete Ziffer nicht 5 ist, oderder Ubertrag nicht 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Zweiter Algorithmus

Verallgemeinerung: ersetze 5 durch beliebigen Faktor 2 bis 9

Starte mit Ziffer = Faktor und Ubertrag = 0

Berechne das 2-stellige Produkt = Ziffer * Faktor + Ubertrag

Zerlege Produkt in die niederwertige Zifferund den hoherwertigen Ubertrag

Wiederhole solange

die berechnete Ziffer nicht 5 ist, oderder Ubertrag nicht 0 ist

Gerd Bohlender Effizienz

Zyklische Ziffern - Zweites Programm

import java.util.*;

public class Zykziff5 {

public static void main (String [] args) {

Locale.setDefault (Locale.US);

Scanner sc = new Scanner (System.in);

int Faktor, Ziffer, Uebertrag=0, Produkt, Stellen=0;

System.out.print ("Mit welchem Faktor soll multipliziert werden ? ");

Faktor = sc.nextInt (); // Faktor einlesen

Ziffer = Faktor; // niederwertigste Ziffer = Faktor

System.out.println("Das Ergebnis lautet (rueckwaerts gelesen !):");

do

{

System.out.print (Ziffer); // aktuelle Ziffer ausdrucken

Stellen ++; // Stellenzahl bei jeder Ausgabe erhoehen

Produkt = Ziffer * Faktor + Uebertrag; // neues Produkt, zweistellig

Ziffer = Produkt % 10; // neue Ziffer = niederste Stelle des Produkts

Uebertrag = Produkt / 10; // neuer Uebertrag = hoechste Stelle des Produkts

} // wiederholen, wenn eine der beiden ...

while (Ziffer != Faktor || Uebertrag != 0); // ... Abbruch-Bedingungen verletzt ist

System.out.println ();

System.out.println ("Es hat " + Stellen + " Stellen");

}

}

Gerd Bohlender Effizienz

Zyklische Ziffern - Ergebnisse

c:\b\java>java Zykziff5Mit welchem Faktor soll multipliziert werden ? 5Das Ergebnis lautet (rueckwaerts gelesen !):557783964376381959798442216035623618040201Es hat 42 Stellen

Gerd Bohlender Effizienz

Zyklische Ziffern - Ergebnisse

Mit welchem Faktor soll multipliziert werden ? 2

248637498751362501

Es hat 18 Stellen

Mit welchem Faktor soll multipliziert werden ? 3

3973142715569860268572844301

Es hat 28 Stellen

Mit welchem Faktor soll multipliziert werden ? 4

465201

Es hat 6 Stellen

Mit welchem Faktor soll multipliziert werden ? 6

6697760446811726754748050389833022395531882732452519496101

Es hat 58 Stellen

Mit welchem Faktor soll multipliziert werden ? 7

7975048813263572944101

Es hat 22 Stellen

Mit welchem Faktor soll multipliziert werden ? 8

8487228562101

Es hat 13 Stellen

Mit welchem Faktor soll multipliziert werden ? 9

91742202834944046788980825779716505595321101

Es hat 44 Stellen

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des zweiten Algorithmus

42 Schleifendurchlaufe

etwa 10 Operationen pro Schleife

theoretisch etwa 10−7 Sekunden auf einem handelsublichenPC

mit Java-Overhead (Interpretation, Startup)deutlich unter 1 Sekunde

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des zweiten Algorithmus

42 Schleifendurchlaufe

etwa 10 Operationen pro Schleife

theoretisch etwa 10−7 Sekunden auf einem handelsublichenPC

mit Java-Overhead (Interpretation, Startup)deutlich unter 1 Sekunde

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des zweiten Algorithmus

42 Schleifendurchlaufe

etwa 10 Operationen pro Schleife

theoretisch etwa 10−7 Sekunden auf einem handelsublichenPC

mit Java-Overhead (Interpretation, Startup)deutlich unter 1 Sekunde

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des zweiten Algorithmus

42 Schleifendurchlaufe

etwa 10 Operationen pro Schleife

theoretisch etwa 10−7 Sekunden auf einem handelsublichenPC

mit Java-Overhead (Interpretation, Startup)deutlich unter 1 Sekunde

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des ersten Algorithmus

Er benotigt 1042 Schleifendurchlaufe= etwa 1043 Operationen

Schnellster Rechner zzt. (2007, Quelle: www.top500.org):knapp 1015 Flops

Dieser braucht etwa 1028 Sekunden zur Losung

1028 Sekunden = etwa 1020 Jahre(1 Jahr = 365 ∗ 86400 Sekunden = etwa 3 ∗ 107 Sekunden)

... aber das Universum existiert erstetwa 1010 Jahre seit dem Urknall!

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des ersten Algorithmus

Er benotigt 1042 Schleifendurchlaufe= etwa 1043 Operationen

Schnellster Rechner zzt. (2007, Quelle: www.top500.org):knapp 1015 Flops

Dieser braucht etwa 1028 Sekunden zur Losung

1028 Sekunden = etwa 1020 Jahre(1 Jahr = 365 ∗ 86400 Sekunden = etwa 3 ∗ 107 Sekunden)

... aber das Universum existiert erstetwa 1010 Jahre seit dem Urknall!

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des ersten Algorithmus

Er benotigt 1042 Schleifendurchlaufe= etwa 1043 Operationen

Schnellster Rechner zzt. (2007, Quelle: www.top500.org):knapp 1015 Flops

Dieser braucht etwa 1028 Sekunden zur Losung

1028 Sekunden = etwa 1020 Jahre(1 Jahr = 365 ∗ 86400 Sekunden = etwa 3 ∗ 107 Sekunden)

... aber das Universum existiert erstetwa 1010 Jahre seit dem Urknall!

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des ersten Algorithmus

Er benotigt 1042 Schleifendurchlaufe= etwa 1043 Operationen

Schnellster Rechner zzt. (2007, Quelle: www.top500.org):knapp 1015 Flops

Dieser braucht etwa 1028 Sekunden zur Losung

1028 Sekunden = etwa 1020 Jahre(1 Jahr = 365 ∗ 86400 Sekunden = etwa 3 ∗ 107 Sekunden)

... aber das Universum existiert erstetwa 1010 Jahre seit dem Urknall!

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeit des ersten Algorithmus

Er benotigt 1042 Schleifendurchlaufe= etwa 1043 Operationen

Schnellster Rechner zzt. (2007, Quelle: www.top500.org):knapp 1015 Flops

Dieser braucht etwa 1028 Sekunden zur Losung

1028 Sekunden = etwa 1020 Jahre(1 Jahr = 365 ∗ 86400 Sekunden = etwa 3 ∗ 107 Sekunden)

... aber das Universum existiert erstetwa 1010 Jahre seit dem Urknall!

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeitvergleich der beiden Algorithmen

Der erste Algorithmus braucht 1020 Jahre auf dem schnellstenRechner der Erde

Der zweite Algorithmus braucht einen Bruchteil einer Sekundeauf einem handelsublichen PC

Fazit: Nachdenken uber mathematische Hintergrunde hat sichgelohnt

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeitvergleich der beiden Algorithmen

Der erste Algorithmus braucht 1020 Jahre auf dem schnellstenRechner der Erde

Der zweite Algorithmus braucht einen Bruchteil einer Sekundeauf einem handelsublichen PC

Fazit: Nachdenken uber mathematische Hintergrunde hat sichgelohnt

Gerd Bohlender Effizienz

Zyklische Ziffern - Laufzeitvergleich der beiden Algorithmen

Der erste Algorithmus braucht 1020 Jahre auf dem schnellstenRechner der Erde

Der zweite Algorithmus braucht einen Bruchteil einer Sekundeauf einem handelsublichen PC

Fazit: Nachdenken uber mathematische Hintergrunde hat sichgelohnt

Gerd Bohlender Effizienz

Zyklische Ziffern - Wann sind Computer schnell genug furden ersten Algorithmus?

Der erste Algorithmus braucht 1020 Jahre auf dem heuteschnellsten Rechner der Erde

Supercomputer wurden im letzten Jahrzehnt fast um denFaktor 1000 schneller (Quelle: www.top500.org)

In 70 Jahren ware das (theoretisch!!!) ein Faktor 1021

Im Jahre 2080 brauchte der schnellste Computer der Erdenoch 1 Monat(sehr theoretisch!!!)

Gerd Bohlender Effizienz

Zyklische Ziffern - Wann sind Computer schnell genug furden ersten Algorithmus?

Der erste Algorithmus braucht 1020 Jahre auf dem heuteschnellsten Rechner der Erde

Supercomputer wurden im letzten Jahrzehnt fast um denFaktor 1000 schneller (Quelle: www.top500.org)

In 70 Jahren ware das (theoretisch!!!) ein Faktor 1021

Im Jahre 2080 brauchte der schnellste Computer der Erdenoch 1 Monat(sehr theoretisch!!!)

Gerd Bohlender Effizienz

Zyklische Ziffern - Wann sind Computer schnell genug furden ersten Algorithmus?

Der erste Algorithmus braucht 1020 Jahre auf dem heuteschnellsten Rechner der Erde

Supercomputer wurden im letzten Jahrzehnt fast um denFaktor 1000 schneller (Quelle: www.top500.org)

In 70 Jahren ware das (theoretisch!!!) ein Faktor 1021

Im Jahre 2080 brauchte der schnellste Computer der Erdenoch 1 Monat(sehr theoretisch!!!)

Gerd Bohlender Effizienz

Zyklische Ziffern - Wann sind Computer schnell genug furden ersten Algorithmus?

Der erste Algorithmus braucht 1020 Jahre auf dem heuteschnellsten Rechner der Erde

Supercomputer wurden im letzten Jahrzehnt fast um denFaktor 1000 schneller (Quelle: www.top500.org)

In 70 Jahren ware das (theoretisch!!!) ein Faktor 1021

Im Jahre 2080 brauchte der schnellste Computer der Erdenoch 1 Monat(sehr theoretisch!!!)

Gerd Bohlender Effizienz