Dowodzenie własności stopu -...

22
Dowodzenie własności stopu Kryterium liczników iteracji Kryterium malejących wielkości

Transcript of Dowodzenie własności stopu -...

Page 1: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Dowodzenie własności stopu

Kryterium liczników iteracji Kryterium malejących wielkości

Page 2: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Załóżmy, że dany jest algorytm:

M:{

l=c;

while(p)do

{

K;

l=l+1;

}

}

Dobieramy teraz dwie wielkości: takie, że l<= oraz takie, które wyjaśnia zależność między wartościami zmiennych w chwili sprawdzania warunku (niezmiennika) p.

Kryterium liczników iteracji

Jeżeli:1) i >=l jest w algorytmie M niezmiennikiem instrukcji

iteracyjnej „while” przy warunku początkowym ,2)K ma własność stopu względem i p,to M oraz „while(p)do K” mają własność stopu względem .

zmienna l jest licznikiem iteracji, służy do obliczania liczby wykonań instrukcji iterowanej K

Page 3: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Przykład 3.

void dzielenie1 (int x,y)

{ //1: 0<=x i 0<y

int q,r;

q=0;

r=x;

while(y<=r) //p: x=q*y+r i 0<=r i 0<y

{

q=q+1;

r=r-y;

};

} //: x=q*y+r i 0<=r<y.

!!

M:{

l=c;

while(p)do

{

K;

l=l+1;

}

}

Zmienna q pełni rolę licznika iteracji.

Page 4: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

void dzielenie1 (int x,y)

{ //1: 0<=x i 0<y

int q,r;

q=0;

r=x;

while(y<=r) //p: x=q*y+r i 0<=r i 0<y

{

q=q+1;

r=r-y;

};

} //: x=q*y+r i 0<=r<y.

M:{

l=c;

while(p)do

{

K;

l=l+1;

}

}

Określmy : x/y oraz : x=q*y+r i r>=0 i 0<y.

Pokażemy, że i q<=x/y jest niezmiennikiem instrukcji iteracyjnej.

Przy wejściu do instrukcji mamy: q=0, r=x, x>=0, y>0, czyli zachodzi i q<=x/y oraz r>=y.

Wtedy dostajemy nowe wartości: q’=q+1 i r’=r-y.

Page 5: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

void dzielenie1 (int x,y)

{ //1: 0<=x i 0<y

int q,r;

q=0;

r=x;

while(y<=r) //p: x=q*y+r i 0<=r i 0<y

{

q=q+1;

r=r-y;

};

} //: x=q*y+r i 0<=r<y.

M:{

l=c;

while(p)do

{

K;

l=l+1;

}

}

: x/y oraz : x=q*y+r i r>=0 i 0<y.

Łatwo pokazać, że te nowe zmienne spełniają warunek , a nierówność q<=x/y wynika z , bo:

Ćwiczenie!

x=q*y+r, y>0 q=x/y-r/y, y>0(r>=0,y>0)

q<=x/y

Stosując teraz kryterium liczników iteracji wnioskujemy, że algorytm ma własność stopu względem 1. Ponadto nierówność q<=x/y podaje ograniczenie na liczbę wykonywanych iteracji.

Page 6: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Załóżmy, że dany jest algorytm:

M:{

i=w+1;

while(p)do

{

i=w;

K;

}

}

Dobieramy teraz trzy wielkości: i oraz w będące liczbami całkowitymi i takie, które wyjaśnia zależność między wartościami zmiennych w chwili sprawdzania warunku (niezmiennika) p.

Kryterium malejących wielkościJeżeli:1) i i>w, i w>=0 jest w algorytmie M niezmiennikiem

instrukcji iteracyjnej „while” przy warunku początkowym ,2)K ma własność stopu względem i p,to M oraz „while(p)do K” mają własność stopu względem .

Page 7: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Metodę malejących wielkości stosuje się, gdy w algorytmie zwiększanie

wartości następuje w sposób nieregularny, czyli niekoniecznie o 1.

Zamiast szacować wzrost rozpatruje się jednak te wielkości, które

zmniejszają swoje wartości w trakcie wykonywania algorytmu i dla których

istnieją wartości ograniczające je z dołu.

Page 8: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Przykład 4.void dzielenie2 (int x,y)

{ //2: 0<=x i 0<y

int q,r; int i;

q=0;

r=x; i=r+1;

while(y<=r) //p: x=q*y+r i 0<=r i 0<y

{

q=q+1; i=r;

r=r-y;

};

} //: x=q*y+r i 0<=r<y.

M:{

i=w+1;

while(p)do

{

i=w;

K;

}

}

Zmienna r pełni rolę w. Wprowadzamy też pomocniczą zmienną i.

Page 9: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

void dzielenie2 (int x,y)

{ //2: 0<=x i 0<y

int q,r; int i;

q=0;

r=x; i=r+1;

while(y<=r) //p: x=q*y+r i 0<=r i 0<y

{

q=q+1; i=r;

r=r-y;

};

} //: x=q*y+r i 0<=r<y.

M:{

i=w+1;

while(p)do

{

i=w;

K;

}

}

Ustalamy : y>0 i (i=r+1 ∨ i=r+y).

Przy wejściu do instrukcji „while” warunek jest spełniony, bo i=r+1.

Page 10: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

void dzielenie2 (int x,y)

{ //2: 0<=x i 0<y

int q,r; int i;

q=0;

r=x; i=r+1;

while(y<=r) //p: x=q*y+r i 0<=r i 0<y

{

q=q+1; i=r;

r=r-y;

};

} //: x=q*y+r i 0<=r<y.

M:{

i=w+1;

while(p)do

{

i=w;

K;

}

}

: y>0 i (i=r+1 ∨ i=r+y).

Warunek zachowuje się przy każdym wykonaniu instrukcji

iterowanej, bo jeśli i’ i r’ są nowymi wartościami, to i’=r oraz

r’=r-y, czyli i’=r’+y.

Zatem jest niezmiennikiem iteracji.

Ponieważ r>=0, to cały warunek i r<i , i r>=0 jest niezmiennikiem iteracji.Na podstawie kryterium malejących wielkości mamy własność stopu względem 2.

Page 11: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Klasyfikować równania rekurencyjne możemy ze względu na:

Sposób, w jaki połączone są wyrazy,

Rodzaj współczynników,

Ilość użytych wyrazów poprzednich.

Typ rekurencji Przykład

I rzędu liniowe

nieliniowe

II rzędu liniowenielinioweo zmiennych współczynnikach

p-tego rzędu

pełnego rzędu

połówkowe

111

1 1

nan

nn

a

naa

1)1(

2

21

221

21

nnn

nnnn

nnn

annaa

aaaa

aaa

naa

aaaana

aaafa

nn

nnn

pnnnn

2

1221

21 ),,,(

Page 12: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

rozwiązania

dokładne

pierwszego

rzędu

liniowe

wyższych

rzędów

jednorodne

niejednorodne

oszacowania

asymptotyczne

podstawianie

iteracje

rekurencja

uniwersalne

Page 13: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 14: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 15: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 16: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 17: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 18: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 19: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Przykład.

Schemat postępowania

(a)

Page 20: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 21: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium
Page 22: Dowodzenie własności stopu - math.uni.lodz.plmath.uni.lodz.pl/~karpinw/zadania/Aalgorytmow/Wyklad5_student.pdf · Dowodzenie własności stopu Kryterium liczników iteracji Kryterium

Komentarz:

Rozwiązanie jawne rekurencji (7) jest zdeterminowane przez warunki początkowe, z których wyznaczamy współczynniki kombinacji liniowej opisującej ogół rozwiązań.

Mając tę samą zależność rekurencyjną i zmieniając tylko warunki początkowe, możemy zmienić charakter rozwiązania, uzyskując ciąg stały, wykładniczy lub naprzemienny.