С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
...I'm back
32. Arkanoid
Идет только на LENINGRAD-2012 !
Сайт про Arkanoid
Музыка в формате AY
Музыка в формате MP3
Последний раз редактировалось zx-kit; 14.08.2012 в 20:42.
"L-256"
А игры PSST! нет еще с быстрой загрузкой?
ZX Evo r.C Leningrad-2012 Pentagon 1024SL 2.2 ZXM Phoenix r.4 Speccy 2010 Байт Дельта-С МК-161 MaxiMite
ТУРБО-загрузка тоже быстрая, но без контроллеров и дисководов.
33. IK+ (International Karate+)
Музыка в формате AY
Музыка в формате MP3
"L-256"
Единички в два раза длиннее нулей.
Допустим, мы берём по 3 бита и перекодируем так:
000 -> 0000 (4T)
001 -> 0001 (5T)
010 -> 001 (4T)
011 -> 010 (4T)
100 -> 011 (5T)
101 -> 100 (4T)
110 -> 101 (5T)
111 -> 11 (4T)
5*4T, 3*5T
В среднем получается 4.375T (вместо 4.5T) - выигрыш 2.8%.
Вот один из вариантов для 4 битов:
0000 -> 00000 (5T)
0001 -> 00001 (6T)
0010 -> 00010 (6T)
0011 -> 00011 (7T)
0100 -> 00100 (6T)
0101 -> 00101 (7T)
0110 -> 0011 (6T)
0111 -> 0100 (5T)
1000 -> 0101 (6T)
1001 -> 0110 (6T)
1010 -> 0111 (7T)
1011 -> 1000 (5T)
1100 -> 1001 (6T)
1101 -> 101 (5T)
1110 -> 110 (5T)
1111 -> 111 (6T)
В среднем получается 5.875T (вместо 6T) - выигрыш 2.1%. Это ровно то же самое, как если бы мы кодировали 3 бита по предыдущему дереву, а один бит оставляли как есть.
Общий принцип - перекидывание пар листьев длиной выше средней на место коротких листьев.
Для 5 битов в среднем получается 7.25Т (вместо 7.5Т) - выигрыш 3.3% (перебрасывается 5 пар листьев, общий выигрыш 8T/8).
Интересно, что для 8 битов выигрыш всего 1.8% (перебрасывается 49 пар листьев, общий выигрыш 56T/256), то есть выгоднее кодировать как 3 бита + 5 битов, тогда в среднем получается 11.625T (вместо 12Т) - выигрыш 3.1%.
Самое оптимальное дерево для 8 битов строится от корня по принципу золотого сечения (158 "0", 98 "1" и т.д.), в среднем 2974/256~11.617T - выигрыш 3.2%.
Теоретический предел выигрыша (если вариантов на нули ровно вдвое больше, чем вариантов на единицы): 1 - (2*log3(n))/(1.5*log2(n)) = 1 - 4/3*log3(2) = 0.158760329...
Но я не представляю, как его достичь без арифметического кодирования.
Shiru сортировал байты в исходном файле по частоте и заменял их по таблице - самые частые на самые быстрые.
А вообще лучше использовать MFM и ничего не перекодировать.
Последний раз редактировалось alone; 20.08.2012 в 12:22.
"L-256"
35. After the War
"L-256"
"L-256"
Эту тему просматривают: 6 (пользователей: 0 , гостей: 6)