Plus longue sous-séquence commune de 3+ chaînes

Je suis en train d'essayer de trouver la plus longue sous-suite commune de 3 ou plus de chaînes. L'article de Wikipédia a une grande description de comment faire pour les 2 chaînesmais je suis un peu incertain de la façon de prolonger ce de 3 ou plus de chaînes.

Il ya beaucoup de bibliothèques pour trouver la CL de 2 cordes, donc je voudrais utiliser l'un d'eux si possible. Si j'ai 3 chaînes A, B et C, est-il valide pour trouver la CL de A et B de X, et ensuite trouver la CL de X et C, ou est-ce la mauvaise façon de le faire?

J'ai implémenté en Python comme suit:

import difflib

def lcs(str1, str2):
    sm = difflib.SequenceMatcher()
    sm.set_seqs(str1, str2)
    matching_blocks = [str1[m.a:m.a+m.size] for m in sm.get_matching_blocks()]
    return "".join(matching_blocks)

print reduce(lcs, ['abacbdab', 'bdcaba', 'cbacaa'])

Ce sorties "ba", mais elle doit être "baa".

source d'informationauteur del