Algorithmusbewertung eines sich ändernden Zyklus

Neue Frage »

Dasiggo Auf diesen Beitrag antworten »
Algorithmusbewertung eines sich ändernden Zyklus
Hallo,

ich hoffe ich bin hier irgendwie richtig mit meinem Thema.

Es geht um O Notationen. Ich habe gesehen, das hier zu diesem Thema auch Fragen gestellt werden, da wollte ich mich einreihen.

Ich bin mir nicht sicher, wie ich ein Programmstück bewerten soll, bei dem sich die Abbruchbedingung ständig ändert.

Konkreter geht es um eine quadratische Matrix(eigentlich ein Kandidat), die wird aber nicht komplett verarbeitet, sondern nur zum Teil bzw. werden einige Teilmatrizen bearbeitet.

Wie soll so ein Algorithmus bewertet werden? Soll man so tun als ob alle Elemente bearbeitet werden, also ?

Kann mir jemand folgen? verwirrt
Abakus Auf diesen Beitrag antworten »
RE: Algorithmusbewertung eines sich ändernden Zyklus
Hallo,

du sprichst von der Speicherplatzkomplexität?

Entweder guckt du exakt, wieviel gebraucht wird oder du schätzt es geeignet ab (worst-case usw.).

Abakus smile
Dasiggo Auf diesen Beitrag antworten »

Danke für die Antwort.

Unter Speicherplatzkomplexität kenne ich die O-Notation nicht, aber wahrscheinlich meinst du das gleiche wie ich.

Ich kenne es als Algorithmusbewertung, die aussagt wie komplex ein Algorithmus ist bzw. wie aufwendig er ist.

Ich will etwas ausführlicher werden um Missverständnisse auszuschließen:

So etwas wie eine Matrixbearbeitung kann ja so aussehen:

for(i=0;i<n;i++)
for(j=0;j<n;i++)
tue_was;

hier hat ja der Algorithmus die Komplexität T(n)=n^2

wenn jetzt aber n durch irgendwelche zwischen schritte verändert wird

n_änderung;
for(i=0;i<n;i++)
n_änderung;
for(j=0;j<n;i++)
tue_was;

Worst-case wäre hier ja n=n < also n ändert sich nicht T(n)=n^2
Umgekehrt sieht es für n=1 aus, da ist die Komplexität T(n)=1

Da ich unmöglich voraussehen kann wie n aussehen wird, nach dem Programmstart, bzw. nur mit sehr viel mühe, soll ich also lieber den obigen worst-case nehmen, also T(n)=n^2 ?
Abakus Auf diesen Beitrag antworten »

Zitat:
Original von Dasiggo
Ich kenne es als Algorithmusbewertung, die aussagt wie komplex ein Algorithmus ist bzw. wie aufwendig er ist.


Ja, wie misst du diese Komplexität denn? Das solltest du schon genauestens (!) wissen.

Möglich wäre zB auch Zeitkomplexität, was oft betrachtet wird.

Zitat:
So etwas wie eine Matrixbearbeitung kann ja so aussehen:

for(i=0;i<n;i++)
for(j=0;j<n;i++)
tue_was;

hier hat ja der Algorithmus die Komplexität T(n)=n^2


Also Zeitkomplexität? Du machst tue_was n^2 mal.

Zitat:
wenn jetzt aber n durch irgendwelche zwischen schritte verändert wird

n_änderung;
for(i=0;i<n;i++)
n_änderung;
for(j=0;j<n;i++)
tue_was;

Worst-case wäre hier ja n=n < also n ändert sich nicht T(n)=n^2
Umgekehrt sieht es für n=1 aus, da ist die Komplexität T(n)=1

Da ich unmöglich voraussehen kann wie n aussehen wird, nach dem Programmstart, bzw. nur mit sehr viel mühe, soll ich also lieber den obigen worst-case nehmen, also T(n)=n^2 ?


Nein, nützt ja nichts n zu nehmen, weil das i ja schlimmstenfalls so verändert werden könnte, dass du sogar eine Endlosschleife hast (mache i-- dort).

Du musst schon genauer schauen, was da mit dem Schleifenindex passiert.

Abakus smile
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »