Они не уникальны.
Простым доказательством было бы внесение тривиального алгоритмического изменения, например, проверка того, что мы можем изменить цвет корня, и предоставление случая, когда это все еще допустимо, например:
1-B
/ \
0-R 2-R
add(3):
1-B
/ \
0-B 2-B
\
3-R
Но новый алгоритм может так же легко дать
1-R
/ \
0-B 2-B
\
3-R
Корень другого цвета, но, конечно, оба дерева все еще действительные деревья RB.
Это может показаться немного тривиальным, но вы можете расширить эту идею (если вам нужно менее тривиальное доказательство), чтобы проверить не только корень. Вы можете глубоко проверить уровни O(1), чтобы внести нетривиальное, но действительное изменение, которое сгенерирует два разных алгоритма с одинаковым временем выполнения.
Например, проверка того, что первые 10 строк заполнены и окрашены в черный цвет, и изменение нечетных строк на красные, приведет к дополнительной постоянной работе (т.е. O(1)) и новому алгоритму.
Я должен отметить, что это просто доказательство неуникальности, а не ограничение количества неуникальности. т.е. чего-то тривиального, подобного этому, достаточно, чтобы доказать свою точку зрения, но он оставляет дверь открытой для алгоритмов RB, которые отличаются более фундаментальными способами.
person
davin
schedule
19.07.2011