音乐乐谱中的时间搜索及管理技术
1. 红黑树与音乐搜索
红黑树(Red-Black Tree,简称 RB-tree)是一种复杂且高效的搜索算法,常用于需要快速搜索的应用场景。它本质上是一种二叉搜索树,但具有自平衡的特性。在节点插入和删除操作时,树的路径长度能保持近似最优,复杂度为 (O(log(n))),其中 (n) 是树中节点的数量。每个节点到叶子节点的最长路径最多是最短路径的两倍。
红黑树节点在键和值方面与二叉树节点类似,但额外携带了一些信息以确保节点平衡。虽然红黑树的技术细节较为复杂,但网上有很多相关的优秀资料。
2. 音符与区间
音符具有起始位置和持续时间,这两个属性定义了一个数值区间,与音乐中的音程概念不同。一个区间包含以下三个特征:
- 起始数值
- 结束数值
- 边界策略,具体分为:
- 开区间(Open):不包含起始和结束值,写作 (a, b)
- 闭区间(Closed):包含起始和结束值,写作 [a, b]
- 左开右闭区间(LO_Open):不包含起始值,包含结束值,写作 (a, b]
- 左闭右开区间(HI_Open):包含起始值,不包含结束值,写作 [a, b)
默认的边界策略是 HI_Open,这反映了音符在精确时间开始,但在相邻音符开始前结束的特点。在 Interval 类中,最重要的方法是 Interval.contains() 用于判断给定区间是否包含特定值,以及 Interval.intersection() 用于计算两个区间的交集。这些方法的复
超级会员免费看
订阅专栏 解锁全文
47

被折叠的 条评论
为什么被折叠?



