Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сжатие функциональных зависимостей 
:(
    Опции темы
ksili
Дата 30.5.2006, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



Кто-нибудь знает архиваторы, которые при сжатии учитывают (и потому хорошо сжимают) последовательности, члены которых подчиняются какой-нибудь функциональной зависимости?
Например, есть ряд 
Код

1 4 9 16 25 36 49 64 81 100          (квадраты)

или ряд
Код

1 2 3 4 5 6 7 8 9 10          (арифметическая прогрессия)

а архиватор эту зависимость распознает и сожмёт первый ряд до начального элемента и идентификатора зависимости (в данном случае y=x*x), второй ряд до начального элемента и разности прогресии (допустим так)


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
esperant0
Дата 30.5.2006, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Все, все ряды подчиняются какой нибудь функциональной последовательности.

А самым идеальным архиватором не увеличивающим длину входных данных является ф-я сору, это и есть ответ на ваш вопрос 


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
ksili
Дата 31.5.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



esperant0, речь идёт об архиваторах уменьшающих длину входных данных, а не "неувеличиващих". И я не спрашиваю об идеальных архиваторах (что значит "идеальный"?) - назови мне хоть один архиватор, использующий описанный подход. 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
skyboy
Дата 31.5.2006, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



ksili, как ты себе представляешь процесс сжатия? О! Ты аппроксимируй значения, считая что значения х возрастают и равны позиции элемента, а значением у будет твоя последовательность. И запоминай в коде только значения коэффициентов полинома. А касательно "идентификатора зависимости" - это типа таблица должна быть:
идентификатор описание
           1                арифметическая прогрессия с шагом 0,5
           2                геометрическая прогрессия с шагом 0,7
           3                х в степени 0,23 + номер элемента * 12
Так? И тягать за собой таблицу из безконечного количества элементов? 
PM MAIL   Вверх
ksili
Дата 31.5.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



не так. Таблица допустим такая:
1       арифметическая прогрессия
2       геометрическая прогрессия
3       степенная функция

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

Тут кстати ты противоречил самому себе, говоря про "таблицу из безконечного количества элементов". То есть конечно можно сказать, что любой ряд подиняется известной нам функциональной зависимости, но тогда придётся держать в уме бесконечное число описаний этих самых зависимостей. А такое мягко говоря нереально. 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Akina
Дата 31.5.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Попробуй родить алгоритм аппроксимации, работающий быстрее алгоритма сжатия - вот тебе и ответ на вопрос.

Архиватор ОБЩЕГО назначения никогда такой фигней маяться не будет. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 31.5.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Akina, после аппроксимирования восстановить данные будет невозможно.
ksili, а как быть с комбинацией (степенная функция от геометрической прогрессии, например) и как определять столь сложные взаимосвязи? И в чём я себе противоречил, так я и не понял. Описанных и названный функциональных зависимостей хоть и много, но не бесконечно. Бесконечных является разного рода суперпозиция этих зависимостей, дающая новую "модель поведения" для ряда... Да и как опредлить, что наш ряд - это целые части членов степенного ряда y=2.3^(0.2*x)? Не думаю, что подобный анализатор-архиватор создать реально... Вот использование того же полинома Лангранжа или другого метода интерполяции - ещё куда ни шло... 
PM MAIL   Вверх
ksili
Дата 31.5.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



Спасибо, за ответы. 

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

Согласен, что аппроксимация не подойдёт - меня интересует прежде всего сжатие без потерь информации 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
skyboy
Дата 31.5.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



ksili, если не военная тайна, а зачем столь хитрый подход к сжатию? Почему бы не использовать статистические или словарные алгоритмы сжатия?  

Это сообщение отредактировал(а) skyboy - 31.5.2006, 12:18
PM MAIL   Вверх
ksili
Дата 31.5.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



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

Я уже сочинил алгоритм и написал прогу в Матлабе. Получились интересные результаты именно когда сжимается какой-нибудь функциональный ряд. При этом никакого анализатора нет. Сжатие происходит по одному шаблону для любой функциональной зависимости. просто от сложности этой самой зависимости зависит насколько хорошо можно её сжать (лучше всего жмётся понятно дело линейная).
Вот мне и стало интересно, а не изобрёл ли я велосипед 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
maxim1000
Дата 31.5.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



обычно, пытаются архивировать зависимости в более широком смысле - не x(n+1)=f(x(n))
пример - спектр, используется в Jpeg
если ему подать гармонический сигнал - по идее, должен сжать очень хорошо
GIF расчитан на хорошее сжатие последовательностей типа x(n+1)=x(n) smile
различные компрессоры для речевых сигналов расчитаны на сжатие авторегрессионных последовательностей x(n+1)=a*x(n)+b*x(n-1)+...
так что если сузить область применения, то можно найти класс зависимостей, которые хорошо аппроксимируют большое количество сигналов из этой области

касательно аппроксимации и сжатия без потерь
понятия это совсем не противоречивые
архиватор без потерь можно построить по такой схеме:
1. аппроксимация сигнала какой-то моделью (чтобы её параметры занимали значительно меньше места)
2. сохранение ошибки
так вот, если аппроксимация удачна, ошибка будет представлена очень маленькими данными, и к ним уже можно будет применять что-нибудь типа Хаффмана/арифметического кодирования

Jpeg в режиме без потерь поступает по-другому: он строит модель изображения, точно его приближающую, а потом её архивирует энтропийными методами
(но там проблема в том, что точная модель имеет дело с действительными числами и всё равно получаются потери з-за вычислений) 


--------------------
qqq
PM WWW   Вверх
ksili
Дата 31.5.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 2
Всего: 17



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


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
nostromo
Дата 31.5.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 23.3.2006

Репутация: 5
Всего: 10



ksili, здесь я полностью согласен с esperant0 --- понятие архиватора существует только при условии, что вы что-то знаете об избыточности данных, с которыми работаете. Даже "архиваторы общего назначения" называются так, потому что рассчитаны на тот хлам, что обычно хранится у большинства пользователей, а не потому, что могут сжать все, что угодно (не могут они этого).

Поэтому вопрос о целесообразности применения тех или иных методов сжатия можно рассматривать только в контексте определенного типа данных, в противном случае все это будет из разряда поиска философского камня.  
--------------------
На пыльных тропинках далеких планет останутся наши следы.
PM MAIL   Вверх
Akina
Дата 31.5.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Может, еще посмотреть на принцип кодирования видеопотока, где берется базовый кадр и гонятся его изменения, по объему гораздо мЕньшие? В принципе для блочных данных это может давать значительный выигрыш. По сути то же деление на базовую аппроксимацию и отклонение... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
esperant0
Дата 31.5.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



ksili,  послушайте мнение бывшего аспиранта.

обясняю все последовательно.

Утверждение 1:

Любая последовательность чисел подчиняеться какой нибудь функциональной зависимости( причем не одной а бесконечному числу).
( например тот же полином проходящий через точки (1,х1) (2,х2) (3,х3)  и тп.

Утверждение 2: Не существует алгоритма сжимающего хоть чуть чуть ЛЮБУЮ последовательность.

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

Вывод: вам нужно наложить ограничения на входные даннын и тогда можно думать дальше.


с уважением 


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.