Relaxed Radix Balanced Trees (RRB-деревья) - это обобщение неизменяемых векторов (используемых в Clojure и Scala), которые имеют "эффективно постоянную" индексацию и время обновления. RRB-деревья поддерживают эффективную индексацию и обновление, но также обеспечивают эффективную конкатенацию (log n).
Авторы представляют структуру данных таким образом, что мне трудно следовать. Я не совсем уверен, что такое инвариант, который поддерживается каждым node.
В разделе 2.5 описывается их алгоритм. Я думаю, что они гарантируют, что индексирование в node потребует только дополнительных шагов линейного поиска после поиска по методу радикса. Я не понимаю, как они вывели формулу для дополнительных шагов, и я думаю, что, возможно, я не уверен, что означает каждая из переменных (в частности, "всего p ветвей дерева" ).
Как работает алгоритм конкатенации RRB-дерева?