Изменения
→Построение BSP-дерева
{{Лемма
| statement = Ожидаемое число фрагментов, сгенерированных алгоритмом '''2D_random_BSP_tree ''' есть <tex>\mathcal{O}(n \log n)</tex>.
|proof =
Пусть <tex>s_i</tex> {{---}} фиксированный отрезок из <tex>S</tex>. Проанализируем ожидаемое количество отрезков, которые мы разрежем, когда <tex>l(s_i)</tex> будет добавлена алгоритмом как следующая разбивающая прямая.
Эти размышления приводят нас к определению расстояния от какого-то отрезка до фиксированного отрезка <tex>s_i</tex>.
<tex>dist_\mathrm{s_idist}(s_i,\ s_j)</tex> = \left\{\begin{array}{количество пересекаемых отрезков, если <tex>llcl}|\{s_j \mid l(s_i) \cap s_j \}| & \mathrm{if}\ l(s_i)</tex> пересекает <tex>\cap s_j\ne \varnothing \\\infty & \mathrm{otherwise} \\\end{array}\right.</tex>; <tex>infinity</tex>, иначе}
Для всех конечных расстояний до отрезка <tex>s_i</tex> может быть только два отрезка с одинаковым расстоянием {{---}} те, что лежат по разные стороны от <tex>s_i</tex>.
Пусть <tex>k = dist_\mathrm{s_idist}(s_i,\ s_j)</tex> и <tex>s_{j_1}, \ s_{j_2}, ... \ \ldots , \ s_{j_k}</tex> {{---}} отрезки между <tex>s_i</tex> и <tex>s_j</tex>.
Так как отрезки расположены в случайном порядке, получаем:
<tex>P(l(s_i)</tex> разрезает <tex>\cap s_j\ne \varnothing) <= \leqslant \genfrac{}{}{}{0}{1 / (}{k + 2)}</tex>
Существуют отрезки, которые не разрезаются <tex>l(s_i)</tex>, но расширение которых защитит <tex>s_j</tex>, так что выше записано неравенство.
Теперь мы можем ограничить ожидаемое число разрезов, происходящих при добавлении <tex>s_i</tex>:
<tex>E(</tex>число разрезов, происходящих при добавлении <tex>s_i) \leqslant \sum\limits_{i \ne j} \genfrac{}{}{}{0}{1}{k + 2} \leqslant 2 \cdot \sum\limits_{k=0}^{n - 2} \genfrac{}{}{}{0}{1}{k + 2} \leqslant 2 \ln n</tex>. По линейности ожиданий мы можем заключить, что ожидаемое число разрезов, вызванных добавлением всех отрезков составляет не более <tex>2nlogn2n\log n</tex>. Так как изначально даны <tex>n </tex> отрезков, ожидаемое число фрагментов ограничено <tex>n + 2nlogn2n\log n</tex>.
}}
Мы можем использовать этот факт, чтобы найти дерево такого размера: после запуска алгоритма сравним размер дерева с данной оценкой, если он превышает оценку, просто построим BSP-дерево еще раз, но для новой перестановки. Ожидаемое число запусков равняется двум.
Теперь проанализируем время работы алгоритма. Понятно, что оно зависит от используемой перестановки, так что опять рассмотрим ожидаемое время работы. Нахождение рандомной перестановки занимает <tex>\mathcal{O}(n)</tex>при помощи [[Метод генерации случайной перестановки, алгоритм Фишера-Йетса |алгоритма Фишера-Йетса]]. Если проигнорировать время рекурсивных вызовов, то время работы алгоритма линейно от количества фрагментов в <tex>S</tex>. Это число не превышает <tex>n</tex>, так как становится меньше с каждым рекурсивным вызовом. Число рекурсивных вызовов ограничено количеством сгенерированных фрагментов, которое составляет <tex>\mathcal{O}(nlognn\log n)</tex>. Таким образом, время построения дерева составляет <tex>\mathcal{O}(n^2logn2\log n)</tex>.
{{Теорема
| statement = BSP-дерево размера <tex>\mathcal{O}(nlognn\log n)</tex> может быть построено за ожидаемое время <tex>\mathcal{O}(n^2logn2\log n)</tex>.
}}
Описанный выше алгоритм легко распространяется обобщается на трёхмерное пространство. Как было упомянуто выше, мы считаем, что работаем в 3D с двухмерного пространства на трехмерноетриангуляцией граней многранников.
Пусть <tex>S</tex> {{---}} множество непересекающихся треугольков в <tex>\mathbb{R}^3</tex>.
Снова ограничимся только авто-разбиениями, разбивая пространство плоскостями, содержащими какой-то из треугольников.
Для треугольника <tex>t</tex> обозначим плоскость, содержащую его, как <tex>h(t)</tex>.
На вход алгоритму подается множество треугольников <tex>S = \{t_1, \ t_2, ... \ \dots , \ t_n\}</tex>, заданных в трехмерном пространстве.
Размер полученного BSP-дерева снова зависит от порядка треугольников. Как и в двухмерном случае, мы можем попытаться получить хороший ожидаемый размер дерева, переставив треугольники в случайном порядке. На практике это дает хорошие результаты.