Анализ
Мы начнем с троичных деревьев поиска, а затем применим полученные результаты к быстрой сортировке по составным ключам. Сначала рассмотрим теорему, принадлежащую Бентли и Саксу
[4].Теорема 5
[Бентли и Сакс]. Поиск среди k-мерных векторов, представленных в виде сбалансированного троичного дерева поиска, требует не больше лlg nы + k скалярных сравнений, где n – количество векторов; и это оптимально.Набросок доказательства
. Чтобы получить верхнюю границу, мы начинаем с n активных векторов и k активных измерений; каждое сравнение делит пополам активный вектор или сокращает число активных измерений. Чтобы получить нижнюю границу, рассмотрим множество векторов, в котором все элементы равны в первых k-1 измерениях, и различаются в k-м измерении.Похожие времена поиска для суффиксных деревьев получили Манбер и Майерс
[14].Теперь мы рассмотрим быструю сортировку для составных ключей, которая всегда производит разбиения вокруг медианы подмножества. Вот результат, соответствующий теореме 3.
Теорема 6
. Если быстрая сортировка производит разбиение вокруг медианы, вычисленной за cn сравнений, то для сортировки n k-мерных векторов ей потребуется не более cn(ln n + k) скалярных сравнений.Доказательство
. Так как рекурсивное дерево сбалансировано, то по теореме 5 ни один узел не отстоит от корня дальше, чем на л lg nы + k. Каждый уровень дерева содержит не больше n элементов, поэтому, вследствие линейности медианного алгоритма на каждом уровне проводится не больше cn скалярных сравнений. Умножение дает требуемый результат.По аналогии с теоремой 1 получаем, что алгоритм быстрой сортировки с составными ключами, проводящий разбиение вокруг случайно выбранного элемента, требует не больше
n(2Hn + k + O(1)) сравнений,. Мы можем еще сократить это число, проводя разбиения вокруг медианы выборки.Теорема 7
. Алгоритм быстрой сортировки с составными ключами, проводящий разбиение вокруг медианы 2t + 1 случайно выбранных элементов сортирует n k-мерных векторов в среднем не больше, чем за 2nHn/(H2t + 2 - Ht + 1) + O(kn) скалярных сравнений.Набросок доказательства
. Комбинируем теорему 2 с наблюдением, что равные элементы строго сокращают число сравнений. Аддитивная цена O(kn) объясняется проверкой всех k ключей.Увеличив объем выборки
t, можно сократить время примерно до nln(n)+O(kn). (Мунро и Раман [18] описали сортировку векторов на месте с таким временем обработки.)Перейдем теперь от сортировки к аналогичным результатам относительно построения троичных деревьев поиска. Мы можем построить дерево с нуля за примерно то же время: добавление «бухгалтерских» функций (но не дополнительных примитивных операций) слегка увеличивает расходы на построение дерева. При отсортированном входе дерево может быть построено за
O(kn) сравнений.Теорема 6 описывает цену поиска в сбалансированном дереве для худшего случая. Среднее число сравнений, требуемых для успешного поиска в случайным образом построенном дереве, равно
2Hn + k + O(1); разбиение вокруг выборочной медианы уменьшает это число.Теорема 8
. Среднее число сравнений в успешном поиске в троичном дереве поиска, полученном разбиением вокруг медианы 2t + 1 случайно выбранных элементов, равно 2Hn / (H2t + 2 - Ht + 1) + k + O(1).Набросок доказательства
. Используйте теорему 7 и изоморфизм между деревьями и алгоритмами сортировки.