kolo 12 2008

Kolokwium nr 1 (12.2008)

Zadanie 2.

Na płaszczyznę rzucono n prostych. Niech R(n) oznacza największą możliwą liczbę regionów (ograniczonych lub nie) powstałych w ten sposób, np. R(0)=1, R(1)=2. Wiadomo, że R(n)=xR(n-1)+ym. Ustal wartość x i y. Oszacuj tempo wzrostu R(n). Podaj wartość R(4).

R(2) = 4 = 2x+2y

R(3) = 7 = 4x+3y

Rozwiazujemy uklad, wychodzi x=1, y=1.

R(n) = R(n-1) + n

R(4) = 7+4 = 11

Tempo wzrostu:

d(n) = n

a^n = 1^n = 1

d(n) = ω(a^n), wiec R(n) = O(n^2)

Zadanie 3. (str. 90 skryptu Kubale zad 3.28)

W historii problemu przydziału (LSAP) dla ważonych grafow dwudzielnych znane są następujące coraz szybsze algorytmy:

(1946) Easterfielda

(1955) Khuna

(1969) Dinica-Kronroda

(1985) Gabowa

(1988) Bertsejasa-Ecksteina

(1989) Gabowa-Tarjana

(2001) Kao i in.

o złożonościach O(sqrt(n)Wlog(C^2/W)/logn), O(sqrt(n)mlog(nC)), O(n^(3/4)mlogC), ? , O(nmlog(nC)), O(n^4), O(n^3), gdzie C jest największą wagą krawędzi, zaś W - sumą wag. Zakładając, że C=O(1), przypisz złożoności do algorytmów.

Odpowiedź na 99% poprawna:

(1946) Easterfielda ?

(1955) Khuna O(n^4)

(1969) Dinica-Kronroda O(n^3)

(1985) Gabowa O(nmlog(nC))

(1988) Bertsejasa-Ecksteina O(n^(3/4)mlogC)

(1989) Gabowa-Tarjana O(sqrt(n)mlog(nC))

(2001) Kao i in. O(sqrt(n)Wlog(C^2/W)/logn)

Zadanie 5.

Napisz procedurę obliczająca sumę kwadratów liczb, oblicz czas wykonania i złożoność oblicz.

procedure T(n)

begin

if n = 1 return 1;

else return T(n-1) + n*n

end

nasza zajebista procedura wykona się n razy, czyli czas wykonania = teta(n)

na wejście dostajemy liczbę, czyli N to rozmiar danych wejsciowych, ktory rowny jest liczbie bitow za pomoca ktorych mozemy wyrazic liczbe n, czyli N = podłoga(log2n) + 1 // dwa przy podstawie

co z dokładnością do 1 : N = log2n

Więc procedura o czasie działania n pobierająca na wejściu liczbe będzie wykładnicza bo n = 2^N stąd złożoność obliczeniowa = teta(2^N)

Zadanie 6.

function kwadraty (n : word) : boolean

var i, j, k : word

begin

k := 1, n := n - 1

while (n > 0) do

begin

j := 0

while (j < n) do

begin

j := j + 1

if (n == j * j) return true

end

n = n - 2 * (k - 1)

k = k + 1

end

return false

end

Rozwiązanie:

Najpierw rozważymy ilość wykonań pętli

Kod:

while (n > 0) do

begin

(...)

[b]n = n - 2 * (k - 1)

k = k + 1[/b]

end

jak widać n maleje o kolejne liczby parzyste, czyli n = n - (0 + 2 + 4 + 6 + 8 +2(k-1))

czyli n = n - k(k + 1)

więc:

ilosc wykonan petli bedzie rowna najmniejszemu takiemu k dla którego: k(k+1) >= n

czyli k = sufit(sqrt(n)) + coś co nie wnosi nic do tego tempa

Pętla

Kod:

while (j < n) do

begin

j := j + 1

if (n == j * j) return true

end

wykonuje się n razy

Więc mamy 2 pętle: jedna leci n razy, druga sufit(sqrt(n)) czyli czas działania procedury wynosi teta(n*sqrt(n)) czyli teta(n^3/2). Jest to czas pesymistyczny

Pillow napisał(a):

Optymistyczna wynosi sqrt(n). Przypadek optymistyczny jest gdy znajdziemy rozwiazanie w pierwszym obiegu zewnetrznej petli, a wewnetrzna wykona sie dokladnie sqrt(n) razy.


Z 29.01.2009:

1.Dany jest zbiór n różnych liczb naturalnych A={a1,...,an} Wiadomo że problem polegający na sprawdzeniu "czy zbiór można rozbić na sume dwóch rozłącznych zbiorów B : C o równych sumach elementów" jest NP-zupełne. Czy pozostanie on Np-zupelny, czy tez stanie sie wieloomainowe przy nastepujacych modyfikacjach:

a) n jest podzielne

b) wszystkie liczby ai =< 33

c) wszystkie liczby ai są podzielne przez 3

d) sumy elementów zbiorów B i C nie muszą buc równe lecz mogą różnić się co najwyżej o 3

e) sumy te muszą się różnić o wiecej niz 3

f) 2 zbiory B i C zastepujemu trzema B,C i D o równych sumach elementów

Uzupłelnij graf redukcji pomiedzy tymi podproblemami

a). NPC(?

b). NPC - nie upraszcza to problemu

c). NPC - podzielność przez trzy niczego nam nie zmienia, weźmy dowolny zbiór liczb A danych dla podproblemu bazowego, i każdą z nich pomnóżmy przez 3 - otrzymujemy zbiór liczb A' podzielny przez 3. Zatem, jeśli P nie jest równe NP, to problem ten też musi być NP-zupełny.
d). NPC - nie jest to dowód, ale można wnioskować, że problem 2-podziału to szczególny przypadek danego w tym podpunkcie problemu (czyli: sumy elementów zbiorów B i C mogą się różnic co najwyżej o k elementów, dla 2-podziału k = 0 )
e). P, wystarczy jako B wziąć zbiór pusty, a jako C zbiór wszystkich liczb ze zbioru A. Jeśli ich różnica jest >= 3, to znaczy, że zbiór da się tak podzielić, jeśli nie, to się nie da.
f). NPC, problem można alfa-zredukować do problemu bazowego, dodając do zbioru wejściowego liczbę naturalna K równą połowie sumy wszystkich liczb ze zbioru ( będzie musiała stanowić osobny zbiór D, a pozostałe liczby z A będą i tak musiały się rozdzielić na B i C ).


Wyszukiwarka

Podobne podstrony:
kolo 12 2008
choroby trzustki i watroby 2008 2009 (01 12 2008)
21 12 2008 1CB bardzo łatwy, Flash1CB bardzo łatwy
Amerykanie mogą zostać w Iraku (13 12 2008)
21 12 2008 2CB trudny, Flash2CB trudny
General performance motors EN 12 2008
Japonia wycofa się z Iraku do końca roku (01 12 2008)
001 Prawo budowlane stan prawny na 15 12 2008 r
kolo 2 PJU 2008, 3 rok stoma, PJU, PJU 2 kolo, kolo 2 pju testy
Bogdanowicz 06 12 2008
Architektura komputerów I 16 12 2008
3 12 2008 6
5 12 2008 5
3 12 2008 2
SPRAWOZDANIE 12 2008
Prawo rodzinne, prawo rodzinne i opiekuńcze 20.12.2008
wyklady z GONu na drugiego kolosa, wyklad gon 2.12.2008, GOSPODARKA NIERUCHOMOŚCIAMI - SEM

więcej podobnych podstron