Pagini recente » Diferente pentru problema/triangulare intre reviziile 6 si 7 | Diferente pentru problema/triangulare intre reviziile 18 si 4 | Istoria paginii happy-coding-2005-1/clasament | Istoria paginii problema/largestroot | Diferente pentru problema/huffman intre reviziile 10 si 11
Nu exista diferente intre titluri.
Diferente intre continut:
Lungimea totală a textului $T'$ este 86.
h2. Soluţie
Problema se rezolvă printr-un algoritm greedy, codarea Huffman. Se pot considera cele $N$ caractere noduri într-un graf, având fiecare un cost egal cu numărul de apariţii al caracterului în textul $T$. La fiecare pas se creeaza un nod nou şi se duc de la acesta $2$ muchii către nodurile de cost minim care nu au fost încă unite, costul acestuia fiind egal cu suma costurilor celor $2$ fii. Pentru a putea reconstitui ulterior codurile, se asociaza celor $2$ muchii valoarile $0$ şi $1$. Se va obţine un arbore binar cu $2*N-1$ noduri, suma costurilor nodurilor interne fiind egală cu lungimea textului $T'$.
Algoritmul se poate generaliza pentru coduri in baza $K$, selectand la fiecare pas cele mai mici K noduri pentru a le uni cu nodul nou creat. De asemenea, trebuie create caractere fictive cu $0$ aparitii, pentru ca numărul iniţial de noduri să fie de forma $X * (K-1) + 1$.
h3. Etape de rezolvare
O 'soluţie':job_detail/370657?action=view-source în care căutarea celor $2$ noduri de cost minim se face liniar are o complexitate $O(N^2^)$ şi obţine $30$ de puncte. Folosind un heap pentru a extrage nodurile de cost minim, complexitatea scade la $O(N log~2~ N)$. Această 'soluţie':job_detail/370924?action=view-source obţine $70$ de puncte. În cazul în care costurile nodurilor sunt date în ordine crescătoare, se pot ţine $2$ cozi, conţinând nodurile iniţiale, respectiv nodurile interne. Observând că nodurile sunt sortate crescător după cost, se pot extrage cele $2$ minime şi introduce nodul nou în $O(1)$. Această 'soluţie':job_detail/370923?action=view-source obţine $100$ de puncte.
h2. Probleme propuse
'Fence repair':http://acm.pku.edu.cn/JudgeOnline/problem?id=3253 - PKU
'Aviamachinations':http://acm.sgu.ru/problem.php?contest=0&problem=323 - SGU
'Hyperhuffman':http://acm.sgu.ru/problem.php?contest=0&problem=203 - SGU
'Scandura':problema/scandura
== include(page="template/taskfooter" task_id="huffman") ==
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.