Stern-Brocot树(SB树)
作者:
码上成功
,
2024-03-16 22:44:31
,
所有人可见
,
阅读 27
Stern-Brocot树(也称为Stern-Brocot序列或Stern-Brocot树)是一种用于生成所有非负有理
数的简化形式的数据结构。它是一棵二叉树,其中每个节点表示一个分数,分数按照这样一种
方式排列,即每个分数都是其两个父分数的中间分数。
Stern-Brocot树的构造方法如下:
1.从两个初始分数开始:0/1 和 1/0(表示无穷大)。
2.为了生成下一级分数:
3.对于每个父分数 a/b,生成两个子分数:
4.左孩子:a/(a+b)
5.右孩子:(a+b)/b
6.递归地重复这个过程,为每个新生成的分数生成子分数。
通过以适当的方式遍历Stern-Brocot树,可以一次性生成所有正有理数,而不重复,并且按升
序排列。这个特性使得它在各种数学和计算上下文中很有用,比如在有理数算术算法和生成
Farey序列中。
这里是Stern-Brocot树的前几个级别的示例:
1/1
/ \
/ \
1/2 2/1
/ \ / \
0/1 1/3 1/1 3/2
/ \ / \ / \
1/4 2/3 2/1 3/4 4/3 3/2
以中序遍历的方式遍历这棵树将产生阶数为n的Farey序列,其中n是考虑的有理数的最大分母。