Stern-Brocot 树
Stern-Brocot 树
由两个初始值
每个点上有一个"三元组"
根据构造,Stern-Brocot 树显然是分数的 二叉搜索树,即树上节点的中序遍历得到的分数序列是递增的。除此之外,他还满足如下两个重要性质:
- 最简性:Stern-Brocot 树构造出来的所有分数都是最简分数
- 完全性:Stern-Brocot 树能构造出来任意一个正的最简分数
完全性是显然的,因为往子树搜索一定会让分子或者分母变大,这样对于任意一个最简分数
最简性要用线性代数和裴蜀定理。
SB树的作用
在 Stern-Brocot 树上查找一个确定的分数
每次暴力往左/右跳的复杂度是
这个复杂度高的原因是我们经常会连续往左/往右跳很多步,而一次往左跳再接一次往右跳(或者一次往右跳接一次往左跳)一定会让分子分母都至少变为原来的两倍。所以“拐弯”的次数是
只要我们能快速确定每次拐弯的位置就行了。
如果要查找的分数
复杂度
- 大部分时候,我们在树上查找的分数其实是不确定的,比如我们需要根据当前分数的值跑一个二分查找的检验算法来决定具体是往左走还是往右走。
这个时候,把刚才通过解方程来确定次数的部分改为二分连续向左/向右的次数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具