Rumah pembangunan bahagian belakang Tutorial Python Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python?

Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python?

Sep 20, 2023 am 10:49 AM
pelaksanaan python Algoritma pengekodan Huffman pokok huffman

Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python?

Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python?

Abstrak:
Pengekodan Huffman ialah algoritma pemampatan data klasik yang mencapai storan pemampatan data yang cekap dengan menjana kod unik berdasarkan kekerapan kejadian aksara. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan algoritma pengekodan Huffman dan memberikan contoh kod khusus.

  1. Fahami idea pengekodan Huffman
    Idea teras pengekodan Huffman ialah menggunakan kod yang lebih pendek sedikit untuk aksara yang muncul lebih kerap dan menggunakan kod yang lebih panjang sedikit untuk aksara yang muncul kurang kerap, untuk mencapai nisbah mampatan lebih tinggi data yang dikodkan. Khususnya, pengekodan Huffman memetakan kekerapan aksara dan maklumat aksara yang sepadan satu demi satu, dan membina pepohon Huffman untuk mewakili pengekodan 0 dan 1 mengikut cabang kiri dan kanan nod pokok.
  2. Membina Pokok Huffman
    Sebelum kita memulakan pengekodan, kita perlu membina pokok Huffman. Mula-mula, kira kekerapan setiap aksara dalam rentetan dan simpan maklumat aksara dan kekerapan dalam kamus kekerapan. Kemudian, bina pokok Huffman berdasarkan kamus kekerapan Langkah-langkah khusus adalah seperti berikut:
  3. Mulakan baris gilir keutamaan (timbunan minimum) untuk menyimpan nod pokok Huffman
  4. Gunakan setiap aksara dan maklumat kekerapan dalam kamus kekerapan sebagai nod daun. Tambahkan pada baris gilir keutamaan
  5. Gelung operasi berikut sehingga hanya tinggal satu nod dalam baris gilir:

    • Pilih dua nod dengan kekerapan terkecil daripada baris gilir sebagai nod anak kiri dan kanan, dan jana nod baharu dengan kekerapan nod anak kiri dan kanan Jumlah frekuensi
    • Tambah nod baharu pada baris gilir
  6. Nod yang tinggal dalam baris gilir ialah nod akar pokok Huffman

Berikut ialah contoh kod:

import heapq
from collections import defaultdict


class Node:
    def __init__(self, frequency, value=None):
        self.frequency = frequency
        self.value = value
        self.left_child = None
        self.right_child = None

    def __lt__(self, other):
        return self.frequency < other.frequency


def build_huffman_tree(freq_dict):
    priority_queue = []

    for char, freq in freq_dict.items():
        heapq.heappush(priority_queue, Node(freq, char))

    while len(priority_queue) > 1:
        left_child = heapq.heappop(priority_queue)
        right_child = heapq.heappop(priority_queue)
        new_node = Node(left_child.frequency + right_child.frequency)
        new_node.left_child = left_child
        new_node.right_child = right_child
        heapq.heappush(priority_queue, new_node)

    return heapq.heappop(priority_queue)

Salin selepas log masuk
  1. Jana jadual pengekodan Huffman
    Dalam pembinaan Selepas menyiapkan pokok Huffman, kami boleh menjana jadual pengekodan Huffman yang sepadan berdasarkan pokok Huffman. Jadual pengekodan Huffman memetakan setiap aksara kepada kod yang sepadan. Langkah-langkah khusus adalah seperti berikut:
  2. Melintasi pokok Huffman, bermula dari nod akar, cawangan kiri pada laluan ditanda 0, cawangan kanan ditanda 1, merekodkan laluan dan pengekodan setiap nod daun
  3. Simpan laluan dan maklumat pengekodan dalam

Berikut ialah contoh kod dalam kamus pengekodan:

def generate_huffman_codes(huffman_tree):
    code_dict = {}

    def traverse(node, current_code=''):
        if node.value:
            code_dict[node.value] = current_code
        else:
            traverse(node.left_child, current_code + '0')
            traverse(node.right_child, current_code + '1')

    traverse(huffman_tree)
    return code_dict
Salin selepas log masuk
  1. Mampat dan nyahmampat data
    Dengan jadual pengekodan Huffman, kami boleh memampatkan data asal dan menggantikan setiap aksara data asal dengan pengekodan Huff Mann yang sepadan dan menyimpan data binari yang dikodkan dalam fail. Apabila menyahmampat data, kita perlu memulihkan data binari yang dikodkan kepada data asal mengikut jadual pengekodan Huffman.

Berikut ialah contoh kod untuk memampatkan dan menyahmampat data:

def compress_data(data, code_dict):
    compressed_data = ''
    for char in data:
        compressed_data += code_dict[char]
    return compressed_data


def decompress_data(compressed_data, huffman_tree):
    decompressed_data = ''
    current_node = huffman_tree
    for bit in compressed_data:
        if bit == '0':
            current_node = current_node.left_child
        else:
            current_node = current_node.right_child

        if current_node.value:
            decompressed_data += current_node.value
            current_node = huffman_tree

    return decompressed_data
Salin selepas log masuk

Ringkasan:
Artikel ini memperkenalkan cara melaksanakan algoritma pengekodan Huffman menggunakan Python. Langkah utama termasuk membina pokok Huffman, menjana jadual pengekodan Huffman dan memampatkan dan menyahmampat data. Kami berharap pengenalan dan contoh kod dalam artikel ini dapat membantu pembaca memahami dan menggunakan algoritma pengekodan Huffman dengan lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python? Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python? Sep 20, 2023 am 10:49 AM

Bagaimana untuk melaksanakan algoritma pengekodan Huffman menggunakan Python? Abstrak: Pengekodan Huffman ialah algoritma pemampatan data klasik yang menghasilkan kod unik berdasarkan kekerapan kejadian aksara, dengan itu mencapai pemampatan dan penyimpanan data yang cekap. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan algoritma pengekodan Huffman dan memberikan contoh kod khusus. Fahami idea pengekodan Huffman Idea teras pengekodan Huffman ialah menggunakan kod yang lebih pendek sedikit untuk aksara yang muncul lebih kerap, dan menggunakan kod yang lebih panjang sedikit untuk aksara yang muncul kurang kerap, untuk mencapai pengekodan.

Bagaimana untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu dalam Python Bagaimana untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu dalam Python Jul 29, 2023 pm 02:34 PM

Kaedah Python untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu Dengan perkembangan pesat Internet mudah alih, permintaan untuk fungsi muat turun peta luar talian menjadi semakin mendesak. Fungsi muat turun peta luar talian membolehkan pengguna masih menggunakan navigasi peta dan fungsi lain tanpa sambungan Internet, memberikan pengguna pengalaman pengguna yang lebih baik. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan fungsi muat turun peta luar talian dalam API Peta Baidu. API Peta Baidu menyediakan set lengkap antara muka terbuka, termasuk fungsi muat turun peta luar talian. sedang digunakan

Gunakan Python untuk melaksanakan dok antara muka AI Baidu untuk menjadikan program anda lebih pintar dan lebih berkuasa Gunakan Python untuk melaksanakan dok antara muka AI Baidu untuk menjadikan program anda lebih pintar dan lebih berkuasa Aug 13, 2023 am 09:29 AM

Gunakan Python untuk melaksanakan dok antara muka Baidu AI untuk menjadikan program anda lebih pintar dan berkuasa Dengan pembangunan berterusan teknologi kecerdasan buatan, semakin ramai pembangun telah mula melaksanakan fungsi pintar untuk meningkatkan kecerdasan program mereka. Antara muka AI Baidu ialah alat berkuasa yang boleh membantu kami melaksanakan pelbagai fungsi pintar seperti pengecaman pertuturan, pengecaman imej dan pemprosesan bahasa semula jadi. Artikel ini akan menunjukkan kepada anda cara menggunakan Python untuk menyambung ke antara muka Baidu AI untuk menjadikan program anda lebih pintar dan lebih berkuasa. Pertama, kita perlu pergi ke Baidu AI Open Platform (h

Python melaksanakan kaedah dan perkongsian kes untuk ujian automatik halaman web menggunakan aplikasi pengumpulan pelayar tanpa kepala Python melaksanakan kaedah dan perkongsian kes untuk ujian automatik halaman web menggunakan aplikasi pengumpulan pelayar tanpa kepala Aug 08, 2023 am 08:29 AM

Gambaran keseluruhan kaedah Python dan perkongsian kes untuk ujian laman web automatik menggunakan aplikasi koleksi pelayar tanpa kepala: Dalam era Internet hari ini, ujian automatik halaman web telah menjadi salah satu cara penting untuk meningkatkan kualiti dan kecekapan perisian. Sebagai bahasa pengaturcaraan peringkat tinggi, Python mempunyai banyak perpustakaan dan alatan pihak ketiga, menjadikannya mudah dan pantas untuk menggunakan Python untuk ujian automatik halaman web. Artikel ini akan memperkenalkan cara menggunakan penyemak imbas tanpa kepala untuk mengumpul aplikasi dan melaksanakan ujian automatik halaman web serta menyediakan contoh kod yang berkaitan. 1. Apakah itu penyemakan imbas tanpa kepala?

Python melaksanakan analisis fungsi klik dan tatal simulasi halaman untuk aplikasi pengumpulan pelayar tanpa kepala Python melaksanakan analisis fungsi klik dan tatal simulasi halaman untuk aplikasi pengumpulan pelayar tanpa kepala Aug 09, 2023 pm 05:13 PM

Python melaksanakan analisis fungsi klik dan tatal simulasi halaman untuk aplikasi pengumpulan penyemak imbas tanpa kepala Apabila mengumpul data rangkaian, selalunya perlu untuk mensimulasikan operasi pengguna, seperti mengklik butang, menatal lungsur, dsb. Cara biasa untuk mencapai operasi ini ialah menggunakan penyemak imbas tanpa kepala. Pelayar tanpa kepala sebenarnya adalah pelayar tanpa antara muka pengguna yang menyerupai operasi pengguna melalui pengaturcaraan. Bahasa Python menyediakan banyak perpustakaan untuk melaksanakan operasi pelayar tanpa kepala, yang paling biasa digunakan ialah perpustakaan selenium. selen

Gunakan Python untuk menulis program untuk melukis rupa ketulan ais Gunakan Python untuk menulis program untuk melukis rupa ketulan ais Jan 13, 2024 am 08:49 AM

Menggunakan Python untuk merealisasikan kesan lukisan Bingdundun Bingdundun, sebagai maskot Sukan Olimpik Musim Sejuk Beijing 2022, bukan sahaja aktif di tempat pertandingan, tetapi juga telah memenangi cinta ramai netizen di Internet. Jika anda ingin menggunakan kod untuk mencapai kesan lukisan ais dalam Python, mari kita lihat contoh kod khusus di bawah! Pertama, kita perlu memperkenalkan perpustakaan penyu dalam Python untuk melaksanakan fungsi lukisan. Jika perpustakaan ini tidak dipasang pada komputer anda, anda boleh memasangnya melalui pip Perintahnya adalah seperti berikut: pipin

Strategi pengoptimuman untuk pelaksanaan Python bagi operasi skrip Linux Strategi pengoptimuman untuk pelaksanaan Python bagi operasi skrip Linux Oct 05, 2023 am 11:57 AM

Ringkasan strategi pengoptimuman untuk pelaksanaan Python bagi operasi skrip Linux: Dengan penggunaan meluas sistem pengendalian Linux, menggunakan skrip untuk mengautomasikan operasi telah menjadi cara biasa. Dalam artikel ini, kami akan membincangkan cara menggunakan Python untuk mengoptimumkan operasi skrip Linux untuk meningkatkan kecekapan dan kebolehselenggaraan. Secara khusus, kami akan menumpukan pada aspek berikut: menggunakan modul dan perpustakaan yang sesuai, menggunakan berbilang benang dan pemprosesan berbilang, menggunakan pangkalan data untuk penyimpanan dan pengurusan data, dsb. 1. Gunakan modul dan perpustakaan yang sesuai Py

Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python? Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python? Sep 19, 2023 pm 03:30 PM

Bagaimana untuk melaksanakan algoritma Kruskal menggunakan Python? Pengenalan: Algoritma Kruskal ialah algoritma klasik untuk menyelesaikan pepohon rentang minimum, yang boleh mencari pepohon rentang dengan jumlah berat minimum dalam graf berwajaran yang disambungkan. Artikel ini akan memperkenalkan cara melaksanakan algoritma Kruskal menggunakan Python dan memberikan contoh kod terperinci. Pengenalan Algoritma: Idea asas algoritma Kruskal adalah untuk mengisih semua tepi dalam graf yang disambungkan mengikut beratnya, dan kemudian pilih tepi dari kecil ke besar Jika tepi semasa yang dipilih tidak membentuk kitaran, tambahkannya pokok rentang minimum.

See all articles