Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
481 / 9 / 6
Регистрация: 28.12.2011
Сообщений: 151
1

Новый алгоритм сжатия или будет ли сжимать?

13.04.2014, 16:17. Показов 1852. Ответов 3
Метки нет (Все метки)

Всем добрый день!

Все давно знают о архивации данных много что, в особенности, то что нельзя (результат нулевой) сжать сжатый и так файл.
Изучая поверхостно что делают все архиваторы, а именно методы шифрации, я понял, что их общий смысл таков: повторяющиеся символы заменять, затирать избыточную информацию символом или последовательностью...
Однажды ночью, я долго думал, как сжать мой плейлист музыки весом в 16гигабайт(в несжатом виде mp3), во много раз. (Скажем так мне этот плейлист очень дорог, я его собирал и собираю очень долго, тк тщательно отношусь к музыке, которую я слушаю. А так как он много весит(и вес увеличивается), то хранить его на флешке очень проблематично, даже в архивах, а текстовый файл с названием всех песен неудачный вариант(у меня может быть много эксклюзивных песен от любителей, которые в инете не сыщещ...))
То я решил придумать новый способ сжатия файлов, (уже на тот момент я догадывался, что известные способы сжатия мне не помогут), начал думать способ сжатия как замена "шила на мыло", которое можно будет разрезать на части, которые можно будет заменить еще на другое "мыло"...
И вот пришла некая мысль в сжатии... Мои знания в этом очень малы, и попытки сделать это были очень ОЧЕНЬ медленны и с сильными играничениями(максимум 100мб и тд)
И вот я хочу спросить вас знатаков, представляю на суд некую НЕДОРАБОТТАНУЮ идею сжатия данных. Хочу знать теоритически она может сжимать?
  1. Берем файл и открываем его в бинарном виде
  2. Переводим все в двоичный код
  3. Считываем код беря каждую первую цыфру из 5-ти, где первую цыфру мы шифруем так: Если она - '1', то пишем как - '!', если - '0', то ничего не пишем!
    (пример: 01010 10100 11111 - 1010 !0100 !1111)
  4. Берем первую цыфру из 4-ёх (пропуская '!'), и шифруем как '@' - если она '1'
    (пример: 1010 !0100 !1111 - @010 !100 !@111)
  5. Берем первую цыфру из 3-ёх (пропуская '!' '@'), и шифруем как '#' - если она '1'
    (пример: @010 !100 !@111 - @10 !#00 !@#11)
  6. Берем первую цыфру из 2-ух (пропуская '!' '@' '#'), и шифруем как '$' - если она '1'
    (пример: @10 !#00 !@#11 - @$0 !#0 !@#$1)
  7. Берем все комбинации "!@#$01" и переводим их в придуманную систему счисления (по 2 символа)
  8. Записываем все как txt файл, пихаем в 7zip (он хорошо сжимает txt), и снова по кругу пихаем еще раз!

В итоге получаем что из: 01010 10100 11111(15 символов) - @$0 !#0 !@#$1 (17 символов / 2 = 9 символов)(в придуманой СС)


Хочу сказать, что можно начинать не с 5 цыфр, а даже по 10 цыфр...(которое позволит лучше сжать) (это всеголишь пример)

Прошу оцените теорию сжатия, тк над таким работать очень долго, месяцы уйдут на шифрацию и дешифрацию(чтобы создать точный алгоритм действий).
Заранее благодарю!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2014, 16:17
Ответы с готовыми решениями:

Если сжимать любую материю - ее температура будет повышаться?
Если сжимать газ - его температура будет повышаться? А что если сжимать жидкость или твердое тело -...

Новый алгоритм или праздники?
Снежинск существенно на сайт не повлиял, малость были заметны положительные подвижки. С приходом...

Алгоритм сжатия
целочисленную таблицу из n-элементов переписать так, чтобы вместо одинаковых, идущих подряд...

Алгоритм сжатия LZ
Если у кого есть, поделитесь кодом, пожалуйста:-/

3
291 / 263 / 47
Регистрация: 09.04.2013
Сообщений: 999
14.04.2014, 08:25 2
Я так понимаю ты рассматриваешь двоичное представление, да ?
Вводя дополнительные знаки ты увеличиваешь базовую систему счисления с двух (0,1) до шести (0,1,!,@,#,$), что потребует примерно в 2,5 раза больше места для хранения одного символа.

Стремления в создании алгоритмов похвальны, но сжатие без потерь над данными в формате MP3 будет мало эффективно. К тому же ты наверняка носишь это на флешке чтобы послушать в любой момент, а самодельное кодирование только ухудшит ситуацию и добавит необходимость распаковывать куда-то перед прослушиванием.

MP3 не является форматом без сжатия. Может ты подразумевал сжатие в архиве?

Провел проверку - сжал файл с одинаковым битрейтом, но разными параметрами по качеству, полученное сжал архиватором RAR. MP3 файл который сжат с лучшим качеством впоследствии лучше сжимается в RAR - не могу точно утверждать, но осмелюсь предположить что в таком файле данные сжимаются более плотно, в результате чего большой битрейт будет более избыточен для хранения музыки.

Если уж сжимать - то не стоит изобретать велосипед, лучше использовать проверенные способы. Из альтернатив предлагаю проверить OGG, AAC, OPUS (если не ошибаюсь, именно в таком порядке возрастает качество кодеков).

Не по теме:

Храните файлы минимум в еще 1-2 местах, плюс хранение и проверка контрольной суммы для определения битых файлов. Как показывает практика флешка может быть ненадежным носителем, на моей памяти был случай когда при внешней работоспособности портились блоки данных внутри файлов



Добавлено через 38 минут
Цитата Сообщение от Xipxop Посмотреть сообщение
и с сильными играничениями(максимум 100мб и тд)
А где это вы наткнулись на ограничение в 100мб и остальные?

Кстати, для удобства можно брать блоки по 8 бит, и алфавит размером с блок, чтобы не было 0 и 1 в преобразованных данных.

А вы проводили исследование насколько лучше сжимается преобразованный файл в сравнении с сжатием исходного?
1
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
16.04.2014, 04:31 3
Цитата Сообщение от wingblack Посмотреть сообщение
Вводя дополнительные знаки ты увеличиваешь базовую систему счисления с двух (0,1) до шести (0,1,!,@,#,$)
Ничего что каждый из дополнительных символов кодируется тетрадой?
Xipxop, Множество {0, 1} есть минимальное. Если Вы будете настойчивы то может быть осилите теорию кодирования, и не путайте это с шифрацией. На русском литература старая, но есть. Больше в этой области на рассовом буржуйском есть информации.
Цитата Сообщение от Xipxop Посмотреть сообщение
Берем файл и открываем его в бинарном виде
Переводим все в двоичный код
Вы не обижайтесь, но такое мог написать только человек далекий от вычислительной техники. Любой файл всегда в двоичном виде. Вся информация там и так в двоичном коде.
Попробуйте bz2.
1
3171 / 1930 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.04.2014, 05:59 4
Лучший ответ Сообщение было отмечено Xipxop как решение

Решение

На русском: Всё о сжатии данных, изображений и видео

Ознакомьтесь, перед изобретением новых алгоритмов.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2014, 05:59

Какова температура газа будет после сжатия
Помогите пожалуйста решить! Углекислый газ, находящийся под давлением 0,1 МПа при температуре 12...

Алгоритм сжатия данных
Помогите пожалуйста, необходимо создать программное приложение сжатия данных алгоритмом LZ77

Алгоритм сжатия данных
подскажите алгоритм сжатия данных, чтобы был не очень сложный и в то же время эффективный

Алгоритм сжатия RLE
Здравствуйте, очень нужна помощь в задании! Просто очень срочно, пожалуйста! Написать программу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.