Durch eine kleine C Funktion, welche manuell die Summe berechnet, ergibt sich ein lineares Verhalten für den Algorithmus, was für ein so häufiges Problem nicht akzeptabel ist.
Um die Summe der Zahlen von 1 bis N zu berechnen, muss die obige Funktion N Durchläufe in ihrer Schleife durchführen. Somit würde diese Funktion in einem komplexerem Algorithmus einen Faktor N beitragen, was sehr schlechte Auswirkungen auf den Algorithmus haben kann.
Eine wesentlich ellegantere und effizientere Methode zur Berechnung der gewünschten Summe wurde schon 1786 von Karl Friedrich
Gauß im Alter von 9 Jahren entdeckt und besitzt eine Komplexität von , sprich eine konstante Zeit. Dies wird durch
eine Berechnung (Formel) erreicht, die moderne Maschinen in nur wenigen Taktzyklen erledigen können. Die hier vorgestellte
Formel wird oft zur Analyse von Algorithmen benötigt, wie später ersichtlich wird, da sich häufig in Programmen
die Situation ergibt, in der eine oder mehrere Operationen N mal durchgeführt werden müssen, die wiederum abhängig von N x mal wiederholt werden.
Dank der Formel, können solche Problemstellen bei Algorithmen ersichtiglich gemacht und erkannt werden.
Die Idee sei hier erstmal an einem Beispiel, natürliche Zahlen bis zu 10 aufzuaddieren, vorgestellt.
Der Clue liegt in der Vorgehensweise in der die Zahlen zusammen addiert werden. Diese beruht auf dem Kommutativgesetzt der Addition,
da für die Addition gilt: Ebenso gilt für die Addition:
. Somit kann eine Reihe von Zahlen, die aufaddiert
werden sollen, so umgeordnet werden, dass sich eine Regelmäßigkeit darin wiederspiegelt. Die folgende Abbildung soll dies verdeutlichen.
Somit kann man die Reihe wie folgt berechnen:
Angewandt auf ein Problem der Größe N lässt sich
folgende Formel aufzeigen. Der einfachheitshalber soll zuerst
die zweifache Summe errechnet werden, sprich die Problemgröße ist .
Da die Summe der natürlichen Zahlen zwischen 1 und N hier doppelt vorliegt,
ist lediglich eine Division durch zwei durchzuführen .
Nächste Seite: Algorithmen
Aufwärts: Aus der Mathematik
Vorherige Seite: Aus der Mathematik
Inhalt