-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A huffman code length generator is available #1
Comments
Awesome!!! I'll be honest I never understood how Mark Adler's enough tool worked :'( |
A very interesting graph. It seems node "33022" contributes 128 to the table_size. 33022->16510->8254->4126->2062->1030->514->256 where node 256 is where the root_bits prefix changes. |
Exactly. And node "33024" contributes another 128 to the table size. It took me days to understand enough.c. It requires mental gymnastics :-) |
LiveOverflow just discovered a 542 sized table :O !!! |
There must be a bug in my code. I will figure it out. Meanwhile, I realized that a big table size does not always lead to big overflow. Trying to figure out this too. |
no worries mate. The 538 table is good because it can be visualized in tree view and the tree isnt too wide. |
Actually the 542 table was found by brute forcing the values above the root_bits. |
Glad to have the bug fixed by removing an unnecessary searching restriction. It was a logical error. Now "NotEnough" tool could produce about 100 distinct solutions with table_size=542. The repo was updated accordingly. |
Thanks so much :) !!!! |
Also, how did u prune the tree. I tried this but it doesnt look as nice.
|
hmmm i think i have to iterate in level order :S |
|
Thank you :) !!!! |
Hello,
Thanks for providing the powerful craft.c and print_tree.c. Here I developed a tool to discover a set of bad code_lengths by modifying zlib's enough.c. I call it NotEnough. For 410 limit of the last huffman table, this tool can break the memory usage to 538.
Please take a look. Here is the link:
NotEnough
The text was updated successfully, but these errors were encountered: