私の課題では、ハフマン ツリーのエンコードとデコードを行います。ツリーの作成に問題があり、立ち往生しています。
print ステートメントは気にしないでください。関数を実行したときの出力をテストして確認するためのものです。
最初の for ループでは、テスト用にメイン ブロックで使用したテキスト ファイルからすべての値とインデックスを取得しました。
2 番目の for ループでは、すべてのものを優先キューに挿入しました。
次はどこに行けばいいのか、とても行き詰っています。私がこれを正しく行っているかどうか誰かに教えてもらえますか?
def _create_code(self, frequencies):
'''(HuffmanCoder, sequence(int)) -> NoneType
iterate over index into the sequence keeping it 256 elements long, '''
#fix docstring
p = PriorityQueue()
print frequencies
index = 0
for value in frequencies:
if value != 0:
print value #priority
print index #elm
print '-----------'
index = index + 1
for i in range(len(frequencies)):
if frequencies[i] != 0:
p.insert(i, frequencies[i])
print i,frequencies[i]
if p.is_empty():
a = p.get_min()
b = p.get_min()
n1 = self.HuffmanNode(None, None, a)
n2 = self.HuffmanNode(None, None, b)
print a, b, n1, n2
while not p.is_empty():
p.get_min()
ツリーを開始するために最初の 2 つを手動で挿入しましたが、正しいですか?
どうすれば続けられますか?私はその考えを知っていますが、コードに関しては非常に行き詰まっています。
ちなみに、これはpythonを使用しています。ウィキペディアを調べてみました。手順はわかっています。コードと続行方法についてのヘルプが必要です。ありがとう!
HuffmanNode は、次のネストされたクラスから取得されます。
class HuffmanNode(object):
def __init__(self, left=None, right=None, root=None):
self.left = left
self.right = right
self.root = root