АЛГОРИТМ ШЕННОНА ФАНО PYTHON

Алгоритм Шеннона-Фано - это алгоритм сжатия данных, предложенный в 1948 году Клодом Шенноном и Робертом Фано. Он основан на принципе разделения множества символов на две группы, которые имеют схожую частоту появления в исходном тексте. Рекурсивное применение этого принципа позволяет получить оптимальный код для сжатия данных.

Алгоритм Шеннона-Фано может быть реализован на языке Python следующим образом:

def build_tree(symbols): if len(symbols) == 1: return (symbols[0], None, None) freqs = [symbol[1] for symbol in symbols] mid = len(freqs) // 2 left = build_tree([(symbols[i][0], freqs[i]) for i in range(mid)]) right = build_tree([(symbols[i][0], freqs[i]) for i in range(mid, len(symbols))]) return (None, left, right) def assign_codes(node, code): if node[0]: codes[node[0]] = code else: assign_codes(node[1], code + '0') assign_codes(node[2], code + '1') def encode(text): freqs = {} for char in text: if char in freqs: freqs[char] += 1 else: freqs[char] = 1 symbols = [(char, freqs[char]) for char in freqs] symbols.sort(key=lambda x: -x[1]) assign_codes(build_tree(symbols), '') result = '' for char in text: result += codes[char] return resultdef decode(encoded): node = tree result = '' for bit in encoded: if not node[0]: node = node[int(bit) + 1] if node[0]: result += node[0] node = tree return result

Этот код реализует алгоритм сжатия данных с использованием кодов Шеннона-Фано. Он состоит из трех основных функций:

Como Utilizar uma Função (Function) em Python

Метод Шеннона-Фано

Shannon Fano

Curso de Python para iniciantes #12 - Manipulando Arquivos

UBUNTU MORREU?

PYTHON EM 6 MINUTOS: Tudo Que Você Precisa saber!

Method Chaining em Python (Encadeamento de métodos)

Код Шеннона-Фано

Como Transformar Arquivo Python em Executável - [Arquivo Executável]

Алгоритм кодирования Шеннона-Фано простым и понятным языком. Генератор отчёта на Python

BLGPG-660F69454E78-24-11-24-00

Новые материалы: