• Aucun résultat trouvé

Algorithme

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithme"

Copied!
2
0
0

Texte intégral

(1)

Algorithme de Karp-Rabin

Concepts :Sous-chaîne de caractère Méthodes :Fonction de hachage

Présentation

L’objectif est de rechercher une sous-chaîne de caractèresM de longueurmappelée motif dans une chaîne de caractèresCde longueurn. Un algorithme naïf consiste à comparer successivement le motif à toutes les sous-chaînes deC

On veut rechercher un motif M de longueur m dans un texte T de longueur n. Les textes sont exprimés dans un alphabet de K lettres. Le texte et le motif seront donnés dans deux tableaux, ces tableaux seront indicés à partir de1.

Question 1 :Test d’égalité de mots

Écrire un algorithme qui teste l’égalité de deux mots. Calculer le coût de votre algorithme en nombre de comparaisons de caractères.

Afin de rechercher plus efficacement un motif, on dispose d’une fonction de hachageHsur les mots. Si Aest un tableau de lettresh(A, i, j)représente la valeur de hachage du sous-mot du tableauAdéfini de l’indiceiàjinclus. On suppose que la fonctionhprend des valeurs entières avec06h(A, i, j)6H−1.

SOUS-CHAINE(x,n)

Données:T texte de taille n dans lequel le motif M de taille m est recherché (tableaux de caractères)

Résultat: Les positions du motifM s’il est dans le texte hmotif=h(M[1..m])

fori= 1ton−mdo

hcourant =h(T[i..i+m-1])

if (courant == hmotif)Commentaire 1

if égalité(T[i..i+m-1],M[1..m])Commentaire 2 writei

Algorithme 1 :Algorithme de Karp-Rabin

Question 2 :Commentaires

Écrire les commentaires 1 et 2 et calculer le coût maximal de cet algorithme en nombre de comparaisons de caractères.

Question 3 :Propriétés deh

Quelles sont les propriétés que h doit vérifier pour que cet algorithme soit efficace en moyenne ? Calculer dans ce cas le coût moyen de cet algorithme.

(2)

Algorithme de Karp-Rabin

On suppose que chaque caractère est codé par un entier et que la fonction h s’écrit pour un mot A= (a1,· · · , am)

h(A[1..m]) = (a1+a2+· · ·+am)modulop, avecpun entier donné.

Question 4 :hadditive

Expliquer le rôle de l’entierp. Comment calculerh(T[i..i+m−1])en fonction de h(T[i−1..i+m−2]), en déduire que l’algorithme ne nécessite que deux consultations du tableauT à chaque itération.

On se donne l’alphabet{A, B, C, D}avec le codage standard{0,1,2,3}. Soit T =ABCADBBACABAC, M =CAB.

Question 5 :Exemple

Dérouler l’algorithme pour p = 9 et évaluer le nombre de comparaisons de caractères effectuées. Quel inconvénient voyez-vous à cette fonctionh?

On considère maintenant une nouvelle fonctionh1construite sur le motApar

h1(A[1..m]) = (a1.dm−1+a2.dm−2+· · ·+am−1.d1+am.d0)modulop, avecdun entier donné (base).

Question 6 :hpolynomiale

Expliquer le rôle de l’entierd. Comment calculerh(T[i..i+m−1])en fonction de h(T[i−1..i+m−2]), en déduire que la ligne 13 de l’algorithme ne nécessite que deux consultations du tableauT.

Question 7 :Exemple

Dérouler l’algorithme sur le même exemple ci-dessus pour p = 9et d = 4. Évaluer le nombre de comparaisons de caractères effectuées. Commenter votre résultat.

Algorithmique version du 28 janvier 2015 2/??

Références

Documents relatifs

Montrer qu’il s’agit d’une famille universelle de fonctions

Supposons qu’un groupe E de mineurs ´ ego¨ıstes de bitcoin soient capables de faire la chose suivante : si un mineur hors du groupe r´ eussit ` a publier un nouveau bloc dans

Intermédiaire 5,93 0,35 1269 (1157 LT) Elevée 7,13 0,5 2078 (1839 LT) Par opposition, les muscles de la classe la moins tendre présentent les activités les plus faibles

de première S, paru au BO le 30 septembre 2010 Relever des algorithmes relatif à cette page... Programme officiel de mathématiques de

Probl`eme : grappe faible (secondary clustering) — suite de cases occup´ees par cl´es avec la mˆeme valeur de hachage.. N’est pas certain que l’on trouve une case vide lors

suppression avec adressage ouvert : tr`es difficile utiliser lazy deletion : marquer la case «supprim´ee».. ⇒ facteur de remplissage inclut les

Une pile est représentée par une structure regroupant un entier, pour le sommet, et un tableau de MAX_PILE éléments (ici, des caractères). II.1- En utilisant la

Si le nombre de bits dans un message est un multiple de 8, pour le rendre compact, on peut représenter le message en hexadécimal.. L’objet du bourrage de message est de rendre