Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба Сжатие с потерями - 4 сем АИСД

.pdf
Скачиваний:
0
Добавлен:
08.07.2025
Размер:
53.69 Mб
Скачать

new = HuffmanNode(None, left.freq + right.freq, left, right) heapq.heappush(heap, new)

root = heap[0] codes = {}

def traverse(node, code=""): if node.value is not None:

codes[node.value] = code else:

traverse(node.left, code + "0") traverse(node.right, code + "1")

traverse(root) return codes

def encode_with_huffman(data_list, huffman_table): data_list = flatten(data_list)

return ''.join(huffman_table[item] for item in data_list)

def decode_huffman(encoded_str, huffman_table): reverse_table = {v: k for k, v in huffman_table.items()} result = []

code = ""

for bit in encoded_str: code += bit

if code in reverse_table: result.append(reverse_table[code]) code = ""

return result

51