Страница 1 из 1

Нужна подсказка по комбинаторике!

Добавлено: 07 апр 2009, 14:37
avpikalev
Люди! Кто-нибудь сталкивался с подобной задачей?
Есть наборы взаимозаменяемых вариантов, например:
1. A,AB,CDE
2. X,YZ
3. G,F,FH

Из них генерируются сочетания (берется по 1 варианту из каждого набора):
AXG
AXF
AXFH
AYZG
AYZF
..
CDEYZFH

В условии дан список получившихся строк, надо восстановить
исходные варианты
1. A,AB,CDE
2. X,YZ
3. G,F,FH

Нет у кого ссылок на материалы? Или есть алгоритм, решающий данную задачу? Подскажите пожалуйста..

Re: Нужна подсказка по комбинаторике!

Добавлено: 07 апр 2009, 15:46
Albor
В условии только строки? Количество вариантов неизвестно? В каждую строку входят все варианты? Известна ли максимальная длина подстроки?

Re: Нужна подсказка по комбинаторике!

Добавлено: 07 апр 2009, 16:04
avpikalev
Ах, да, задается кол-во наборов. И все. Надо восстановить наборы

Re: Нужна подсказка по комбинаторике!

Добавлено: 08 апр 2009, 10:22
Albor
Наверное, нужно искать варианты по частоте вхождения подстрок в наборы. Например, берём самый короткий набор и считаем его вхождение в другие наборы, укорачиваем его на 1 символ справа и опять считаем и так до получения максимума. Конечно, если во входных наборах представлены все комбинации.

Re: Нужна подсказка по комбинаторике!

Добавлено: 13 апр 2009, 23:53
Хыиуду
Берем начало списка
AXG
AXF
Находим самую длинную повторяющуюся строку - АХ. Стало быть, G, F и дальше FH - элементы последнего набора. Идем дальше по строкам, пока начало не будет отлично от АХ. Это будет А - значит, Х принадлежит к предпоследнему набору, так что идем дальше и считываем по очереди все символы предпоследнего набора. И так пока не разберем всю строку.