Motivation SS12
Motivation
Multiplikation großer Zahlen
Es gibt eine bessere Methode zur Multiplikation zweier natürlicher Zahlen als die, die in der Schule gelehrt wird.
Was bedeutet "besser"?
Primitive Basisoperationen
Wir gehen davon aus, dass die folgenden beiden Basisoperationen vorhanden sind und jeweils einen konstanten Zeitaufwand zur Ausführung erfordern.
- Addition dreier Ziffern (sog. Volladdierer)
Eingaben: x und y sowie der Übertrag c
Resultat: zwei Ziffern, nämlich die Ergebnisziffer und der neue Übertrag - Multiplikation zweier Ziffern
Eingaben: x und y
Resultat: zwei Ziffern, nämlich die Ergebisziffer und der Übertrag
Für die beiden Operationen wird im Folg. je eine Scheme-Prozedur prim-add und prim-mult definiert. In diesen Definition wird die Basis B der Zahlendarstellung durch den Wert der Variablen basis festgelegt. Für den Fall, dass ein anderes Stellenwertsystem verwendet werden soll, ist diese Angabe anzupassen.
Die primitive Addition zweier Ziffern und eines Übertrags liefert ein Paar, dessen erstes Element die Stelle und das zweite den neuen Übertrag darstellt. Beispielsweise soll für 7+8+0=15 das Paar (5 . 1) zurück gegeben werden.
Ein weiteres Aufrufbeispiel gilt der Multiplikation 9\cdot 8=72:
Da die beiden primitiven Operationen mit komplexeren Scheme-Sprachelementen definiert wurden, macht es keinen Sinn, zur Aufwandsanalyse darauf aufbauender Operationen eine Zeitmessung durchzuführen. Sinnvoll ist es, die Gesamtanzahl der Aufrufe primitiver Basisperationen zu ermitteln. Hierfür wird eine globale Variable anzahl-prim-op als Zähler bereitgestellt und mit 0 initialisiert.
Hinweis
Es ist zu beachten, dass diese Initialisierung bei jedem Prozeduraufruf erneut ausgeführt wird.