Theorietestat #2a: CountOddElements (5.2)
Verfasst: 25. Mai 2017 19:28
Hallo,
bei dem Abschnitt zu CountOddElements (5.2) kommen meiner Meinung nach die Indizes etwas durcheinander. In der Invariante steht, dass in der h-ten Iteration i=x+h-1 ist. Diese Definition sollte man auch beibehalten. Wenn also h bezogen auf den aktuellen Iterationsschritt ist, sollte sich x auch auf den aktuellen Iterationsschritt beziehen.
Jetzt kommt das Problematische:
In der Induktionsvoraussetzung, in der man den Iterationsschritt h-1 betrachtet, steht dann mit i=x+h -2. Hier wird also das i aus dem vorherigen Iterationsschritt zugrunde gelegt. Hier sollte aber zu einem besseren Verständnis eigentlich mit i=x+h-1 stehen. Im h'=h-1-ten Iterationsschritt ist nämlich auch eigentlich i'=i-1.
Ähnlich steht dann im Induktionsschritt am Ende mit i=x+h-2, was der Invariante entspräche. Das ist aber nicht der Fall, denn in der Invariante steht mit i = x+h-1. Wir sind im Induktionsschritt in der h-ten Iteration. Der aktuelle Index i=x+h-1 und eben nicht i=x+h-2. Was i ist, ist durch den Quellcode definiert. Setzt man es dann ein, kommt der richtige Index heraus, aber die Definition von i ist eben nicht einheitlich, was sie aber sein sollte.
Übernimmt man aber die Definition aus der Invariante von i mit i=x+h-1 und schreibt im Induktionsschritt, stimmt es wieder und es ist einheitlich. Der Wechsel von der Definition zwischendrin macht es sehr verwirrend.
Ich hoffe, man versteht mein Problem.
bei dem Abschnitt zu CountOddElements (5.2) kommen meiner Meinung nach die Indizes etwas durcheinander. In der Invariante steht, dass in der h-ten Iteration i=x+h-1 ist. Diese Definition sollte man auch beibehalten. Wenn also h bezogen auf den aktuellen Iterationsschritt ist, sollte sich x auch auf den aktuellen Iterationsschritt beziehen.
Jetzt kommt das Problematische:
In der Induktionsvoraussetzung, in der man den Iterationsschritt h-1 betrachtet, steht dann
Code: Alles auswählen
A[x]..A[i]
Code: Alles auswählen
A[x]...A[i-1]
Ähnlich steht dann im Induktionsschritt am Ende
Code: Alles auswählen
A[x]..A[i+1]
Code: Alles auswählen
A[x]...A[i]
Übernimmt man aber die Definition aus der Invariante von i mit i=x+h-1 und schreibt
Code: Alles auswählen
A[x]..A[i]
Ich hoffe, man versteht mein Problem.