powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм архивирования древоподобных данных
13 сообщений из 13, страница 1 из 1
Алгоритм архивирования древоподобных данных
    #35954160
PC_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть большое дерево элементов.
Известно что некоторые ветки этого дерева могут быть друг на друга очень похожи.
Разница между двумя ветками например может для примера заключаться всего лишь в одной маленькой подветочке "где-то там в глубине".

Есть ли какаято мат часть как такое дело лучше всего сжимать ?
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954230
Kew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это дерево при сериализации всегда упорядочивать по значениям и иерархии узлов и устранить зависимость сериализованного значения узла от положения в тексте, то любой lz- или lzw-based алгоритм сжатия будет показывать хорошие результаты.
Например, вот такое дерево:
{a 5 {b 2 {c 1 {d 0}} {{c 1 {d 0}}}} {b 2 {c 1 {d 0}} {{c 1 {d 0}}}} {b 2 {c 1 {d 0}} {{c 1 {d 0}}}} {b 2 {c 1 {d 0}} {{c 1 {d 0}}}} {b 2 {c 1 {d 0}} {{c 1 {e 0}}}}}
, очевидно, неплохо сожмется :)
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954338
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PC_2Есть большое дерево элементов.
Известно что некоторые ветки этого дерева могут быть друг на друга очень похожи.
Разница между двумя ветками например может для примера заключаться всего лишь в одной маленькой подветочке "где-то там в глубине".

Есть ли какаято мат часть как такое дело лучше всего сжимать ?
Если архивирование ставит своей целью уменьшить размер - то можно просто сериализовать дерево обходом в глубину и к полученному дампу применить классический LZW.

Если ты хочешь получить какие-то дополнительные бонусы вроде возможности работать со сжатыми узлами дерева в онлайне, то надо подумать...
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954348
PC_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бонусы бонусы ...
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954358
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PC_2Разница между двумя ветками например может для примера заключаться всего лишь в одной маленькой подветочке "где-то там в глубине".
Можешь привести пример? Желательно на реальных данных.
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954363
Фотография Nikolay Kalmarskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PC_2,

Выгрузить каждую ветку в текстовый файл и пройтись DIFF'ом. Одну взять за базу, а остальные хранить как дельту от базовой ветки.
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954370
Фотография Nikolay Kalmarskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример
$ cat branch-a.txt
[src Ветка А]
ДОБАВИТЬ УЗЕЛ А
НАЧАТЬ ВЕТКУ
ДОБАВИТЬ УЗЕЛ А
ДОБАВИТЬ УЗЕЛ Б
ЗАКРЫТЬ ВЕТКУ
ДОБАВИТЬ УЗЕЛ Б
ДОБАВИТЬ УЗЕЛ В
ДОБАВИТЬ УЗЕЛ Д
[/src]
$ cat branch-b.txt
[src Ветка Б]
ДОБАВИТЬ УЗЕЛ А
НАЧАТЬ ВЕТКУ
ДОБАВИТЬ УЗЕЛ А
ДОБАВИТЬ УЗЕЛ Ё
ЗАКРЫТЬ ВЕТКУ
ДОБАВИТЬ УЗЕЛ Б
ДОБАВИТЬ УЗЕЛ В
ДОБАВИТЬ УЗЕЛ Д
[/src]
$ diff -e branch-a.txt branch-b.txt
5c
ДОБАВИТЬ УЗЕЛ Ё
.
1c
[src Ветка Б]
.

$
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954378
PC_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то я даже в замешательстве.
Взял XML в 48 мегабайт сжал его ВинРаром и получил после сжатия 1.1 мегабайта ...

интересно что там за алгоритм, что жмет почти в 50 раз. Ведь там в каждой строчке например есть порядковый номер, 250 000 чисел, по 4-6 байт на каждое число получается метр, а ведь там в строчках еще куча разной информации ...
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954382
Kew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rar использует lzss (скользящее окно переменнго размера, управляется ключом -mX) и какую-то оригинальную схему оптимального кодирования его выхода. Скорее всего, адаптивного Хаффмана.
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954401
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PC_2что-то я даже в замешательстве.
Взял XML в 48 мегабайт сжал его ВинРаром и получил после сжатия 1.1 мегабайта ...

интересно что там за алгоритм, что жмет почти в 50 раз. Ведь там в каждой строчке например есть порядковый номер, 250 000 чисел, по 4-6 байт на каждое число получается метр, а ведь там в строчках еще куча разной информации ...
это хмл такое, гм, такая хорошая вещь
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954593
Фотография Nikolay Kalmarskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот! А если похожие ветки не выгружать целиком, а выгружать только дельту между ними, то размер ещё меньше будет.
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954599
Kew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм lzw занимается именно этим :) Алгоритм lzss занимается этим по большей части :)
...
Рейтинг: 0 / 0
Алгоритм архивирования древоподобных данных
    #35954853
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PC_2интересно что там за алгоритм, что жмет почти в 50 раз. Ведь там в каждой строчке например есть порядковый номер, 250 000 чисел, по 4-6 байт на каждое число получается метр, а ведь там в строчках еще куча разной информации ...
Зависит от сжимаемых данных. Для текста и в 500 раз будет не предел.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм архивирования древоподобных данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]