使用字符串匹配算法或动态编程对齐音乐笔记

时间:2010-06-09 11:42:35

标签: algorithm dynamic evaluation string-matching

我需要比较两组音乐作品(即以MIDI格式播放 - 在数据库表格中提取并保存的音符细节,而不是采用XML格式的乐谱)。在评估与乐谱演奏(即音符细节 - 音高,持续时间,节奏)时,需要进行音符对齐 - 从参考(乐谱)音符中识别错过/额外/不正确/交换的音符。

我有一张大约1800-2500张音符(甚至可以更多 - 用复音,现在我正在为单声道做)。那么我必须把所有这些都放到一个数组中吗?是内存重载还是堆栈溢出?

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

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

非常感谢任何见解或建议 提前致谢

1 个答案:

答案 0 :(得分:1)

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

看起来在搜索中使用的关键作者是Mongeau& Sankoff。他们的原始论文似乎在这个领域引发了很多工作。

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