Guest User

Untitled

a guest
Nov 20th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. static Kahendpuu huffman(Hashtable<Character, Double> sagedustabel){
  2. // Antud: sümbolite esinemissageduste tabel
  3. // Tulemus: konstrueeritakse ja tagastatakse vastav Huffmani koodipuu
  4. //KahendkuhiTp Q = new KahendkuhiTp(); // front (veel vaatlemata tipud)
  5. //ArrayDeque<Tipp> Q = new ArrayDeque<>(); // Kõige väiksemad on esimesed
  6. ArrayList<Tipp> Q = new ArrayList<>();
  7. // NB! Fronti Q peetakse tippude pöörd-kahendkuhjana!
  8. // teha frondi tipud ja vastav isoleeritud tippudega graaf g:
  9. Graaf g = new Graaf();
  10. for (char c : sagedustabel.keySet()){
  11. Tipp t = new Tipp("" + (int)c); // tipu märgendiks sümboli c arvkood
  12. double f = sagedustabel.get(c);
  13. t.seadaVäli("f", "" + f); // väljale f selle sümboli sagedus
  14. g.lisada(t); // panna graafi
  15. }//for
  16.  
  17. while(Q.size() > 1){ // Õpik, joonis 5.6
  18. int index = leiaVäikseim(Q);
  19. Tipp uusTipp = new Tipp();
  20. Tipp tipp1 = Q.remove(index);
  21. Tipp tipp2 = Q.remove(index);
  22. uusTipp.seadaVäli("f", "" + (Double.parseDouble(tipp1.väli("f")) +
  23. Double.parseDouble(tipp2.väli("f"))));
  24. Q.add(uusTipp);
  25.  
  26. }//while
  27. Tipp juur = Q.get(0); // ainus fronti jäänud tipp
  28. g.esikohale(juur); // paigutada esikohale (saab kahendpuu juurtipuks)
  29. return new Kahendpuu(g); // graaf g kahendpuuna
  30. }//huffman
Add Comment
Please, Sign In to add comment