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:36]
vlad.juja
aa:lab:sol:6 [2023/12/11 16:41] (current)
vlad.juja
Line 7: Line 7:
 === 1. K Vertex Cover === === 1. K Vertex Cover ===
  
-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 pas, adă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. \\+Soluția greedy pentru problema K Vertex Cover ar fi să alegem în mod repetat un nod care acoperă ​cel mai mare număr de muchii neacoperite. În fiecare pas, adă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. \\
  
 {{:​aa:​lab:​sol:​k_vertex_cover_counter_ex.jpg?​nolink&​300|}} {{:​aa:​lab:​sol:​k_vertex_cover_counter_ex.jpg?​nolink&​300|}}
Line 33: Line 33:
 {{:​aa:​lab:​sol:​k_coloring_ex.png?​nolink&​300|}} {{:​aa:​lab:​sol:​k_coloring_ex.png?​nolink&​300|}}
  
-Avem 2 culori disponibile,​ numerotate de la $1 $ la $ 2$. Inițial, $ [A → 0, B → 0, C → 0, D → 0, E → 0]$, adică niciun nod nu are asignată nicio culoare.+Avem 2culori disponibile,​ numerotate de la $1 $ la $ 2$. Inițial, $ [A → 0, B → 0, C → 0, D → 0, E → 0]$, adică niciun nod nu are asignată nicio culoare.
  
-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]$+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]$
  
-Pentru $ B$, vecinii săi au asignat $ [1(A)]$ deci îi asignăm 2.....................................................................$ [A → 1, B → 2, C → 0, D → 0, E → 0]$+Pentru $ B$, vecinii săi au asignat $ [1(A)]$ deci îi asignăm ​2$.....................................................................$ [A → 1, B → 2, C → 0, D → 0, E → 0]$
  
-Pentru $ C$, vecinii săi au asignat $ [1(A)]$ deci îi asignăm 2.....................................................................$ [A → 1, B → 2, C → 2, D → 0, E → 0]$+Pentru $ C$, vecinii săi au asignat $ [1(A)]$ deci îi asignăm ​2$.....................................................................$ [A → 1, B → 2, C → 2, D → 0, E → 0]$
  
-Pentru $ D$, vecinii săi au asignat $ [2(B), 2(C)]$ deci îi asignăm 1............................................................$ [A → 1, B → 2, C → 2, D → 1, E → 0]$+Pentru $ D$, vecinii săi au asignat $ [2(B), 2(C)]$ deci îi asignăm ​1$............................................................$ [A → 1, B → 2, C → 2, D → 1, E → 0]$
  
-Pentru $ E$, vecinii săi au asignat $ [1(D)]$ deci îi asignăm 2.....................................................................$ [A → 1, B → 2, C → 2, D → 1, E → 2]$+Pentru $ E$, vecinii săi au asignat $ [1(D)]$ deci îi asignăm ​2$.....................................................................$ [A → 1, B → 2, C → 2, D → 1, E → 2]$ \\ 
 +\\ 
 + 
 +Contraexemplu:​ 
 + 
 +{{:​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 lor, adică alegem mereu să asignăm culoare nodului de grad maxim. Dacă vom avea 2 noduri cu același grad, vom alege mai întâi nodul cu indexul mai mic. Intuitiv, optimizările nu fac altceva decât să mărească plaja de input-uri pentru care se obține un răspuns optim, dar,  întotdeauna se vor găsi input-rui pentru care nu functionează. Spre exemplu, optimizarea propusă e bătută de următorul graf: 
 + 
 +{{:​aa:​lab:​sol:​k_coloring_counter_ex_2_updated.png?​nolink&​300|}} 
 +\\ 
 + 
 + 
 +=== 4. Hamilton Path + TSP === 
 +Pentru TSP, vom alege pe rând fiecare latura de cost minim și o luăm în considerare dacă adăugând-o la drumul format până acum, aceasta nu creează un ciclu sau un nod de grad $ 3$. Pentru Hamilton Path, pur și simplu nu vom mai ține cont de cost, luăm muchiile într-o ordine oarecare. 
 + 
 +Contraexemplu:​ 
 + 
 +{{:​aa:​lab:​sol:​tsp_counter_ex.png?​nolink&​300|}} 
 + 
 +În exemplul de față algoritmul de mai sus va genera calea $ A → B → C → D → E → F$ ce va avea costul total $ 29$, chiar dacă $ C → A → B → E → F → D$ are costul $ 28$. \\ 
 +\\ 
 + 
 + 
 +=== 5. K Cut === 
 +??? \\ 
 +\\ 
 + 
 + 
 +=== 6. SAT === 
 +Există $ 2^{N}$ candidați pentru soluție, unde $ N = Numărul-de-variabile$. 
 + 
 +Complexitatea generării tuturor candidaților va fi $ Θ(2^n)$. 
 + 
 +Verificarea validității unui candidat: 
 + 
 +<​code>​ 
 +function Check_Candidate(T) { 
 +   ​înlocuiește fiecare literal al expresiei booleene cu T(literal) 
 +   while (expresia nu e de forma „True” sau „False”) { 
 +      găsește toate subexpresiile ce operează doar cu literali, evaluează-le și înlocuiește-le cu valoarea obținută ​  
 +   } 
 +   ​return valoarea la care s-a evaluat expresia 
 +
 +</​code>​ 
 + 
 +Înlocuirea variabilelor cu valoarea lor de adevăr poate fi realizată într-un timp liniar în funcție de $ |ϕ|$; bucla while găsește expresii precum $ TRUE, FALSE ∧ TRUE$ și le rezolvă (bazat pe logica tabelelor de adevăr), înlocuindu-le cu o constantă booleană. La fiecare pas, dimensiunea expresiei rămase scade, astfel încât algoritmul va realiza un număr de $ O(|ϕ|)$ iterații. \\ 
 +\\ 
 + 
 + 
 +=== 7. CNF SAT === 
 +Pentru că este doar o variantă mai restrictivă a problemei SAT soluția de mai sus ar funcționa și pentru aceasta.  
 +Cu toate acestea, se crede că nici CNF SAT nu are o soluție polinomială. \\ 
 +\\ 
 + 
 + 
 +=== 8. 3SAT === 
 +Putem arăta formal că 3SAT este "la fel de dificilă"​ ca SAT. Acest lucru implică că, dacă, așa cum se crede în mod larg, nu există o soluție polinomială pentru SAT, atunci nu există nici o soluție polinomială pentru 3SAT. 
 + 
 +Cu toate acestea, restrângerea problemei chiar mai mult ne aduce în sfera certitudinii polinomiale:​ problema similară 2SAT a fost dovedită a fi în P! \\ 
 +\\
  
 +=== 9. 10. 11. 12. ===
 +<​note>​
 +Soluția se găsește la link-ul: https://​gitlab.cs.pub.ro/​aa-cb-internal
 +</​note> ​