У меня есть большая таблица из N предметов с M (M> = 3) различными свойствами на предмет,
Из этой таблицы я должен удалить все элементы, для которых в одной и той же таблице содержится элемент с одинаковыми или лучшими показателями по всем свойствам.
У меня есть алгоритм (python), который уже решает его, но он чувствителен к выходу и имеет наихудший случай прибл. O ((n² + n) / 2), когда в процессе не было удалено ни одного элемента.
Это слишком медленно для моего проекта (где наборы данных из 100 000 элементов с 8 свойствами на элемент не являются редкостью), поэтому мне требуется что-то близкое к O (m * n log n) в худшем случае, но я не знаю, может ли эта проблема Быстро решаться.
Пример проблемы и ее решения:
[higher value = better]
Singing Dancing Acting
A 10 20 10
B 10 20 30
C 30 20 10
D 30 10 30
E 10 30 20
F 30 10 20
G 20 30 10
Отклонить всех кандидатов, для которых есть кандидат, который выступает равным или
лучше во всех дисциплинах.
Решение:
- А уволен, потому что B, C, E, G работают одинаково или лучше во всех дисциплинах.
- F уволен, потому что D действует одинаково или лучше во всех дисциплинах.
Существует ли алгоритм, который эффективно решает эту проблему, и что это такое?