我需要比较 2 组音乐作品(即以 MIDI 格式录制的演奏 - 提取并保存在数据库表中的音符细节,与以 XML 格式录制的乐谱)。在评估演奏乐谱时(即音符细节 - 音高、持续时间、节奏),需要进行音符对齐 - 以识别参考(乐谱)音符中遗漏/额外/不正确/交换的音符。
我大约有 1800-2500 个音符(甚至可以更多 - 与复音,现在我正在为单音做)。那么我是否必须将所有这些都放入一个数组中?会是内存过载还是堆栈溢出?
有 KMP、Boyce-Moore 等字符串匹配算法。但是音符对齐也可以通过动态编程来完成。我如何使用动态编程来解决这个问题?有哪些可用的算法?是关于近似字符串匹配吗?
哪种方法效率高?像 Boyce-Moore 这样的字符串匹配算法,还是动态编程?我如何评估哪个更有效?
非常感谢任何见解或建议在此先感谢