具有最近路径前缀回退的查找树
lookup tree with closest path prefix fallback
我正在寻找一种算法来解决一个问题,我维护一个树结构,我需要在树结构上找到数据节点的最接近匹配项。如果没有完全匹配项,它将回退到最接近的前缀。
例如,如果假设我有以下结构,其中单词(单词中的数字)是分支,带方括号的数字是数据(叶节点);我追求的算法会返回下表所示的结果集。请注意,路径分隔符">"
one - [1]
/
two five
/
eight [12] nine
/
[128] [159]
+---------------------------+--------+---------------------------------------------+
| path | result | |
+---------------------------+--------+---------------------------------------------+
| one > five > nine | 159 | whole path matches |
| one > five | 1 | partial (only "one" matched) |
| one > two > eight | 128 | whole path matches |
| one > two | 12 | whole path matches |
| one > two > eight > seven | 128 | partial (only "one > two > eight" matched) |
| one > two > seven | 12 | partial (only "one > two" matched) |
+---------------------------+--------+---------------------------------------------+
我真的在追求一个C++(基于STL
或boost
)的库;但只是指向一个漂亮的算法来达到这个目的同样好。
您正在寻找三元搜索树
http://en.wikipedia.org/wiki/Ternary_search_tree
相关文章:
- 如何在 constexpr 函数中实现回退运行时
- C++通过回退到 C 进行类型双关语
- SFINAE - 如果更复杂的功能失败,则回退到默认功能
- 如何编写模板重载函数,并在模板参数不允许实例化某个类时触发回退
- 调用成员函数(如果存在),回退到自由函数,反之亦然
- 当函数不存在时,SFINAE 回退
- 回退到复制构造函数不起作用
- FindResourceEx和回退语言
- 最后手段/包罗万象/回退模板过载
- 具有最近路径前缀回退的查找树
- 运算符<<() 失败时回退到 to_string()
- 如果未实现除法运算符,则SFINAE回退
- 在c++中,如何用回退包装默认标头
- 为什么成员检测器回退必须是int
- 如果可能,尝试对字符串执行静态断言,或者在不是时回退到运行时检查
- 如果 OpenCV 的 Cuda 扩展不可用,请使用 CPU 回退
- 回退可变构造函数-为什么这样做
- CMake如何确定目标依赖项的回退生成配置
- 隐式声明的移动操作不会回退到复制
- 当模板化函数实例化失败时,回退到备用函数