Trieちゃんと使ったので、それなりの速度になりました。100MBくらいのテキストが40MBくらいまで縮んだかと思えば、2.8MBのテキストが2.6MBにしかならなかったりと圧縮したいテキストの性質によって圧縮率が全然違う感じでした。WEB+DB PRESS Vol.54によると、LZ78方式符号化はXMLのような文章では強いらしい。 #!/opt/local/bin/ruby1.9 # -*- coding: utf-8 -*- require 'pp' module Trie class Node attr_accessor :sym, :code def initialize(code) @code = code # 番号 @sym = Hash.new end def insert_child(sym, code) @sym[sym] = Trie::Node.new(code)
![LZ78方式符号化をRubyで実装、を改良 - yasuhisa's blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/774f5951cf62ea781baa431ced6f1ab42b260eae/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51BI%2BoUtJCL.jpg)