Мне нужно сравнить 2 набора музыкальных произведений (т. Е. Воспроизведенные в формате MIDI ноты, извлеченные и сохраненные в таблице базы данных, с нотами, переведенными в формат XML). При оценке игры на ноты (т. Е. Примечание - высота, длительность, ритм) необходимо выполнить выравнивание нот - чтобы определить пропущенные / лишние / неправильные / поменянные ноты, исходя из эталонных (ноты) нот.
У меня примерно 1800-2500 нот в одном экземпляре (может даже больше - с полифонией, сейчас я пишу для однотонного). Так нужно ли мне все это помещать в массив? Это будет перегрузка памяти или переполнение стека?
Существуют алгоритмы сопоставления строк, такие как KMP, Boyce-Moore. Но выравнивание нот также можно выполнить с помощью динамического программирования. Как я могу использовать динамическое программирование, чтобы приблизиться к этому? Какие доступны алгоритмы? Это о приблизительном сопоставлении строк?
Какой подход очень продуктивен? Алгоритмы соответствия строк, такие как Бойс-Мур, или динамическое программирование? Как я могу оценить, что является более эффективным?
Очень ценю любые идеи или предложения
Заранее спасибо