Estou trabalhando com um algoritmo de correspondência de padrões que gera um autômato de estado finito acíclico que aceita uma sequência de texto especificada e todas as suas substrings. O algoritmo FSA está sendo executado em uma representação simbólica de um fluxo de música (por exemplo, dados MIDI). O fluxo de música foi pré-processado para dividir cada música em 'segmentos' não identificados. Um FSA é gerado para cada segmento de cada música: se eu tiver músicas, cada uma dividida em segmentos , terei FSAs separados.
Eu gostaria de comparar o FSA de cada segmento com os outros FSAs do meu corpus. O objetivo final seria agrupar-se em um espaço de similaridade e criar 'classes' de segmentos de acordo com a semelhança entre as métricas de construção. Assim, são de particular interesse as gramáticas que cada FSA define (correspondendo aproximadamente a certos componentes do conteúdo musical no segmento). Existem técnicas que podem ser boas para comparar algo assim? A divergência de KL vem à mente (por exemplo, usando-a para comparar a distribuição sobre cadeias associadas a uma determinada FSA), embora possa haver técnicas melhores / mais eficientes?
Além disso, peça desculpas se essa pergunta for (1) trivialmente fácil ou (2) indicativa de algum mal-entendido mais profundo ou (3) respondida em outro lugar. Eu sou um verdadeiro idiota, pessoal!