Zitat von
Olli:
...(unter der Annahme alle Anweisungen kosten gleichviel Zeit).
Was ja an sich schon eine viel zu allgemeine Annahme ist. Einfaches Beispiel das mir einfallen würde wäre die Multiplikation von Matrizen. Hat man mehrere Matrizen, die miteinander multipliziert werden, so würde man naiv einfach die in der Reihenfolge Multiplizieren, in der sie übergeben werden. Jetzt ist die Multiplikation aber Assoziativ, man kann also hier (bei geeigneten Matrizen) die Reihenfolge der Multiplikation verändern, also einfach einzelne Produkte vor anderen bilden. Das möchte ich jetzt gar nicht weiter ausführen, denke alzaimar und Olli kennen die unterschiedliche Laufzeit (andere natürlich auch!, die die sie nicht kennen finden sicher schnell was in der Theoretischen Informatik dazu). Jedenfalls wird hier vor sortiert, indem die Dimensionen der Matrizen verglichen wird (mehr Anweisungen als die naive Multiplikation), da sich aber die Anzahl von Multiplikationen und Additionen verändert, kann somit eine Optimierung vom Programmierer erreicht werden.
Wichtig ist es natürlich zu beachten, dass eben nicht jeder Befehl gleich lange dauert (@Olli ich denke das ist Dir schon klar!). Nur kostet jede Division doch immer noch >> mehr als eine einfache Addition.
Aber klar, unter der Einfachen Annahme, dass man eine unterschiedliche Anzahl von gleich teuren Befehlen hat, werden natürlich die geringeren Kosten günstiger sein