0

我需要比较 2 组音乐作品(即以 MIDI 格式录制的演奏 - 提取并保存在数据库表中的音符细节,与以 XML 格式录制的乐谱)。在评估演奏乐谱时(即音符细节 - 音高、持续时间、节奏),需要进行音符对齐 - 以识别参考(乐谱)音符中遗漏/额外/不正确/交换的音符。

我大约有 1800-2500 个音符(甚至可以更多 - 与复音,现在我正在为单音做)。那么我是否必须将所有这些都放入一个数组中?会是内存过载还是堆栈溢出?

有 KMP、Boyce-Moore 等字符串匹配算法。但是音符对齐也可以通过动态编程来完成。我如何使用动态编程来解决这个问题?有哪些可用的算法?是关于近似字符串匹配吗?

哪种方法效率高?像 Boyce-Moore 这样的字符串匹配算法,还是动态编程?我如何评估哪个更有效?

非常感谢任何见解或建议在此先感谢

4

1 回答 1

1

有趣的问题——我认为这篇论文涵盖了很多你感兴趣的内容。他们解决了错误和音乐对齐的问题,并使用 DP 作为求解器讨论了他们的结果。他们引入了一种称为“快速近似匹配”的算法,他们声称该算法比 DP 方法更好。

看起来在搜索中使用的主要作者是 Mongeau 和 Sankoff。看来他们的原始论文引发了该领域的大量工作。

整洁的东西。希望这可以帮助。

于 2010-06-09T16:19:53.053 回答