Комментарии 46
Это означает, что если мы найдем функцию (формулу, уравнение) которая породит эту последовательность нулей и единиц в нужном порядке, то вместо музыкального файла, который занимает определенное место, мы можем решить его уравнение с определенными начальными условиями, которое занимает пару байт и получить ту же композицию, видеоряд или документ просто «нагрузив» процессор.
Вы серьезно думаете, что музыкальный файл можно описать (чем угодно), записывающимся в пару байт? Я вас расстрою, но таким образом принципиально нельзя описать более 65536 файлов.
Вам слова "теорема Шеннона" о чем-нибудь говорят?
Я правильно понимаю, что вы "оптимистично настроены" опровергнуть теорему Шеннона?
Но подождите, теорема Шеннона (та, которая об источнике шифрования) говорит нам, что у каждых данных есть нижний порог сжатия, и он вычислим. Ваш подход предлагает сжатие сильнее, чем допустимое этим порогом, или нет?
а кто Вам сказал, что я собираюсь сжимать данные?
Вы. Вы сказали, что собираетесь представлять данные с помощью других данных, меньшего размера. Я неправильно вас понял?
Мой метод не подразумевает процесса сжатия как такового. Скорее больше похоже на адресацию.
Чтобы работала адресация, необходимо адресуемое пространство. Когда вы вместо файла передаете информацию о нем, нужно, чтобы получатель мог эту информацию проинтерпретировать. С точки зрения теоремы Шеннона, интерпретатор+переданная вами информация — это и есть сжатая информация.
Вы же не называете процессом сжатия кривой которую Вы описали с помощью регрессивного полиномиального анализа? Вы представили линию или точки как формулу.
Представление последовательности из 256 нулей последовательностью "256 0", где первый символ — число повторов второго — это и есть сжатие, к которому прилагается деархиватор, умеющий такие последовательности интерпретировать. С точки зрения алгоритма это ничем не отличается от вашей кривой.
На счет «последовательности из 256 нулей последовательностью „256 0“ я с Вами абсолютно согласен это процесс сжатия.
Я попрошу Вас рассказать мне его снова.
Для этого вам нужен я. Я — это больше терабайта, поэтому вы ничего не выиграли (а только потеряли).
но, не на моем винте
Тогда ваш метод сводится к "давайте вместо файлов передавать их адреса в интернете". Круто, но упирается в пропускную способность между вами и источником информации (а это прямо противоречит вашему тексту).
Вы просто задаете функции синус(х) вектор х.
… и теперь мне нужно что-то, что умеет генерить синусоиду.
Я могу ошибаться, но процессом сжатия в таком случае было бы сжатие терабайтного файла до какого-то размера.
Вы ошибаетесь. Нет никакой разницы — взять фрагмент и сказать "повторите фрагмент k раз", или взять генератор и сказать "дайте генератору вход k". Более того, первое сводимо ко второму.
… но, шмель об этом не знает и продолжает летать.
Я не говорю (пока), что они бессмысленны, я спрашиваю, как конкретно они соотносятся с теоремой Шеннона.
UPD: Ниже уже написали про это.
Тогда я предлагаю просто запустить вычисление числа π с точностью, стремящейся к бесконечности. И на каждом новом вычисленном промежутке искать последовательность байтов вашего файла. Как только вы её найдёте, вы сможете закодировать файл просто одним числом — смещением в π. (Кстати, есть файловая система с похожим принципом: https://github.com/philipl/pifs)
Как только вы её найдёте, вы сможете закодировать файл просто одним числом — смещением в π.
Ага, а длина этого "просто одного числа" какая будет?
Если вы этого не знали, то это проблемы ваши, а не шмеля — это совершенно точно.
Если вы пытаетесь обойти теорему Шеннона, то это проблемы ваши, а не Шеннона.
и я докажу Вам что это возможно
Вы бы сначала матчасть изучили, факты какие-нибудь поискали. Ну или хотя бы просто логически подумали над тем, что возможно не вы один до этого додумались, и значит есть какие-то причины, почему это не используется везде где только можно)
Чтобы задать уравнение, в точности повторяющее произвольную последовательность чисел, надо задать примерно столько же коэффициентов, сколько чисел в этой последовательности. В некоторых случаях можно задать меньше, если в последовательности есть повторяющиеся или похожие участки. Ваш пример с синусом — это ярко выраженный случай, значения повторяются в точности каждый период.
Кстати, можно задавать приближение не полиномами, а разложением в ряд синусов, это удобнее именно из-за их периодической природы. А еще можно приближать не точно, а примерно, выбрасывая малозначащие коэффициенты. И если применить это к изображениям, видео или музыке, то получаем JPEG / MPEG / MP3.
К тому же я поспорил с коллегами на пиво, что смогу превратить видеофайл в небольшое уравнение.
Собственно, для этого вам нужно понять как работает человеческий мозг, сделать вывод о всех возможных способах восприятия того или иного видео. Потом изобрести самый короткий язык. После чего совсем просто — пересказываете на самом коротком языке смысл видео со всеми его аспектами, которые может воспринять человеческий мозг. Вот и все.
Для декодирования вам нужно создать кластер из искусственных мозгов чтобы они по заданному сценарию воссоздали нужное видео, т.е. как бы отсняли фильм заново.
Вот и все. Ведь важно не само видео — важно то что мы ощущаем, когда его смотрим. Повторите ощущения, саму суть — и не имеет значения насколько точно вы передали мелочи.
Грубо говоря задача сводится к качественному конвертору файлов mp4->txt->mp4
Но главное, ведь не ощущения, а то, как мы себя чувствуем после них, то есть пережитое. И человеку важно это самое «послевкусие». Ведь думая о простмотренном фильме мы в первую очередь вспоминаем, понравился он нам или нет и лишь затем концентрируемся на особенностях и деталях сюжета, актерах и игре.
По описанию подхода чем-то похоже. Интересно будет посмотреть, когда и если будет что-нибудь действующее (и не мистификация).
Не отрицаю, передавая такие данные как часто встречаемые последовательности и функции и реализуя их в аппаратуре и библиотеке можно снизить размер передаваемого от сервера к клиенту информации. Но это же давно известно… Пример — тот же e-tag в http. Зная как сравнивать e-tag можно сэкономить передачу закэшированного объекта, передавая только заголовки(которые меньше по размеру).
З.Ы. И да, архиваторы с внешними универсальными таблицами вполне себе вымерли как класс.
Забавно, что никто не учитывает объем который займет такая формула. А он может быть куда больше чем сама закодированная информация. А еще такая формула будет уникальна для каждого произведения...
Ну давайте попробуем рассмотреть некий очень частный вырожденный случай…
Итак, закодируем фразу "Мама мыла раму" в виде последовательности функций которые из пустой строки "" сделают нам эту фразу:
"".Append("Мама")
.Append(env.Whitespace)
.Append("мыла")
.Append(env.Whitespace)
.Append("раму")
В принципе если рассуждать в терминах выполнимости — да, это выполнимо, до какой-то степени. В терминах эффективности — не эффективно.
С переходом от примитивных к более сложным функциям — объем кода уменьшится, вычислительная сложность увеличится.
В какой-то момент вы достигнете некоего предела сложности и у вас получится вариация свертки — алгоритм компрессии. Потом вы обнаружите что разные алгоритмы дают разные результаты на разных наборах данных, начнете использовать их комбинации и придумаете какой-нибудь кодек для определенного типа данных.
Поздравляю, вы выиграли пиво.
Ключ к информационной революции