Diferente pentru preoni-2007/runda-1/solutii intre reviziile #26 si #27

Nu exista diferente intre titluri.

Diferente intre continut:

h3. (problema usoara, clasa a 10-a)
Putem considera cele $N$ animale ca fiind noduri ale unui graf neorientat si o relatie de forma $i j$ ca fiind muchie intre nodurile $i$ si {$j$}. Problema cere determinarea numarului de triunghiuri in graful astfel construit ( numarul de triplete de noduri astfel incat intre oricare doua noduri din triplet exista muchie ). O solutie imediata are complexitatea {$O(N^3^)$}, prin generarea tuturor tripletelor. O solutie mai buna se bazeaza pe urmatorul rationament: pentru fiecare muchie din graf $a b$ trebuie sa vedem cate noduri adiacente cu $a$ si $b$ exista in graf ( adica cate triunghiuri care contin nodurile $a$ si $b$ se pot forma ). Pentru o muchie fixata este suficienta iterarea prin lista de adiacenta a nodurilor $a$ si $b$ si adunarea la numarul total de solutii a numarului de noduri comune. Acest algoritm are complexitatea {$O(M * N)$}, pentru ca parcurgerea unei liste de adiacenta se realizeaza in $O(N)$. Algoritmul de mai sus poate fi optimizat prin tinerea pe grupuri de biti a listei de adiacenta. Astfel, pentru orice nod {$i$}, primii $B$ biti din lista lui de adiacenta vor reprezenta legaturile cu primele $B$ noduri din cele {$N$} ( bit 1 pentru legatura si 0 altfel ), urmatorii $B$ biti legaturile cu nodurile $B+1...2*B$, etc. Pentru a vedea cate noduri adiacente comune au $a$ si $b$ este suficient sa realizam o operatie AND intre grupurile corespunzatoare de biti din listele de adiacenta ale lui $a$ si ale lui $b$ si sa adunam la numarul total de solutii numarul de biti de 1 din acest numar. Complexitatea acestui algoritm este {$O(M*N/B)$}, unde $B$ este numarul de biti dintr-un grup.
Exista si o solutie $O(N)$ pentru aceasta problema. Stim ca numarul maxim de triunghiuri din graf este $N*(N-1)*(N-2)/6$. Vom scadea din acest numar cate triplete $(a b c)$ de noduri exista care nu sunt triunghiuri. Stiind gradul fiecarui nod, numarul de triplete care nu sunt triunghiuri si contin nodul $nod$ este $grad[nod]*(N-1-grad[nod])$, fiindca putem construi un triplet cu nodul $nod$, un nod adiacent, si unul neadiacent.
h2. Pachete

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.