Zadanie 1 a) Przeanalizuj algorytm programu, który dla podanych liczb

Transkrypt

Zadanie 1 a) Przeanalizuj algorytm programu, który dla podanych liczb
Zadanie 1
a) Przeanalizuj algorytm programu, który dla podanych liczb – całkowitej
nieujemnej n ∈ N0 oraz rzeczywistej x ∈ R będzie obliczał ich iloczyn
n · x.
Schemat blokowy tego algorytmu:
Start
n ∈ N0 , x ∈ R
y ←0
m ←n
m 6= 0
tak
y ← y+x
m ← m−1
nie
y =n·x
Stop
b) Podaj kolejne kroki wykonane przez algorytm dla danych wejściowych:
n = 5, x ∈ R.
c) Znajdź niezmiennik γ tego algorytmu i udowodnij, że jest to niezmiennik.
Wykaż, że spełniony jest warunek stopu.
1
Zadanie 2
a) Przeanalizuj algorytm programu, który dla podanej liczby naturalnej n ∈ N
będzie obliczał funkcję podłoga z pierwiastka kwadratowego tej liczby.
Schemat blokowy tego algorytmu:
Start
N0 3 n ­ 0
a ← 0
(a + 1) ·
(a + 1) ¬ n
tak
a ← a+1
nie
√
a = b nc
Stop
b) Podaj kolejne kroki wykonane przez algorytm dla danych wejściowych:
n = 17.
c) Znajdź niezmiennik γ tego algorytmu i udowodnij, że jest to niezmiennik.
Wykaż, że spełniony jest warunek stopu.
Dowód.
Niezmiennik pętli: γ : a · a ¬ n.
Należy to pokazać dla n > 0, gdyż tylko wtedy wejdziemy do pętli.
Przy pierwszym wejściu do pętli mamy a = 0, czyli a · a = 0 ¬ n.
Przy kolejnym wejściu do pętli mamy a · a ¬ n. Po wykonaniu pętli mamy
a0 = a + 1, czyli a0 · a0 = (a + 1) · (a + 1) ¬ n, ponieważ był to warunek
wejścia do pętli.
Przy wyjściu z pętli mamy (a + 1) · (a + 1) > n, a z warunku γ wynika
a · a ¬ n, czyli rzeczywiście a jest ”podłogą” z pierwiastka z n.
2
Zadanie 3
a) Przeanalizuj algorytm programu, który dla podanej liczby naturalnej n ∈ N
będzie obliczał funkcję podłoga z pierwiastka kwadratowego tej liczby.
Schemat blokowy tego algorytmu:
Start
N0 3 n ­ 0
a← 0
r ← 1
p← 1
tak
p ¬ n
a ← a+1
r ← r+2
p ← p+r
nie
√
a = b nc
Stop
b) Podaj kolejne kroki wykonane przez algorytm dla danych wejściowych:
n = 17.
c) Znajdź niezmiennik γ tego algorytmu i udowodnij, że jest to niezmiennik.
Wykaż, że spełniony jest warunek stopu.
Dowód.
Niezmiennik pętli: γ : r = 2a + 1, p = (a + 1)2 i a2 ¬ n.
Należy to pokazać dla n > 0, gdyż tylko wtedy wejdziemy do pętli.
Przy pierwszym wejściu do pętli mamy a = 0, r = 1 = 2a + 1, p = 1 =
(a + 1)2 i a2 ¬ n.
Przy kolejnym wejściu do pętli mamy p ¬ n. Po wykonaniu pętli mamy
a0 = a+1, r0 = r+2 = 2a+1+2 = 2a0 +1, p0 = p+r0 = (a+1)2 +2a0 +1 =
(a0 )2 + 2a0 + 1 = (a0 + 1)2 , czyli (a0 )2 = (a + 1)2 = p ¬ n, ponieważ był to
warunek wejścia do pętli.
Przy wyjściu z pętli mamy (a+1)2 = p > n, a z warunku γ wynika a2 ¬ n,
czyli rzeczywiście a jest ”podłogą” z pierwiastka z n.
3

Podobne dokumenty