A multidimensional filter to eliminate β€œbad” items from a large table?

I have a large table of N elements with M (M> = 3) different properties for an element. From this table I must delete all elements for which the same table contains an element that has the same or better values ​​for all properties.

I have an algorithm (python) that solves it, but it is sensitive to conclusions and has a worse example of approx. O ((nΒ² + n) / 2) when items are not deleted in the process. This is too slow for my project (where datasets of 100,000 elements with 8 properties per element are not uncommon), so I need something close to O (m * n log n) in the worst case, but I don't know, maybe whether this problem is resolved quickly.

An example of a problem case and its solution:

  [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

Reject all candidates for whom there is a candidate who performs equal or better in all disciplines.

Solution:
- A is rejected because B, C, E, G perform equal or better in all disciplines.
- F deviates because D performs equal or better in all disciplines.

Is there an algorithm that effectively solves this problem and what is it?

+3
source share
3

, node , node. , , , , , node, , . ( , , , node). , - , . . , N ^ 2 N ^ (2-f), f .

, . quicksort-like median , , n log n. (KD-)

, , , N .

+2

, A <= B, A , B, A >= B, A , B. , ! (A <= B || A >= B), A B "". , , , . A s.t. B , A < .

, .. . . , A! ~ B () B! ~ C. , A C ? ! , A {1,2,3}, B {2,1,5} C {2,3,4}. , "", ; , , , O (N ^ 2), .

0

Source: https://habr.com/ru/post/1727621/


All Articles