KMP préfixe de table
Je lis à propos de KMP
pour la correspondance de chaîne.
Il a besoin d'un prétraitement du motif par la construction d'un préfixe de table.
Par exemple, pour la chaîne ababaca
le préfixe de table est: P = [0, 0, 1, 2, 3, 0, 1]
Mais je ne suis pas clair sur ce ne les chiffres montrent. J'ai lu qu'il aide à trouver la correspondance du motif quand il se déplace, mais je ne peux pas connecter cette info avec les chiffres dans le tableau.
Prefix Table
dans KMP de l'algorithme est également connu commePartial Match Table
. Ce blog explique vraiment magnifique Le Knuth-Morris-Pratt de l'Algorithme dans mes propres mots
Vous devez vous connecter pour publier un commentaire.
Chaque numéro appartient à préfixe correspondant ("a", "ab", "aba", ...) et pour chaque préfixe elle représente la longueur du plus long suffixe de cette chaîne qui correspond à un préfixe. Nous ne comptons pas toute la chaîne de préfixe ou de suffixe ici, c'est qu'on appelle l'auto-suffixe et l'auto-préfixe (au moins en russie, vous ne savez pas à propos de termes anglais).
Nous avons donc la chaîne "ababaca". Examinons cela. KMP calcule la Fonction Préfixe pour tous les non-vide préfixe. Nous allons définir
s[i]
que la chaîne de caractères,p[i]
que la fonction Préfixe. le préfixe et le suffixe peuvent se chevaucher.Simple code C++ qui calcule la fonction Préfixe de la chaîne S:
aba is 3rd prefix
?aba
.Mais pourquoi la valeur1
?Que voulez-vous direBecause "a" is common suffix and prefix here
?Ce code peut ne pas être la plus courte, mais facile à comprendre le flux de code.
Simple Code Java pour le calcul de préfixe-Réseau-
Il produit la sortie requise-
0
0
1
2
3
0
1
Python De Mise En Œuvre De
string texte = "ababbabbababbababbabb";
static int arr[30];
de sortie requis stocké dans le val[]