I am trying to solve a problem that requires storing optimal pareto solutions during computation. I will call the set of optimal solutions a Pareto bag.
So far, I have had only two criteria, which allowed a fairly effective solution based on an array in which elements were sorted in descending order in accordance with the first criterion and ascending by the second criterion. An example of such an array might be:
[(100, 0), (50, 1), (-10, 3)]
(about optimality pareto - wiki )
I recently found out that I need to add a third criterion, and this approach does not seem to be applicable for such an extension. I tried to understand, someone had already decided this, but did not find anything satisfactory. Perhaps I was asking the wrong Google question.
To be more precise about what I need : A structure capable of storing mutually acceptable optimal pareto elements. I need to insert elements into a structure, and I need to iterate over elements, but not in a specific order. In my case, there will usually not be more than 4-5 elements, but sometimes more than 10-20. Insertions into the bag occur very often in my algorithm, so I need them to be as fast as possible.
The application is written in C ++, but probably it does not really matter.
Any help would be greatly appreciated.
Edit: I already had some ideas about my own - organizing elements into some kind of triangular structure, but I can not formalize this idea.
Edit2: , , . , {(1,2,3), (3, 1, 1)} triple (3, 3, 3), set {(3,3,3)}.
Edit3: , , triple (a,b,c) (e,f,g) , a >= e && b >= f && c >= g - >.