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:12 [2021/01/11 12:57]
pdmatei
aa:lab:12 [2025/01/23 14:09] (current)
dmihai
Line 1: Line 1:
-===== Lab 12: NP-hard and NP-complete problems ​=====+====== TDA-uri și inducție structurală ====== 
 +  ​
  
-Consider the following problems:+1. Definiți axiome pentru următorii operatori pe tipul ''​List''​:
  
-**k-Independent Set**+  ​''​reverse''​ (inversează elementele dintr-o listă) 
 +  ​''​filterEven''​ (elimină elementele impare dintr-o listă)
  
-Let $math[G=(V,​E)] be an undirected graph and $math[k] be a natural number**k-Independent-Set** asks if there exists a subset $math[C\subseteq V] of size $math[k] of nodes from $math[G] such that all nodes from $math[G] are **independent**$math[\forall u,v \in V . (u,​v)\not\in E].+2Definiți axiome pentru următorii operatori pe tipul ''​BTree''​:
  
-**Subset Sum**+  ​''​mirror : BTree → BTree''​ (arborele oglindit pe verticală, i.e. pentru orice nod, copilul stâng devine copilul drept și vice-versa) 
 +  ​''​flatten : BTree → List''​ (lista cu toate elementele din arbore; observați că există mai multe ordini posibile)
  
-**Partition**+3. Definiți axiome pentru următorii operatori pe tipul ''​Map'':​
  
 +  * ''​update : Map × K × V → Map''​ (un Map cu o nouă asociere cheie:​element)
 +  * ''​delete : Map × K → Map''​ (șterge cheia și valoarea asociată)
 +
 +4. Demonstrați următoarele propoziții,​ folosind inducție structurală:​
 +
 +  * $math[\forall t \in \texttt{BTree}. size(t) = size(mirror(t))]
 +  * $math[\forall t \in \texttt{BTree}. size(t) = length(flatten(t))]
 +  * $math[\forall l \in \texttt{List}. append(l, Empty) = l]
 +  * $math[\forall l_1, l_2, l_3 \in \texttt{List}. append(l_1, append(l_2, l_3)) = append(append(l_1,​ l_2), l_3))]
 +  * $math[\forall l_1, l_2 \in \texttt{List}. length(append(l_1,​ l_2)) = length(append(l_2,​ l_1))]
 +  * $math[\forall l_1, l_2 \in \texttt{List}. reverse(append(l_1,​ l_2)) = append(reverse(l_2),​ reverse(l_1))].
 +
 +
 +
 +<​note>​
 +Soluțiile acestui laborator se găsesc [[https://​ocw.cs.pub.ro/​ppcarte/​doku.php?​id=aa:​lab:​sol:​12|aici]]
 +</​note>​