Russian Qt Forum

Программирование => Общий => Тема начата: Karl-Philipp от Декабрь 08, 2008, 00:33



Название: Результирующая последовательность из су
Отправлено: Karl-Philipp от Декабрь 08, 2008, 00:33
Всем здравствуйте!

Есть несколько последовательностей неповторяющихся цифр:

а) 1, 2, 6
б) 3, 2
в) 3, 4, 5
г) 1, 3, 5, 4

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

Например, для приведеных последовательностей чисел результирующая последовательность может состоять из (а,б,в) вариантов и будет выглядеть так - (1 3 2 4 5 6).
 
Кроме этого, возможен еще один вариант результирующей последовательности, состоящий из вариантов

(а,б,г) - (1 3 2 5 4 6)

Поиск результирующей последовательности будет основываться на полном переборе всех данных.

Алгоритм представляю себе следующим образом:
1. Последовательность №1 будет взята за результирующую.
2. Проводится сравнение со последовательностью №2. Если порядок следования чисел не противоречит пос-ти №1 - разместить в результирующей числа из 2ой.
Если порядок следования чисел различный (как в (в) и (г)), создать еще одну результирующую последовательность.
3. Проверить следующий номер последовательности на соответствие с имеющимися результирующими после-ми (перейти к п1.)

Результирующая последовательность с максимальным количеством после-тей, которые в ней смогли разместиться будет представлять результат решения задачи.

Подскажите, пожалуйста, не будет ли такой алгоритм поиска (перебора) медленным, если число последовательностей может достигать сотен тысяч, а количество цифр в каждой последовательности может колебаться от 2ух до 30, при этом количество результирующих последовательностей может достигать 0%-30% от всех имеющихся последовательностей?
Может я велосипед изобретаю? :)


Название: Re: Результирующая последовательность из су
Отправлено: Tonal от Декабрь 08, 2008, 11:15
Схематично, вроде всё нормально, так что сделай реализацию и проверь. :)
Тут довольно много деталей, которые можно по разному реализовать.

Хотя конечно странная задача. Состав и количество результирующих последовательностей очень сильно зависит от порядка появления последовательностей.