Wst¦p do informatyki

Transkrypt

Wst¦p do informatyki
Kolokwium Nr 1.
Wst¦p do informatyki
18 listopada 2008
II UWr.
1. (1+1+2 pkt) (basic) Uzupeªnij formaln¡ specykacj¦ poni»szej funkcji:
factorize(n,ps){
pc=0;
for(i=2;i*i<=n;++i){
while(n%i==0){
n/=i;
ps[pc++]=i;
}
}
if(n>1){
ps[pc++]=n;
}
return pc;
}
• f actorize : . . . → . . .
• pre-factorize(n, ps) : ps.length ≥ log n ∧ . . .
Q
• post-factorize(n, ps, result) : n = 0≤i<result ps[i] ∧ (∀0≤a<b<result pc[a] ≤ pc[b]) ∧ . . .
2. (1+2 pkt) (pro) Dodatkowe punkty za powy»sze zadanie mo»na uzyska¢ rozwi¡zuj¡c poni»sze
kwestie.
• Podaj¡c typ funkcji zaproponuj jaki± formalny sposób wysªowienia faktu, »e ps jest tablic¡,
do której funkcji wolno wpisa¢ wynik.
• Postaraj si¦, aby post-condition dopuszczaª dokªadnie jeden mo»liwy wynik. Zaproponuj
jaki± formalny sposób wysªowienia faktu, »e pola tablicy o wysokich indeksach nie powinny
by¢ modykowane przez funkcj¦ - by¢ mo»e w tym celu trzeba b¦dzie zmieni¢ sygnatur¦
predykatu.
3. (1+1+1+1+2+1 pkt) (basic) Udowodnij poprawno±¢ funkcji factorize wzgl¦dem jej specykacji. W tym celu udowodnij, »e:
• zwraca liczb¦ naturaln¡
• ma wªasno±¢ stopu
• do tablicy ps wpisywane s¡ liczby naturalne, których iloczyn wynosi n
• pierwszych result elementów tablicy ps jest posortowanych niemalej¡co
• ka»da wpisana do tablicy ps liczba jest liczb¡ pierwsz¡
• pola tablicy ps o indeksach wi¦kszych lub równych result pozostaj¡ nietkni¦te
Wskazówka : by¢ mo»e na potrzeby dowodu wygodnie b¦dzie zdeniowa¢ sobie podprocedur¦,
lub w inny sposób opisa¢ warunek wst¦pny i ko«cowy dla ka»dego kroku p¦tli for.
4. (3+3+1 pkt) (pro) Niech f i g b¦d¡ funkcjami o znanych specykacjach, czyli f ma typ inf →
outf , warunek wst¦pny pre-f(x), oraz warunek ko«cowy post-f(x, result), oraz analogicznie dla
funkcji g .
• Podaj formaln¡ specykacj¦ poni»szej funkcji :
foo(x,y){
if(x>0){
return f(y);
}else{
return g(y);
}
}
• Podaj formaln¡ specykacj¦ poni»szej funkcji :
bar(x){
return f(g(x));
}
• Co kompilator mo»e automatycznie wywnioskowa¢ na temat typów funkcji f oraz g, widz¡c
jednocze±nie powy»sze denicje funkcji foo oraz bar w jednym programie?
Denicje potrzebne do poni»szych zada« :
f ∈ O(g) ⇐⇒ ∃c > 0∃n0 ∀n > n0
f (n) < cg(n)
f ∈ Ω(g) ⇐⇒ ∃c > 0∃n0 ∀n > n0
f (n) > cg(n)
f ∈ Θ(g) ⇐⇒ f ∈ O(g) ∧ f ∈ Ω(g)
λn.v = funkcja która dla argumentu n, zwraca v. Ten zapis rodem z λ-rachunku sªu»y rozró»nieniu napisu nk (n do pot¦gi k), od λn.nk (funkcj¦ wielomianow¡, która dla ustalonego
k , zwraca argument podniesiony do k -tej pot¦gi). Wedle popularnej konwencji wyniesionej ze
szkoªy, pisz¡c x2 mamy na my±li λx.x2 , sprawa jednak si¦ komplikuje gdy zmiennych jest wi¦cej.
5. (1+2 pkt) (basic) Podaj rz¡d zªo»ono±ci czasowej funkcji factorize u»ywaj¡c notacji Θ. Udowodnij swoj¡ tez¦.
6. (1+1+1+2 pkt) (basic) Udowodnij, »e
•
λn.n2 ∈ Ω(λn.n log n)
•
√
λn.n log n ∈
/ Ω(λn.n n)
•
f ∈ O(g) =⇒ g ∈ Ω(f )
•
∀k
λn.
n
X
xk ∈ Θ(λn.nk+1 )
x=0
7. (1+1 pkt) (pro) Udowodnij, »e
•
f ∈ O(g) ∧ h ∈ O(g) =⇒ (∀a > 0∀b > 0 λn. (ag(n) + bh(n)) ∈ O(g))
•
∀k
λn.
n
∈ Θ λn.nk
k
19 punktów z tego kolokwium stanowi¢ b¦dzie 13 oceny z ¢wicze«.
Pozostaªe 32 zale»e¢ b¦dzie od drugiego kolokwium i list zada«.
Na ocen¦ dostateczn¡ trzeba b¦dzie mie¢ ponad poªow¦ punktów.
9
Na ocen¦ bardzo dobr¡ trzeba b¦dzie mie¢ ponad 10
punktów.

Podobne dokumenty