2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Задача по группировке
Сообщение11.10.2012, 13:59 
Всем привет!

Сразу хочу сказать что в математике я чуть более чем никак. Но встала такая задача передо мной...

Есть множество массивов одинаковой длины (допустим длиной 3):
[A4, B2, C2]
[A2, B8, С2]
[A9, B2, С1]
......много их короче

Мне необходимо сгруппировать, получить группы следующего вида
A1,A2;
B1;
C1,C2
Для создания данной группы в исходном множестве необходимо наличие массивов:
[A1, B1, C1]
[A1, B1, C2]
[A2, B1, C1]
[A2, B1, C2]
Т.е. наверное это можно назвать вычислением обратным декартовому произведению.
Некоторые массивы в результате могут вообще не войти ни в одну группу

Задачу решил, но как мне кажется совсем неэффективно. Простым перебором

Алгоритм примерно такой:
1. Выбираем первый массив из множества. Например [A1, B1]
2. Пытаемся сгруппировать первый и второй (скажем [A2, B2]), т.е. ищем [A1, B2] и [A2, B1].
3. Если нашли, то удаляем их из исходного множества и пытаемся по тому же принципу включить в полученную группу остальные массивы
4. Если не нашли, то берем 1-й и 3-й и пытаемся их сгруппировать...

Тестирование показало, что алгоритм выполняется до полутора минут для 15000 массивов размерности 5 (!!!). При этом по полной занимая одно ядро процессора:))

Может кто подскажет более эффективные способы решения подобной задачи?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group