2. Eldöntés

A feladatok két csoportba sorolhatók, az egyikben azt kell eldönteni, hogy egy sorozatban létezik-e adott tulajdonságú elem, a másikban pedig azt, hogy mindegyik elem rendelkezik-e ezzel a tulajdonsággal.

Eldöntés(N, X, S):
S:=hamis;
Ciklus I:=1-től N-ig
S:=S vagy T(X(I));
   S:=S vagy T(X(I));
Ciklus vége
Eljárás (program) vége.

Észrevehetünk egy fontos tulajdonságot. Ha a megoldásban az S változó értéke egyszer igazra változik, akkor a megoldás végéig biztosan az is marad. Tehát az ez utáni műveletek elvégzése teljesen felesleges. Ezt a tulajdonságot kihasználva készíthetjük el az igazi megoldást.

Ebben az esetben egy olyan ciklus a megoldás, amely akkor áll le, ha találunk egy, a keresett tulajdonsággal rendelkező elemet, vagy pedig akkor, ha ilyen elem a sorozatban már nem létezhet, azaz elfogytak a megvizsgálandó elemek.

Eldöntés(N, X, VAN):
I:=1;
Ciklus amíg I<=N és nem T(X(I))
   I:=I+1;
Ciklus vége
VAN:=(I<=N)
Eljárás (program) vége.

Fordítsuk most figyelmünket egy másik csoportra! Azt, hogy mindegyik elem rendelkezik egy adott tulajdonsággal, átfogalmazhatjuk arra, hogy nem létezik az adott tulajdonsággal nem rendelkező elem. Ezek alapján a fenti megoldásban 2 helyen tagadást alkalmazva megkapjuk ennek a csoportnak a megoldástípusát is.

Eldöntés(N, X, MIND):
I:=1;
Ciklus amíg I<=N és T(X(I))
   I:=I+1;
Ciklus vége
MIND:=(I>N)
Eljárás (program) vége.