бинарный diff для нескольких файлов
Полностью текст не читал, Нидлман-Вунш не подойдёт?
в чистом виде - нет. Только в качестве помощи при генерации идей. Спасибо за ссылку.
не хочу оказаться капитаном, но у Гасфилда описан линейный алгоритм нахождения множественной общей подстроки, если тебе это поможет

Оставить комментарий
yroslavasako
Не найдя готового решения в H&S решил мигрировать топик сюда. Хочу написать сабж, в какую сторону стоит копать, к каким алгоритмам присмотреться?Некоторая формализация: есть n массивов бинарных данных с побайтовым доступом. Они все имеют общие элементы. Каждый из этих массивов необходимо представить как конкатенацию некоторых других подмассивов меньшей длинны. Необходимо сформировать набор таких подмассивов и таблиц их вхождения, чтобы за минимальную суммарную длину получить возможность воспроизвести все n исходных массивов.
Пусть
Понятное дело, недостаточно минимизировать суммарные размеры слов, иначе задача решалась тривиально введением алфавита в качестве множества слов, значит минимизировать нужно целевую функцию, учитывающую как размер словаря, так и длину кодирующих последовательностей.
Я хочу не столько сократить размер файлов, храня их общие части и разницу, сколько выделить похожие и отличающиеся элементы. Поэтому вношу дополнительное условие, которое не сразу ясно из постановки задачи в общих словах.
Иными словами, я хочу найти общие куски, значит кусок, присутствующий хотя бы в двух массивах, должен присутствовать и в остальных
Судя по всему в полном объёме решение задачи может занять достаточно много времени, было бы целесообразно учитывать и время работы алгоритма и прочие затраченные ресурсы. Тут важно отметить, что мне решение задачи в моём случае не критично к потраченному времени, поскольку используется не для производственных целей вроде бекапа, а для анализа данных.
С условием вроде понятно отписался, кто какой вариант решения предложит?