• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niezmienniki pętli

Object Storage Arubacloud
0 głosów
3,623 wizyt
pytanie zadane 30 stycznia 2017 w Algorytmy przez Typowy Janusz Dyskutant (8,150 p.)

Witam!

Znajdzie się ktoś kto jest w stanie mi wytłumaczyć jak działają niezmienniki pętli? W jaki sposób się je wyznacza i ewentualnie liczy?

Podam przykład:

Dane: liczba naturalna n.

Wynik: s=1+.....+n.

begin

s:=0; i:=0;

while (i<n) do

{

i:=i+1;

s:=s+1;

}

end

Proszę nie wklejajcie linków gdzieś z internetów gdzie jest sucho wyjaśnione co to jest niezmiennik pętli bo tego najzwyczajniej w świecie nie rozumiem. Prosiłbym, aby ktoś był w stanie to wytłumaczyć na powyższym przykładnie.

Pozdrawiam!

1 odpowiedź

+1 głos
odpowiedź 30 stycznia 2017 przez obl Maniak (51,280 p.)

Niezmiennik pętli - pojęcie używane w projektowaniu, analizie i dowodzeniu poprawności algorytmów. Mówimy, że zdanie P jest niezmiennikiem pętli, jeżeli po każdym jej przebiegu jest ono prawdziwe.

W twojej pętli warunek i<n nie spełnia powyższej definicji, ponieważ i się zwiększa a n jest liczbą naturalną więc w pewnym momencie twoja pętla się zakończy (warunek zwróci w pewnym momencie false). Gdyby warunek w pętli był np. taki: 0==0 to to byłby niezmiennik pętli bo warunek zawsze byłby spełniony i pętla by się wykonywała w nieskończoność.

komentarz 30 stycznia 2017 przez Typowy Janusz Dyskutant (8,150 p.)
A to nie chodzi o to żeby jakieś zdanie logiczne było zawsze prawdziwe przed obiegiem jak i zakończeniu pętli?

Bo skoro za pomocą tych niezmienników wyznacza się poprawność algorytmu to na podstawie twojej wypowiedzi wynika, że powyższy algorytm jest zły, a przecież daje poprawne wyniki.
komentarz 30 stycznia 2017 przez obl Maniak (51,280 p.)

Jeżeli pętla wykonuje się w nieskończoność bo warunek został źle ułożony to to świadczy o złym ułożeniu warunku. Innymi słowy jeżeli warunek i<n byłby po każdym przejściu pętli spełniony to to byłby niezmiennik pętli a to świadczyłoby o tym, że warunek jest źle skonstruowany. Nie otrzymałbyś żadnego wyniku skoro pętla by się wykonywała w nieskończoność (przynajmniej ja tak to rozumiem).

komentarz 30 stycznia 2017 przez Typowy Janusz Dyskutant (8,150 p.)
Ja to rozumiem tak że są 2 warunki:

1) n=>0 (zakładam, że 0 jest liczbą naturalną)

2)i<n

Dajmy, że n=5

Oba warunki przed obiegiem pętli są prawdziwe ale już po wykonaniu pętli warunek 1) jest tylko prawdziwy.

I tu w tym miejscu pojawia się pytanie czy można na te niezmienniki popatrzeć w taki sposób jak ja to rozumiem, czyli... Wszystkie założenia przed wykonaniem pętli muszą być prawdziwe ale już po wykonaniu musi być prawdziwe tylko jedno założenie.
komentarz 30 stycznia 2017 przez obl Maniak (51,280 p.)

W definicji, którą przytoczyłem z Wikipedii jest napisane:

Mówimy, że zdanie P jest niezmiennikiem pętli, jeżeli po każdym jej przebiegu jest ono prawdziwe.

że nie. Niezmiennik pętli oznacza taki warunek, który przed jak i po każdym wykonaniu pętli będzie spełniony. W przypadku, który wymieniłeś warunek 1 będzie niezmiennikiem bo zawsze będzie prawdziwy a warunek 2 już nie. Przynajmniej ja tak to widzę.

komentarz 30 stycznia 2017 przez Typowy Janusz Dyskutant (8,150 p.)
Ok, już mniej więcej wiem z czym się te niezmienniki "je". Resztę zweryfikuje profesor na egzaminie.

Dziękuje za zaangażowanie i pozdrawiam!

Podobne pytania

+3 głosów
1 odpowiedź 303 wizyt
0 głosów
1 odpowiedź 1,551 wizyt
pytanie zadane 14 listopada 2019 w C i C++ przez baromeister Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 169 wizyt

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...