Algoritma Huffman
Algoritma LZW (Lempel-Ziv-Welch)
Algoritma DMC (Dynamic Marcov
Compression)
Dsb
Berlaku kebalikannya.
1.
2.
3.
4.
A
A
B
C
A
B
C
= 01000001
= 01000001
= 01000010
= 01000011
= 01000001
= 01000010
= 01000011
Simbol
Frekuensi
Buatlah kelas-kelas:
Simbol
Node
HuffmanCode
Buat sebuah fungsi static bernama getTopParent dengan tipe Node dan
berparameter Vector<Node> listNode, lalu masukkan:
Node parent = null;
Vector<Node> listBuff = new Vector<Node>();
for (Node node : listNode) {
listBuff.add(node);
}
while (true) {
parent = new Node();
parent.setKarakter('p');
listBuff = urutSimbol(listBuff);
Node n1 = listBuff.get(listBuff.size() - 1);
Node n2 = listBuff.get(listBuff.size() - 2);
parent.setFrekuensi(n1.getFrekuensi() + n2.getFrekuensi());
parent.setLeft(n2);
parent.setRight(n1);
if (listBuff.size() <= 2) {
break;
}
listBuff.removeElementAt(listBuff.size() - 1);
listBuff.removeElementAt(listBuff.size() - 1);
listBuff.add(parent);
}
return parent;