Иерархическое кодирование длины серий без потерь

Я хочу резюмировать, а не сжимать аналогично кодированию длины прогона, но во вложенном смысл.

Например, я хочу, чтобы: ABCBCABCBCDEEF превратилось в: (2A (2BC)) D (2E) F

Меня не беспокоит выбор между двумя идентичными возможными вложениями. Например,

ABBABBABBABA может быть (3ABB ) ABA или A (3BBA) BA, которые имеют одинаковую длину в сжатом состоянии, несмотря на различную структуру.

Однако я хочу, чтобы выбор был САМЫМ жадным. Например:

ABCDABCDCDCDCD выберет (2ABCD) (3CD) - длины шесть в исходных символах, что меньше, чем ABCDAB (4CD), длина которого в исходных символах равна 8.

Что касается фона, у меня есть несколько повторяющихся шаблонов что я хочу резюмировать. Чтобы данные были более удобоваримыми. Я не хочу нарушать логический порядок данных, поскольку это важно. но я хочу резюмировать это, сказав, что символ A умножается на 3 появления, за которым следуют символы XYZ для 20 вхождений и т.д.

Приветствуются идеи.

11
задан user858203 29 July 2011 в 13:55
поделиться