О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 07:34
Оценка: 9 (1)
Мне всегда казалось интуитивно очевидным, что невозможно написать архиватор, который сжимает ВСЁ. Но оказалось, что это убеждение разделяют не все . И пришлось мне, некоторое время назад, быстренько доказать следующее:

Для простоты будем рассматривать сжатие последовательностей из 0 и 1. Сжатием назовем отображение последовательности на другую, так чтобы на одну последовательность не отображалось две разные (иначе нельзя однозначно разархивировать).

Суммарным коэфициентом сжатия (СКС) назовем отношение сумм длин сжатых последовательностей к сумме длин исходных.

Так вот, докажите, что, если в качестве исходного множества взять все последовательности 0 и 1 длиной меньше или равной N, то СКС >= 1.

Отсюда, в частности, следует, что если от вас требуют написать архиватор, который сжимет ВСЁ, то лучшим решением будет оставить все как есть .
Re: О невозможности универсального архиватора
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 06.03.03 07:43
Оценка:
Здравствуйте, MichaelP, Вы писали:

[]

MP>Отсюда, в частности, следует, что если от вас требуют написать архиватор, который сжимет ВСЁ, то лучшим решением будет оставить все как есть .


Дык... Коэффициент сжатия — 0.
Re: О невозможности универсального архиватора
От: mrhru Россия  
Дата: 06.03.03 07:46
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Отсюда, в частности, следует, что если от вас требуют написать архиватор, который сжимет ВСЁ, то лучшим решением будет оставить все как есть .


Из "все последовательности 0 и 1 длиной меньше или равной N"

следует, что такие последовательности образуют полное множество, непредставимое множеством меньшей мощности, а из

"Сжатием назовем отображение последовательности на другую, так чтобы на одну последовательность не отображалось две разные"

следует, что сжать, в указанном смысле, исходное множество нельзя.

Может кто помнит историю с пари на $5000 на создание архиватора? В журнале Компьтерра описывалась?
Евгений
Re[2]: О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 07:52
Оценка:
Здравствуйте, mrhru, Вы писали:

M>Из "все последовательности 0 и 1 длиной меньше или равной N"


M>следует, что такие последовательности образуют полное множество, непредставимое множеством меньшей мощности, а из


M>"Сжатием назовем отображение последовательности на другую, так чтобы на одну последовательность не отображалось две разные"


M>следует, что сжать, в указанном смысле, исходное множество нельзя.


Я где-нибудь утверждал, что отображать надо на ТО ЖЕ множество?
Re[3]: О невозможности универсального архиватора
От: mrhru Россия  
Дата: 06.03.03 08:06
Оценка:
Здравствуйте, MichaelP, Вы писали:

MP>Здравствуйте, mrhru, Вы писали:


M>>Из "все последовательности 0 и 1 длиной меньше или равной N"


M>>следует, что такие последовательности образуют полное множество, непредставимое множеством меньшей мощности, а из


M>>"Сжатием назовем отображение последовательности на другую, так чтобы на одну последовательность не отображалось две разные"


M>>следует, что сжать, в указанном смысле, исходное множество нельзя.


MP>Я где-нибудь утверждал, что отображать надо на ТО ЖЕ множество?


Да я ТОЖЕ такое не утверждал.
Евгений
Re[2]: О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 08:18
Оценка:
Здравствуйте, mrhru, Вы писали:

M>Здравствуйте, MichaelP, Вы писали:


MP>>Отсюда, в частности, следует, что если от вас требуют написать архиватор, который сжимет ВСЁ, то лучшим решением будет оставить все как есть .


M>Из "все последовательности 0 и 1 длиной меньше или равной N"


M>следует, что такие последовательности образуют полное множество, непредставимое множеством меньшей мощности, а из


Понятие мощности множества несколько отличается от "суммы длин последовательностей" , но направление мысли правильное.

M>Может кто помнит историю с пари на $5000 на создание архиватора? В журнале Компьтерра описывалась?


Если это то, о чем я думаю — там воспользовались лазейкой в условиях конкурса и загоняли дополнительную информацию в имена и другие атрибуты файлов. В итоге, формально, суммарная длина файлов всегда была меньше исходной.
Re: О невозможности универсального архиватора
От: Pushkin Россия www.linkbit.com
Дата: 06.03.03 08:26
Оценка: 18 (1)
Здравствуйте, MichaelP, Вы писали:

MP>Для простоты будем рассматривать сжатие последовательностей из 0 и 1. Сжатием назовем отображение последовательности на другую, так чтобы на одну последовательность не отображалось две разные (иначе нельзя однозначно разархивировать).

MP>Суммарным коэфициентом сжатия (СКС) назовем отношение сумм длин сжатых последовательностей к сумме длин исходных.

MP>Так вот, докажите, что, если в качестве исходного множества взять все последовательности 0 и 1 длиной меньше или равной N, то СКС >= 1.


Если множество всех последовательностей L<=N отображается само на себя, то суммарная длина очевидно не меняется.

Если некоторые последовательности отображаются из L<=N в L>N, то очевидно в множестве L<=N возникает ровно столько же дыр, куда ничего не отобразилось (число элементов-то не изменилось).

Для каждой пары электрон-дырка суммарная длина получила некоторую положительную прибавку.
Re[3]: О невозможности универсального архиватора
От: mrhru Россия  
Дата: 06.03.03 08:31
Оценка:
Здравствуйте, MichaelP, Вы писали:


M>>Может кто помнит историю с пари на $5000 на создание архиватора? В журнале Компьтерра описывалась?


MP>Если это то, о чем я думаю — там воспользовались лазейкой в условиях конкурса и загоняли дополнительную информацию в имена и другие атрибуты файлов. В итоге, формально, суммарная длина файлов всегда была меньше исходной.


Там была лазейка с возможность разбиения архива на части. При архивировании, исходный файл разбивался по границам байтов с определенным значением, например 0x00. Такие байты просто выбрасывались. В результате длина архива, как сумма его составляющих, получалась короче на ~1/256.
Евгений
Re[2]: О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 08:48
Оценка:
Здравствуйте, Pushkin, Вы писали:


P>Если множество всех последовательностей L<=N отображается само на себя, то суммарная длина очевидно не меняется.


P>Если некоторые последовательности отображаются из L<=N в L>N, то очевидно в множестве L<=N возникает ровно столько же дыр, куда ничего не отобразилось (число элементов-то не изменилось).


P>Для каждой пары электрон-дырка суммарная длина получила некоторую положительную прибавку.


Вот и я также доказал!
Re: Встречный вопрос :)
От: DjAndy Россия  
Дата: 06.03.03 08:53
Оценка:
Появился несколько другой вопрос:
Существует ли такая последовательность из 0 и 1 длиной N, такая, что в ней не существует 2 равных непересекающихся подпоследовательностей длиной M? Очевидно, что при M = 1 и длине N > 2 это уже не верно, но гораздо интереснее выяснить максимально возможное M для любого N. Если выяснится, что M неограничено растёт при увеличении N, то можно найти такое N, для которого существует универсальный архиватор действующий просто — находящий последовательности M и заменяющий одну из них информацией о её длине, местоположении и местоположении первой последовательности Если же это не возможно, то значит есть предел для M, чему он тогда равен?
Re[2]: Встречный вопрос :)
От: mrhru Россия  
Дата: 06.03.03 09:01
Оценка:
Здравствуйте, DjAndy, Вы писали:

DA>Появился несколько другой вопрос:

DA>Существует ли такая последовательность из 0 и 1 длиной N, такая, что в ней не существует 2 равных непересекающихся подпоследовательностей длиной M? Очевидно, что при M = 1 и длине N > 2 это уже не верно, но гораздо интереснее выяснить максимально возможное M для любого N. Если выяснится, что M неограничено растёт при увеличении N, то можно найти такое N, для которого существует универсальный архиватор действующий просто — находящий последовательности M и заменяющий одну из них информацией о её длине, местоположении и местоположении первой последовательности Если же это не возможно, то значит есть предел для M, чему он тогда равен?

M = log2(N)
Евгений
Re: О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 09:11
Оценка: 18 (1)
MP>Для простоты будем рассматривать сжатие последовательностей из 0 и 1. Сжатием назовем отображение последовательности на другую, так чтобы на одну последовательность не отображалось две разные (иначе нельзя однозначно разархивировать).

MP>Суммарным коэфициентом сжатия (СКС) назовем отношение сумм длин сжатых последовательностей к сумме длин исходных.


MP>Так вот, докажите, что, если в качестве исходного множества взять все последовательности 0 и 1 длиной меньше или равной N, то СКС >= 1.


А теперь, когда доказательство найдено, имхо, более сложный вопрос:

Назовем последовательность сжатой, если в результате отображения ее длина уменьшилась. Соответственно несжатой будем считать ту, у котрой длина увеличилась или осталась той же.

Доказать, что при тех же условиях, что и в предыдущей задаче, количество несжатых последовательностей всегда больше чем сжатых.
Re[3]: Встречный вопрос :)
От: DjAndy Россия  
Дата: 06.03.03 09:40
Оценка:
M = log2(N)

Конечно логично, тогда информация о местоположении последовательности будет занимать как раз M бит. Но откуда следует эта формула?
Re[2]: О невозможности универсального архиватора
От: Pushkin Россия www.linkbit.com
Дата: 06.03.03 09:41
Оценка: 18 (1)
Здравствуйте, MichaelP, Вы писали:

MP>Назовем последовательность сжатой, если в результате отображения ее длина уменьшилась. Соответственно несжатой будем считать ту, у котрой длина увеличилась или осталась той же.


MP>Доказать, что при тех же условиях, что и в предыдущей задаче, количество несжатых последовательностей всегда больше чем сжатых.


Множества вложены друг в друга {L<=N-1} + {L=N} = {L<=N}
Если какие-то точки из множества L=N сжались, т.е. отобразились в L<=N-1,
то ровно столько точек в множестве L<=N-1 уже стало занято для перехода точек из этого множества.
Поэтому по крайней мере столько же точек выйдет из множества L<=N-1, т.е. будут несжаты.
Таким образом имеем, что число несжатых последовательностей не меньше числа сжатых.
Но сушествуют последовательности, которые не могут быть сжаты по определению — {0} и {1}.
Поэтому нестрогое неравенство заменяется на строгое.
Re: О невозможности универсального архиватора
От: Кодт Россия  
Дата: 06.03.03 10:06
Оценка: 14 (1)
Здравствуйте, MichaelP, Вы писали:

MP>Суммарным коэфициентом сжатия (СКС) назовем отношение сумм длин сжатых последовательностей к сумме длин исходных.


MP>Так вот, докажите, что, если в качестве исходного множества взять все последовательности 0 и 1 длиной меньше или равной N, то СКС >= 1.


MP>Отсюда, в частности, следует, что если от вас требуют написать архиватор, который сжимет ВСЁ, то лучшим решением будет оставить все как есть .


Пусть априорно известны вероятности подпоследовательностей длины K (например, 8 -- т.е. частоты различных байт-символов), и эти вероятности не равны.
Тогда, как показал Хаффман, элементарно строится код, дающий мат.ожидание СКС <= 1.

В общем, заводя разговоры про сжатие, нужно быть очень аккуратным с вероятностями.
Простая сумма длин всех входных против всех выходных — соответствует мат.ожиданию при равномерном распределении.
Перекуём баги на фичи!
Re[2]: О невозможности универсального архиватора
От: mrhru Россия  
Дата: 06.03.03 10:30
Оценка:
Здравствуйте, Кодт, Вы писали:

...

К>Пусть априорно известны вероятности подпоследовательностей длины K (например, 8 -- т.е. частоты различных байт-символов), и эти вероятности не равны.

К>Тогда, как показал Хаффман, элементарно строится код, дающий мат.ожидание СКС <= 1.

К>В общем, заводя разговоры про сжатие, нужно быть очень аккуратным с вероятностями.

К>Простая сумма длин всех входных против всех выходных — соответствует мат.ожиданию при равномерном распределении.

Гм...

Творчески развивая эту мысль , приходим к следующему:

Мы знаем, что нам надо архивировать все последовательности длиной меньше или равной N...

Евгений
Re[3]: О невозможности универсального архиватора
От: Кодт Россия  
Дата: 06.03.03 10:54
Оценка:
Здравствуйте, mrhru, Вы писали:

M>Творчески развивая эту мысль , приходим к следующему:


M>Мы знаем, что нам надо архивировать все последовательности длиной меньше или равной N...


Какая разница, что все? Вероятности-то разные!

Например, из 20кбайтных блоков — 30% это вирусы десятка разновидностей. Их можно кодировать 1 байтом (а благодарный дайлапщик сам уже у себя запустит вирус из локального архива).
Перекуём баги на фичи!
Re[4]: О невозможности универсального архиватора
От: mrhru Россия  
Дата: 06.03.03 11:06
Оценка:
Здравствуйте, Кодт, Вы писали:

M>>Творчески развивая эту мысль , приходим к следующему:


M>>Мы знаем, что нам надо архивировать все последовательности длиной меньше или равной N...


К>Какая разница, что все? Вероятности-то разные!


К>Например, из 20кбайтных блоков — 30% это вирусы десятка разновидностей. Их можно кодировать 1 байтом (а благодарный дайлапщик сам уже у себя запустит вирус из локального архива).




Это понятно.

Вопрос был, если я всё правильно напутал, такой: если упаковать все последовательности длиной меньше или равной N, то какова будет общая длина архива. Полагалось, то не меньше суммы длин всех пакуемых последовательностей.

Но, "все последовательности длиной меньше или равной N" однозначно задаются только лишь числом N. Поэтому, будет достаточно в качестве результата архивации и использовать само число N. Всё.
Евгений
Re[2]: О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 11:31
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Пусть априорно известны вероятности подпоследовательностей длины K (например, 8 -- т.е. частоты различных байт-символов), и эти вероятности не равны.

К>Тогда, как показал Хаффман, элементарно строится код, дающий мат.ожидание СКС <= 1.

Ссылка на Хафмана здесь не совсем уместна. Например, если возьмем блок длины 1, то Хафманом мы текст никогда не упакуем. Более того, теорему о том, что, при длине сообщения стремящейся к бесконечности, можно длину кода сколь угодно близко приблизить к энтропии сообщения, доказал, если мне не изменяет память, Шеннон. И доказательство очень непростое. Кстати, насколько я помню, один из вариантов доказательства приводит, по сути дела, к идее арифметичиского кодирования.

А в остальном все верно.

К>В общем, заводя разговоры про сжатие, нужно быть очень аккуратным с вероятностями.

К>Простая сумма длин всех входных против всех выходных — соответствует мат.ожиданию при равномерном распределении.

Я же возражал не против упаковки, а против упаковки ВСЕГО. То, что вопрос актуален, гворит то, что даже в этой ветке есть попытки
Автор: DjAndy
Дата: 06.03.03
придумать такой архиватор.
Re[3]: О невозможности универсального архиватора
От: MichaelP  
Дата: 06.03.03 11:38
Оценка:
Здравствуйте, Pushkin, Вы писали:

P>Множества вложены друг в друга {L<=N-1} + {L=N} = {L<=N}

P>Если какие-то точки из множества L=N сжались, т.е. отобразились в L<=N-1,
P>то ровно столько точек в множестве L<=N-1 уже стало занято для перехода точек из этого множества.
P>Поэтому по крайней мере столько же точек выйдет из множества L<=N-1, т.е. будут несжаты.
P>Таким образом имеем, что число несжатых последовательностей не меньше числа сжатых.
P>Но сушествуют последовательности, которые не могут быть сжаты по определению — {0} и {1}.
P>Поэтому нестрогое неравенство заменяется на строгое.

У меня самого было аналогичное, но несколько более громоздкое.

И отдельное спасибо за то, что ты один из немногих, кто не отвечал вопросом на вопрос .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.