Приветствую Вас ГостьВоскресенье, 19.05.2024, 06:21

Light Midnight Inc.


Каталог статей

Главная » Статьи » Дискретные стурктуры

Кодирование различий в версиях файла. Жадный алгоритм.

Base & Delta = Version

FOOTPRINT -- слепок.

предположим длина футпринта 16 символов.

берём бэйз файл.

встали на позицию ноль.

прочитали футпринт - взяли от него хэш-функцию.

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

короче таким образом формируем табличку:

hash table

link table

в хэш-таблице находятся сами хэш-функции и ссылки на линк.таблицу.

в линк-табле - находятся строки.

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

напр.

ыафврваы - хэш 232134

ололололо - хэш 232134

хэш[232134] ----> ссылка на соотв. линк

линк

------

ыафврваы, 235 (место где встретилось, оффсет), ссылка на след. "ололо"

ололололо, 52314 (оффсет), ссылка на NIL

NIL

короче загоняем всевозможные хэши и строки в табличку.

потом открываем версион-файл

прочитали футпринт

взяли от него хэш - напр. 232134

например нашли

тогда проверяем совпадает ли он с "ололо"

нет, ибо ыафврваы

след. линк. - значит ололо!

проверяем еще например - еще одно ололо! всё.

проверяем с первым ололо - и оказывается что кроме ололА если еще дальше прочесть 40 символов - тоже всё отлично совпадает.

то есть реально длина = длина футпринта + 40

проверяем другое ололо - нет совпадений, совпало лишь только ололо.

вот берем максимальное совпадение - ололо по адресу 52314.

пишем COPY с оффсета 52314 56 символов 

пошли следующие футпринты с версионфайла

а не встретилось

идем пока не встретится то что надо

нашли?

тогда пишем ADD LENGTH(...) dasfkhakjsdfkladljfadsljsdffasdldasf

а потом уже COPY (ололо№2, оффсет№хз)

 

Категория: Дискретные стурктуры | Добавил: Cromartie (11.06.2012)
Просмотров: 766 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Оцените мой сайт
Всего ответов: 542
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Cheсking
Часы
Мини-чат
200
Друзья Сайта
  • Light Midnight - Ваша Еда
  • Light Midnight - Anim as life style
  • Поиск