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.