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