Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aa:lab:sol:6 [2023/11/17 18:57]
vlad.juja
aa:lab:sol:6 [2025/11/11 12:10] (current)
stefan.sterea
Line 1: Line 1:
 ====== Soluții Laboratorul 6 ====== ====== Soluții Laboratorul 6 ======
  
-Există multiple soluții pentru fiecare problemă, mai mult sau mai puțin bune, care oferă răspuns corect pentru un set mai mare sau mai mic, dar limitat, de date de intrareÎn continuare vom prezenta câteva posibile idei. \\ +1.  
-\\+a. binary_search:​
  
 +După verificările realizate în timp constant, problema este împărțită în două subprobleme de dimensiune înjumătățită,​ din care doar una este aleasă. (Pentru simplitate, putem considera termenul constant = 1) \\
 +$ T(n) = T(n/2) + 1, T(1) = 1 $
  
-=== 1. K Vertex Cover ===+**Metoda arborilor:​** \\ 
 +Fiecare nivel conține $ T\left(\frac n{2^h}\right) + $ unde $ h $ este numărul nivelului (începând de la 0), având $ T(1) $ în frunze, deci $ \log n $ niveluriDe asemenea avem o singură frunză. Suma totală este: 
 +$$ \left(\sum_{i=0}^{\log n - 1} 1\right) + T(1) \log n + 1 \Theta(\log n) $$
  
-Soluția greedy pentru problema K Vertex Cover ar fi să alegem în mod repetat un nod care acoperă cea mai mare număr de muchii neacoperite. În fiecare pasadăugăm nodul respectiv în setul nostru și eliminăm toate muchiile care sunt acoperite de acest nod. Repetăm acest proces până când avem un set de K noduri sau până când toate muchiile sunt acoperite. ​\\+**Metoda substituției:** \\ 
 +Vrem sa demonstrăm că $ T(n) = \Theta(\log n) $adică \\ 
 +$ \exists(c_1,​ c_2 > 0)(N \geq 0): \forall(n\geq N): c_1 \log n \leq T(n) \leq c_2 \log n $
  
-{{:aa:​lab:​sol:​k_vertex_cover_counter_ex.jpg?​nolink&​300|}}+Cazul de bază\\ 
 +$ N = 2 $ \\ 
 +$ c_1 \log 2 = c_1 \leq T(2) = 1 + 1 = 2 \leq c_2 \log 2 = c_2  \Rightarrow $ \\ 
 +$ c_1 \leq 2 $ \\ 
 +$ c_2 \geq 2 $
  
-În exempul de față, algoritmul greedy nu poate depista Cover-ul de lungime 4 format din nodurile {5, 6, 7, 8$} pentru că va alege ca prim nod nodul 9$\\ +Pasul inducției: \\ 
-\\+pp. că $ c_1 \log(n/2) \leq T(n/2) \leq c_2 \log(n/2) $ \\ 
 +$ \Rightarrow c_1 \log(n/2) + 1 \leq T(n/2) + 1 \leq c_2 \log(n/2) + 1 $ \\ 
 +$ \Rightarrow c_1 \log n c_1 \log 2 + 1 \leq T(n) \leq c_2 \log n - c_2 \log 2 + 1 \\ 
 +\Rightarrow c_1 \log n + (1 - c_1) \leq T(n) \leq c_2 \log n - (c_2 - 1) $ \\ 
 +Dacă $ 1 - c_1 \geq 0 și $ c_2 - 1 \geq 0 $ atunci ​\\ 
 +\Rightarrow c_1 \log n \leq T(n) \leq c_2 \log n $ \\ 
 +Astfel, avem condițiile:​ \\ 
 +$ c_1 \leq 1 $ \\ 
 +$ c_2 \geq 2 $ 
  
 +b. successor: \\
  
-=== 2. K Clique ===+Verificările de ieșire din recursivitate,​ calculul lui high și low, check-ul după max pentru a vedea dacă trebuie să căutăm succesorul lui x în același cluster cu x sau în următorul cluster nevid și calculul final al index-ului se realizează toate în timp constant, mărginit superior de o constantă $ C $. 
 +Apelurile recursive se realizeză pe structuri de dimensiune radical din dimeniunea structurii originale (pe unul din clustere sau pe sumarul care reprezintă un vEB pentru indicii clusterelor,​ deci tot de aceași dimensiune precum clusters). \\ 
 +$ T(u) T(\sqrt{u}) + C, T(2) \leq C $.
  
-Pentru problema K Clique, o soluție greedy ar fi să alegem noduri în funcție de gradul lor, adică să începem cu nodurile care au cei mai mulți vecini în graf. La fiecare pas, adăugăm un nod în setul nostru ​și eliminăm toate nodurile care nu sunt conectate la acestaContinuăm acest proces ​până ​când avem un set de K noduri sau nu mai există noduri rămase în graf.+**Metoda arborilor:​** \\ 
 +Considerăm $ u = 2^{2^k} $ și pornim cu rădăcina arborelui $ T\left(2^{2^k}\right) $\\ 
 +Fiecare nivel $ h $ conține $ T\left(2^{2^{k - h}}\right) + C $ până ​la ultimul nivel care conține o singură frunză $ T(2) $\\ 
 +Ultimul nivel este nivelul $ k = \log \log u $. Suma este: \\ 
 +$$ \left(\sum_{i=0}^{\log \log u - 1} C\right) + T(2) = C \log \log u + T(2) - C = \Theta(\log \log u) $$
  
-Cu toate acestea, o astfel de abordare greedy nu garantează întotdeauna găsirea unei clique de dimensiune maximă.+**Metoda substituției:​** \\ 
 +Vrem să demonstrăm că $ T(u) = \Theta(\log \log u) $, adică \\ 
 +$ \exists(c_1,​ c_2, d_1, d_2 > 0)(U \geq 0): \forall(u \geq U): c_1 \log\log u - d_1 \leq T(u) \leq c_2 \log \log u + d_2 $ \\
  
-{{:aa:​lab:​sol:​k_clique_counter_ex.png?​nolink&​300|}}+Cazul de bază\\ 
 +$ U = 2 $ \\ 
 +$ c_1 \log\log 2 - d_1 = -d_1 \leq T(2) \leq C \leq c_2 \log\log 2 + d_1 = d_1 $ \\ 
 +$ d_1 \geq 0,\ d_2 \geq C $ \\
  
-În cazul de față algoritmul propus va alege ca prim nod nodul 1$, va elimina nodurile ​8și 9pentr că nu sunt conectate la el, după care va alege nodul 2$. Prin urmare, nu se poate obține o Clique de dimensiune ​3$, în ciuda faptului că există una: {2, 8, 9$}. \\ +Pasul inducției:\\ 
-\\+pp. că $ c_1 \log \log \sqrt{u} - d_1 \leq T\left(\sqrt{u}\right) \leq c_2 \log \log \sqrt{u} + d_2 \\ 
 +\Rightarrow c_1 \log\log\left(u^{1/​2}\right) - d_1 = c_1 \log\left(\frac 12\log u\right) - d_1 \leq T\left(\sqrt u\right) \leq c_2 \log\log\left(u^{1/​2}\right) + d_2 \leq \log\left(\frac 12\log u\right) + d_2 \\ 
 +\Rightarrow c_1 \log\log u + c_1 \log\left(\frac 12\right) - d_1 = c_1 \log\log u - c_1 - d_1 \leq T\left(\sqrt u\right) \leq c_2 \log\log u + c_2 \log\left(\frac 12\right) + d_2 = c_2\log\log u - c_2 + d_2 \\ 
 +\Rightarrow c_1 \log\log u - c_1 - d_1 + C \leq T\left(\sqrt u\right) + C \leq c_2\log\log u - c_2 + d_2 + C \\ 
 +\Rightarrow \underbrace{(c_1 \log\log u - d_1) + (C - c_1)}_{\rm LHS} \leq T(u) \leq \underbrace{(c_2 \log\log u + d_2) + (C - c_2)}_{\rm RHS} \\ 
 +Dacă $ C - c_1 \geq 0 și $ C - c_2 \leq 0 $ atunci ​\\ 
 +\Rightarrow c_1 \log\log u - d_1 \leq {\rm LHS} \leq T(u) \leq {\rm RHS} \leq c_2 \log\log u + d_2 $
  
 +În final avem condițiile:​ \\
 +$ d_1 \geq 0, d_2 \geq C, $ \\
 +$ c_1 \leq C \leq c_2 $ \\
 +care sunt satifăcute,​ de exemplu, pentru $ d_1 = 0, d_2 = c_1 = c_2 = C $.
  
-=== 3. K Coloring ​=== +2. 
- +  * $ T(n) 4T(n/4) + 1 $ 
-Pentru fiecare nod, se alege cea mai mică culoare disponibilă care nu este marcată de vecinii nodului curent. Spre exemplupentru următorul graf (presupunem ​2$): +$ a 4;\ b 4;\ f(n) n^0,\ c 0;\ d = \log_b a = \log_4 4 = 1;\ c < d $ \\ 
- +Această recurență intră în cazul 1 al teoremei Masterdeci T(n) \Theta(n^d) = \Theta(n) ​
-{{:​aa:​lab:​sol:​k_coloring_ex.png?​nolink&​300|}} +  ​* ​T(n) = 4T(\frac n 2) + n^2 $ 
- +a = 4;\ b = 2;\ f(n) = n^2 = n^2 \log^n,\ c = 2,\ k = 0;\ d = \log_b a = \log_2 4 = 2;\ c = d \\ 
-Avem $ 2$ culori disponibile,​ numerotate de la $1 $ la $ 2$. Inițial, $ [A → 0, B → 0C → 0, D → 0, E → 0]$, adică niciun nod nu are asignată nicio culoare. +Această recurență intră în cazul 2 al teoremei Masterdeci T(n) = \Theta(n^d \cdot \log^{k+1}n) = \Theta\left(n^2 \log n\right)
- +  ​* ​T(n= \frac{27}{8} T(2n/3) + n^3 \log^2 n + n^2 $ 
-Pentru $ A$, vecinii săi nu au asignată nicio culoare. Îi asignăm lui A cea mai mică culoare disponibilă, adică ​$ 1$. $ [A → 1, B → 0, C → 0, D → 0, E → 0]+a = 27/8;\ b = 3/2;\ f(n) = n^3 \log^2 n + n^= \Theta\left(n^3 \log^2 n\right),\ c = 3,\ k = 2;\ d = \log_b a = 3;\ c = d \\ 
- +Această recurență intră în cazul 2 al teoremei Master, deci T(n) = \Theta(n^d \cdot \log^{k+1}n) = \Theta\left(n^3 \log^3 n\right) $ 
-Pentru ​B$, vecinii săi au asignat $ [1(A)]deci îi asignăm ​$ 2$.....................................................................$ [A → 1, B → 2, C → 0D → 0, E → 0]+  * T(n) = 8T(\frac n 2) + 2n^4 $ 
- +a = 8;\ b = 2;\ f(n) = 2n^4,\ c = 4;\ d = \log_b a = \log_2 8 = 3;\ c > d \\ 
-Pentru $ C$, vecinii săi au asignat ​[1(A)]deci îi asignăm ​$ 2$.....................................................................[A → 1, B → 2, C → 2, D → 0, E → 0]+Această recurență intră în cazul 3 al teoremei Master, iar f(n) = \Theta(n^c) ​$, deci T(n= \Theta(f(n)) = \Theta\left(n^4\right) $ 
- +  * T(n) = 16T(n/4) + n^3\sqrt n $ 
-Pentru ​D$, vecinii săi au asignat ​[2(B), 2(C)]deci îi asignăm ​1$............................................................[A → 1B → 2, C → 2, D → 1, E → 0]+a = 16;\ b = 4;\ f(n) = n^3\sqrt n = \omega(n^3),\ c = 3;\ d = \log_b a = \log_4 16 = 2;\ c > d \\ 
- +Verificăm condiția de regularitate de la cazul 3 al teoremei Master: \\ 
-Pentru ​E$, vecinii săi au asignat $ [1(D)]$ deci îi asignăm $ 2$.....................................................................$ [A → 1, B → 2, C → 2, D → 1, E → 2]$ \\ +a f(n/b= 16 \left(\frac n 4\right)^3 \sqrt{\frac n 4} = 16\frac{n^3}{64} \frac{\sqrt n}{2} = \frac{1}{16}n^3\sqrt{n} = \frac{1}{16}f(n) ​$ \\ 
-\+Deci, $ k = \frac{1}{16< 1 $ satisface $ a f(n/b) \leq kf(n) $ pentru orice $ n \geq 1 $. \\ 
- +Suntem ​în condițiile cazului 3 al teoremei Masterdeci $ T(n) = \Theta(f(n)) = \Theta(n^3\sqrt n) $
-Contraexemlu:​ +
- +
-{{:​aa:​lab:​sol:​k_coloring_counter_ex.png?​nolink&​300|}+
- +
-Acest contraexemplu poate fi acoperit dacă folosim o optimizare, și anume să asignăm culori nodurilor ​în ordinea dată de gradul loradică alegem mereu să asignăm culoare nodului de grad maxim.  +