Если возникла следующая проблема:
Учитывая серию прямоугольников, определенных {x_min, height и x_max}, я хочу эффективно вычислить их пересечение и объединение, создав новую серию. Например, если я получу S1 = [{1,3,3}] и S2 = [{2,3,5}], объединение приведет к S3 = [{1,3,5}] и пересечению в S3 = [{2,3,3}]. Это был бы довольно простой случай, но когда S1 и S2 представляют собой список прямоугольников (неупорядоченный). Это становится немного сложнее.
Моя идея - попытаться использовать стратегию «разделяй и властвуй», например, используя модифицированную сортировку слиянием, и на этапе слияния попробуйте также объединить эти здания. Но я немного не уверен, как это сделать. В принципе, я не могу написать, как сравнить два прямоугольника с этими координатами и решить, должны ли они быть в S3, или мне нужно создать новый (для пересечения).
Для объединения I Я думаю, что идея должна быть довольно похожа, но отрицание (то есть, если они не интересуют) сортировать это. В настоящее время мой первый подход - O (n ^ 2).
Любая помощь, как уменьшить сложность?
PD: Реализация, которую я делаю, находится в Python