Storan Pokok Huffman yang Cekap
Apabila mereka bentuk alat pengekodan atau penyahkodan Huffman, aspek penting ialah mencari kaedah yang cekap untuk menyimpan pokok Huffman yang dibina dalam fail output. Kecekapan ini menjadi sangat penting apabila berurusan dengan pemprosesan fail tambahan.
Dua Pendekatan Pelaksanaan
Dua pendekatan pelaksanaan biasa wujud:
-
Pemprosesan Fail Keseluruhan: Keseluruhan fail dianalisis, mencipta jadual kekerapan tunggal untuk keseluruhan dokumen. Pokok Huffman dibina dan disimpan sekali dalam output. Kaedah ini kurang cekap untuk fail kecil disebabkan oleh keuntungan yang terhad dalam pengurangan saiz fail.
-
Pemprosesan Fail Berpotongan: Data diproses dalam ketulan saiz tetap. Analisis kekerapan, pembinaan pokok dan pengekodan berlaku untuk setiap bahagian. Pendekatan ini memerlukan pokok Huffman disimpan sebelum setiap bahagian untuk penyahkodan yang betul. Kecekapan adalah penting dalam kes ini untuk meminimumkan overhed.
Kaedah Penyimpanan Pokok Cekap
Untuk menangani keperluan kecekapan dalam pendekatan kedua, kaedah yang menyimpan pokok dalam bentuk padat dicadangkan:
Pengekodan:
- Jika nod ialah daun (tiada anak), kodkannya sebagai aksara/bait N-bit 1-bit.
- Jika tidak sehelai daun (mempunyai anak), kodkannya sebagai 0-bit. Kodkan kedua-dua nod anak kiri dan kanan secara rekursif.
Penyahkodan:
- Baca sedikit.
- Jika 1, baca N bit dan kembalikan nod daun dengan nilai yang ditentukan.
- Jika 0, nyahkodkan nod anak kiri dan kanan secara rekursif dan kembalikan nod baharu tanpa nilai.
Contoh
Pertimbangkan urutan contoh "AAAAAABCCCCCCDDEEEEE":
-
Frekuensi:
- Saiz Pokok: 49 bit
- Saiz Data Dikodkan: 43 bit
- Jumlah Output: 92 bit (12 bait)
Kaedah penyimpanan pokok ini dengan cekap mewakili pokok Huffman dalam fail output, mengurangkan overhed berbanding menyimpan frekuensi sebenar.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Pokok Huffman dengan Cekap untuk Pemprosesan Fail Potongan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn