16 02 2009

background image


1. W bardzo, bardzo długiej tablicy uporządkowanej rozmiaru n poszukujemy
pewnego elementu x. Mamy do wyboru klasyczną metodę bisekcji (1) lub
metodę podwajania kroku i bisekcji (2). Zakładając że poszukiwany element
znajduje się na pozycji k, określ dla jakich k metoda (1) jest szybsza od metody
(2).

*Bisekcja polega na dwupodziale zbioru na podzbiory - 12345678 -> 1234|5678 (następny krok
przy założeniu że szukamy 6tki) – 56|78 (szukana wartośd znajduje się w podzbiorze lewym) –
5|6 (znaleźliśmy nierozkładalne zbiory i nasz wynik).
*Podwajany krok - 12345678 (założenia podobne jak wyżej) i bisekcja (k0=1) – 1|2345678 ->
23|45678 ->4567|8 (znaleźliśmy ramy podzbioru czyli między 4 a 7; kontynuujemy metodą
bisekcji) – 45|67 -> 6|7 - znaleźliśmy szukaną wartośd. Metoda ta polega na tym że skaczemy
jak pionek po planszy - tablicy; do tego co kolejny skok skaczemy 2 razy dalej; jak widad tworzą
się coraz większe przedziały - ponieważ są one uporządkowane rosnącą wystarczy sprawdzid
czy w przedziale nie znajduje się nasza wartośd - załóżmy że przedział to a......b (<a,b>)
sprawdzamy czy k>=a && k<=b; jeżeli tak to stosujemy metodę bisekcji na przedziale <a,b>.

Odpowiedź: k > sqrt(n). Drugi sposób zaczyna od początku tablicy,
więc dla elementów z kooca tablicy będzie wolniejszy od sposobu
z samą bisekcją, który zaczyna od środka. Dlatego sqrt(n), bo jest
to środkowy element ciągu geometrycznym 2^0, 2^1, 2^2, ..., ~n
po prostu sqrt(n) będzie „połową drogi” zarówno dla bisekcji, jak i
dla "podwojonego kroku".


2. Przypuśdmy, że algorytm A ma złożonośd pesymistyczną f(n), zaś
algorytm B ma złożonośd pesymistyczną g(n). Na każde z poniższych
odpowiedz tak, nie, lub nie wiadomo, a odpowiedź uzasadnij:
2.1.Czy w najgorszym przypadku danych A jest asymptotycznie szybszy od B,
jeśli g(n)=Ω(f(n)logn)

TAK

2.2.Czy w najgorszym przypadku danych A jest asymptotycznie szybszy od B,
jeśli g(n)=O(f(n)logn

) NIE WIADOMO

2.3.Czy w najgorszym przypadku danych A jest asymptotycznie szybszy od B,
jeśli g(n)=Θ (f(n)logn

) TAK

2.4.Czy w najgorszym przypadku danych B jest asymptotycznie szybszy od A,
jeśli g(n)=Ω(f(n)logn

) NIE

2.5.Czy w najgorszym przypadku danych B jest asymptotycznie szybszy od A,
jeśli g(n)=O(f(n)logn

) NIE WIADOMO

2.6.Czy w najgorszym przypadku danych B jest asymptotycznie szybszy od A,
jeśli g(n)= Θ (f(n)logn

) NIE

Dla uproszczenia można przyjąd, że f(n)=n to wtedy g(n)=nlogn ,
wtedy wszystko jest chyba oczywiste (i zgodne z rysunkiem).


3. Udowodnij redukcję 3-SAT alfa 4-SAT

Wyrażenie 3-CNF ma postad:  = C

1

* C

2

* C

3

*...* C

n

, gdzie każda klauzula C

i

wygląda następująco: (x

i1

+x

i2

+x

i3

). Wprowadzamy n nowych zmiennych

tworząc formułę ’ w postaci 4-CNF, zastępując każdą starą klauzulę
dwiema nowymi o 4 składnikach, tak że: ’ = ( C

1

+ q

1

) * ( C

1

+ !q

1

) * ( C

2

+

q

2

) * ( C

2

+ !q

2

) *…* ( C

n

+ !q

n

) * ( C

n

+ !q

n

). Widad, że jeżeli formuła  była

spełnialna dla pewnego przypisania wartości logicznych, to dla dowolnych
q nie zmieni to ogólnej wartości ’ przekształconego z .

Przykład:  = (x1+x2+x3)(x1+!x2+!x3) => ’ =
(x1+x2+x3+x4)(x1+x2+x3+!x4)(x1+!x2+!x3+x4) (x1+!x2+!x3+!x4) Jak widad,
zmienna x4 nie wpływa na spełnialnośd ’, jeżeli  było spełnione.
Konkluzja: 3SATα4SAT, a to kooczy dowód!

6. Ustal złożonośd obliczeniową następujących problemów:

6.1. Dany jest graf spójny G w postaci pęków wyjściowych; Czy G zawier a
drzewo spinające T stopnia Δ(T)=<2?

Δ<=2 oznacza, że T jest ścieżką, a wiec problem sprowadza się do
znalezienia ścieżki Hamiltona w G. Jak wiadomo, jest to problem NPC.

6.2. Dany jest graf spójny G w postaci pęków wyjściowych; Czy G zawiera
drzewo spinające T stopnia DELTA(T)>2?

Można w czasie wielomianowym, wystarczy sprawdzid, czy graf jest
spójny i czy każdy wierzchołek ma co najmniej trzech sąsiadów, jest to
problem P o złożoności O(n).


4.Graf G zapisano w postaci macierzy sąsiedztwa wierzchołków. Napisz
program rozstrzygający, czy G jest cyklem i oszacuj jego złożonośd
obliczeniową.

1.

function czy_cyklem(G[n][n]:integer)

2.

var zlicz, ten, pop:integer;

3.

begin

4.

for i := 1 to n do

5.

if G[i][i] = 1 then return false;

6.

for i := 1 to n do

7.

begin

8.

zlicz := 0;

9.

for j := 1 to n do

10.

begin

11.

if G[i][j] = 1 then

12.

zlicz := zlicz + 1;

13.

end

14.

if zlicz != 2 then return false;

15.

end

16. for i := 1 to n do
17.

begin

18.

if G[1][i] = 1 then

19.

begin

20.

ten := i;

21.

break;

22.

end

23.

end

24.

pop := 1;

25. zlicz := 1;
26.

while ten != 1 do

27.

begin

28.

for i := 1 to n do

29.

if G[ten][i] = 1 and i != pop then

30.

begin

31.

pop := ten;

32.

ten := i;

33.

break;

34.

end

35.

zlicz := zlicz + 1;

36.

if zlicz > n then return false;

37.

end

38.

if zlicz = n then return true;

39.

return false;

40. end

Najpierw sprawdzam czy nie ma pętelek na wierzchołkach, czyli czy
wierzchołki nie prowadzą same do siebie. Potem czy wierzchołki są stopnia
drugiego. Po tym zostają nam dwa wyjścia: albo jest to nasz szukany cykl,
albo graf składa się z jakichś pomniejszych gówienek. No to jedziemy od
wierzchołka 1 aż nie wrócimy do niego i zliczamy przez ile przeszliśmy
wierzchołków. Jeżeli przez n to git, jak nie to false. Złożonośd O(n^2).

5. Niepusty graf G, który ma n wierzchołków. Dla danego k sprawdzid „Czy graf G
jest k-barwny?”. Odpowiedzied TRY jeśli O(1), POL jeśli wielomianowo lub NPC.

Dla k=1 wszędzie mamy TRY, ponieważ przy reprezentacji w postaci pęków
wyjściowych wystarczy sprawdzid, czy tablica jest pusta (da się), czy nie (nie da się),
a to zajmuje O(1). Dla k=2 gdy graf jest 2-dzielny problem jest TRY (bo każdy graf 2-
dzielny jest 2-barwny), a dla ogólnego i planarnego jest POL, istnieje wielomianowy
algorytm sprawdzania 2-dzielności grafu (jak nie ma podgrafów K

3

to powinien byd

2-barwny. Dla k=3 problem jest NPC dla grafów ogólnych i planarnych oraz
trywialny dla 2-dzielnych (one są zawsze 2-barwne). Dla k=k problem jest
TRYwialny dla grafów planarnych (je można zawsze pokolorowad za pomocą max 4
barw), o 2-dzielnych było wcześniej, a dla grafu ogólnego jest NPC tak samo jak
przy k=3. Dla k=n-1 problem jest TRYwialny we wszystkich 3 przypadkach.

Moim

zdaniem dlatego, że w pękach wyjściowych wystarczy sprawdzid długośd tablicy (jeśli graf jest pełny to nie da

się, jeśli nie jest to się da), ale tu przydałoby się potwierdzenie tej teorii.

Dla k=n problem jest

TRYwialny we wszystkich 3 przypadkach bo każdy graf można pokolorowad tyloma
kolorami ile ma wierzchołków.

__________1______2______3 _______k______n-1 ____ n___
ogólny: TRY POL NPC NPC TRY TRY
2-dzielny: TRY TRY TRY TRY TRY TRY
planarny: TRY POL NPC TRY TRY TRY


Wyszukiwarka

Podobne podstrony:
Historia PRL (1) - 16-02-2009
przewlekle niedokrwienie k d kurs II 16 02 2009
egz pilotów 15 i 16 06 2009(2), pilot wycieczek
15 Erozja powietrzna (16 02 2010)
Aktualna ściąga na witaka 16 10 2009 3
16.11.2009, kosmetologia licencjat, biofizyka
Liga zadaniowa 16 II 2009, Liga zadaniowa, Archiwalne + rozwiązania, 2008 - 2009
teorie socjalizacji -material uzupelniajacy z zajec 16.05.2009, socjologia, soc małych gr i rodziny
GF w1 16.02, Geologia GZMiW UAM 2010-2013, I rok, Geologia fizyczna, Geologia fizyczna - wykłady, 01
16 02 87
W 1 26.02.2009 Dyskopatie, studia, Neurochirurgia
PS egz norm 2 02 2009 AiR

więcej podobnych podstron