next up previous contents
Next: Programmierung des Algorithmus Up: Einordnung Previous: Kosten im schlimmsten Fall

Durchschnittliche Kosten (average cost)

Folgendes Diagramm wurde aus Daten erstellt, die mit dem unten angegebenen Algorithmus, der Teil der Klasse timetest2 ist, gewonnen wurden. Dieser bildet den größten gemeinsamen Teiler aller Zahl zwischen anzugebenden tex2html_wrap448 und tex2html_wrap449 miteinander. Dadurch wird eine statistische Gleichverteilung von besonders guten Fällen (z.B. gleiche Zahlen) und schlechten Fällen (z.B. zwei Primzahlen) angestrebt und offensichtlich auch erreicht.

figure174

Das Diagramm zeigt drei Meßreihen, hervorgehoben durch die unterschiedliche Linien und Punktart. Auf der mit 'num' beschrifteten x-Achse sind die im Algorithmus durch die äussere Schleife durchgeführten Wiederholungen zwischen 1 und 10 abgetragen. Die mit 'time' bezeichnete y-Achse zeigt die für den kompletten Vorgang auf dem Beispielsystem jeweils nötige Zeit in Millisekunden. Die untere Datenreihe (durchgezogene Linie) zeigt einen Durchlauf üeber die Zahlen 1 bis 100, die zweite die Zahlen 10001 bis 10100 und die dritte 100000001 bis 100000100.

Es zeigt sich, daß alle drei Datenreihen wie zu erwarten ein lineares Verhalten zeigen, da schlicht tex2html_wrap328 mal dieselben Zahlenpaare berechnet werden. Der Offset der Datenreihen spricht zwar zuerst dagegen, daß der Algorithmus von der Größe der Zahlen unabhängig sein soll. Doch scheint es mir logisch, daß auch dieser wieder aus der erhöhten Größe der Zahlen und damit schlechteren Performance der Methoden der Klasse BigInteger resultiert. Diese Ausnahme von der Regel bestätigt also meiner Meinung nach nur die Aussage, daß der Algorithmus von der Größe der Zahlen vergleichsweise unabhängig ist.

Algorithmus:
verbatimtab187


next up previous contents
Next: Programmierung des Algorithmus Up: Einordnung Previous: Kosten im schlimmsten Fall

Michael Weiser
Fre Jan 7 00:42:53 CET 2000