Plus longue sous-chaîne répétée
En informatique, le problème de la plus longue sous-chaîne répétée est le problème de recherche de la plus longue sous-chaîne d'une chaîne qui y apparaît au moins deux fois.
Par exemple, la plus longue sous-chaîne dans « GEEKSFORGEEKS » est « GEEKS », dans « AAAA » est « AAA », dans « ATCGATCGA » est « ATCGA ». Le problème peut être résolu en temps linéaire et en espace par la construction d'un arbre des suffixes de la chaîne. On cherche le nœud interne le plus profond interne dans l'arbre qui a au moins deux feuilles parmi ses descendants. La profondeur est mesurée par le nombre de caractères traversées à partir de la racine. La chaîne qui étiquette les arcs de la racine à un tel nœud est une plus longue sous-chaîne répétée.
Dans la figure ci-contre, l'arbre des suffixes de la chaîne « ATCGATCGA$ ». La plus longue sous-chaîne répétée au moins deux fois est « ATCGA ». Dans l'arbre, le nœud le plus profond (tous ont deux feuilles parmi leurs descendants) est celui portant le numéro 2. Sa profondeur est 5, longueur de la chaîne « ATCGA ».
Notes et références
- Lloyd Allison, « Suffix Trees », Faculty of Information Technology, Monash University, Australie (consulté le ).
- « Suffix Tree Application 3 – Longest Repeated Substring », sur www.geeksforgeeks.org.
- Robert Sedgewick and Kevin Wayne, « Longest repeated substring », Introduction to Programming in Java, Section 4.2: Searching and Sorting, sur http://introcs.cs.princeton.edu/java/42sort/.