Comment implémenter l'algorithme de codage de Huffman en utilisant Python ?
Résumé :
Le codage Huffman est un algorithme de compression de données classique qui permet un stockage de compression efficace des données en générant un code unique basé sur la fréquence des occurrences de caractères. Cet article expliquera comment utiliser Python pour implémenter l'algorithme de codage de Huffman et fournira des exemples de code spécifiques.
Bouclez les opérations suivantes jusqu'à ce qu'il ne reste qu'un seul nœud dans la file d'attente :
Voici l'exemple de code :
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)
Ce qui suit est un exemple de code dans le dictionnaire d'encodage :
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
Ce qui suit est un exemple de code pour compresser et décompresser des données :
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
Résumé :
Cet article présente comment implémenter l'algorithme de codage de Huffman à l'aide de Python. Les principales étapes comprennent la création d'arbres de Huffman, la génération de tables de codage de Huffman et la compression et décompression des données. Nous espérons que l'introduction et les exemples de code de cet article pourront aider les lecteurs à mieux comprendre et appliquer l'algorithme de codage de Huffman.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!