I'm looking for an online algorithm/datastructure that is able to maintain a pareto frontier for two dimensional elements in an online scenario where elements can be added and deleted.
For example:
insert((3,7))
- since the pareto front is empty it has to be added to it
- set of elements
E={(3,7)}
- pareto frontier
P={(3,7)}
insert((7,3))
andinsert((10,2))
- both have to be added to pareto frontier (since they arent dominated)
- set of elements
E={(3,7), (7,3), (10,2)}
- pareto frontier
P={(3,7), (7,3), (10,2)}
insert((8,4))
- is dominated by
(7,3)
so do not add it to the pareto frontier (but keep it in the set of elementsE
because its maybe going to be part of the pareto frontier later) - set of elements
E={(3,7), (7,3), (10,2), (8,4)}
- pareto frontier
P={(3,7), (7,3), (10,2)}
- is dominated by
remove((7,3))
- remove
(7,3)
from the set of elements and from the pareto frontier. The pareto frontier has to adjust accordingly and therefore(8,4)
is added to the pareto frontier now. - set of elements
E={(3,7), (10,2), (8,4)}
- pareto frontier
P={(3,7), (10,2), (8,4)}
- remove
This question is similiar to An online algorithm to find the Pareto frontier elements, but in the scenario described above points can also be removed. A brute force algorithm would have quadratic time complexity and I am looking for something better.