Documente Academic
Documente Profesional
Documente Cultură
Tema10 2015
Tema10 2015
Tema10 2015
Probleme obligatorii
Termen de predare : Laboratorul din sptmna 14 (21 ianuarie 2016)
(5 p) 1. (Algoritmul lui Dijkstra, Cormen capitolul 25) Se dau n orae, care pot fi conectate
sau nu printr-un drum direct. n caz afirmativ, se d i costul utilizrii acelui drum. S se
spun care este costul minim pentru a ajunge dintr-un oras k1 ntr-un ora k2 (eventual
trecnd prin alte orae intermediare).
(5 p) 2. (Algoritmul lui Kruskal pentru determinarea arborelui partial de cost minim, Cormen
capitolul 24) Se dau n orae i distanele dintre oricare dou. Se dorete conectarea
acestora cu fire de telefon astfel nct sa fie utilizat o lungime ct mai mic de cablu, dar s
poata fi iniiat o convorbire ntre oricare dou orae.
Not: Este obligatorie citirea datelor de intrare dintr-un fiier.
Probleme suplimentare
Termen de predare : Laboratorul din sptmna 14 (21 ianuarie 2016)
(5 p) 3. (Algoritmul Floyd-Warshall, Cormen capitolul 26.2) Se dau n orae, care pot fi
conectate sau nu printr-un drum direct. n caz afirmativ, se d i costul utilizrii acelui drum.
S se spun care este costul minim pentru a ajunge din orice ora n oricare alt ora,
folosind algoritmul Floyd-Warshall.
(3 p) 4. S se fac o sortare topologic a unui graf orientat aciclic (topological sort Cormen, capitolul 23.4).
(5 p) 5. Scriei un algoritm care s construiasc un arbore Huffman pentru un alfabet cu
ponderi dat, arbore reprezentat n aa fel nct s poat fi folosit att la codificare, ct i la
decodificare. Scriei proceduri care fac, la cerere, codificarea i decodificarea (vezi anexa)
(4 p) 6. Die Hard
Detectivul John McClane se rzboiete cu teroristul Hans Gruber ntr-un zgrie-nori.
McClane ncearc s ajung de pe latura vestic pe latura estic a etajului 33. Dar este n
picioarele goale, iar Gruber a spart toi pereii de sticl ai camerelor de pe etaj, umplnd
camerele de cioburi. McClane tie cte cioburi sunt n fiecare camer i tie c, dac intr
ntr-o camer, se va nepa n toate cioburile din ea. McClane ncearc s-i ndeplineasc
misiunea n urmtoarele condiii:
Date de intrare
Fiierul de intrare diehard.in conine pe prima linie numerele M i N. Pe fiecare din
urmtoarele M linii se afl cte N numere naturale nenule, reprezentnd numerele de
cioburi din fiecare camer.
Date de ieire
n fiierul de ieire diehard.out se va scrie, pe prima linie, numrul minim de cioburi
n care se va nepa McClane. Pe a doua linie se va descrie traseul urmat de McClane: linia
de pornire, urmat de un spaiu, urmat de un ir de caractere E, N sau S, lipite, care indic
ordinea deplasrilor.
Restricii
1 M, N 1.000
dac exist mai multe trasee care minimizeaz suma numerelor de cioburi, le putei
tipri pe oricare din ele
Exemplu
diehard.in
diehard.out
45
85
99 13 5 18 35
2 ENEESSSE
10 7 67 12 22
10 4 83 13 10
15 12 95 6 1
Explicaie: Traseul urmat de McClane este 10 - 7 - 13 - 5 - 18 - 12 - 13 - 6 - 1.
Anexa
Algoritm de construcie a arborelui Huffman
Pas 1. Iniializare :
- fiecare caracter reprezint un arbore format dintr-un singur nod;
- organizm caracterele ca un min-heap, n funcie de frecvenele de apariie;
Pas 2. Se repet de n-1 ori :
- extrage succesiv X i Y, dou elemente din heap
- unific arborii X i Y :
- creaz Z un nou nod ce va fi rdcina arborelui
- Z^.st := X
- Z^.dr := Y
- Z^.frecv := X^.frecv+Y^.frecv
- insereaz Z n heap;
Pas 3. Singurul nod rmas n heap este rdcina arborelui Huffman. Se genereaz codurile
caracterelor, parcurgnd arborele Huffman.