in experimental/piranha_playground/rule_inference/utils/node_utils.py [0:0]
def get_smallest_nonoverlapping_set(nodes: List[Node]) -> List[Node]:
"""
Get the smallest non-overlapping set of nodes from the given list.
:param nodes: List of nodes.
:return: The smallest non-overlapping set of nodes.
"""
nodes = sorted(
nodes, key=lambda x: (x.start_point, tuple(map(lambda n: -n, x.end_point)))
)
# get the smallest non overlapping set of nodes
smallest_non_overlapping_set = []
for node in nodes:
if not smallest_non_overlapping_set:
smallest_non_overlapping_set.append(node)
else:
if node.start_point > smallest_non_overlapping_set[-1].end_point:
smallest_non_overlapping_set.append(node)
return smallest_non_overlapping_set