вот берем всё файлы размера n бит и менее без пустого. то есть получаем множество : "0", "1", "00", "01" итд вплоть до файла n байт целиком из единиц. теперь вводим функцию Х+ и обратную ей Х- такие что если подать на вход в Х+ элемент этого множества "а" мы получим рандомный но однозначно определенный элемент "b" т.е Х+("а")="b", и наоборот соответственно Х-("b")="а", также не должно быть ситуаций что Х+("с")="d" И Х+("e")="d" а также Х+("с")="с", ну то есть что-то похожее на модульную арифметику. теперь прикидываем, если мы возьмем некий файл самого большого размера n бит и прокрутим его разок, что мы можем получить в итоге? либо мы попадем в первую половину множества и просто получим другой файл размера n бит, либо мы попадем во вторую половину множества и получим файл хотя бы на бит меньше, т.е. вероятность 50%, следовательно в среднем за 2 прокрута мы получим файл меньше на бит. а дальше по аналогии, за 4 прокрута мы получим файл меньше на 2 бит, за 8 прокрутов 3 бита, за 16 4 бита итд. соотвественно за 2^m прокрутов мы в среднем можем(а на практике может и нет) получим уменьшение на m бит. мысли?