Algorithme Boyer-Moore : comparaison des coûts

In [1]: cout(motif, texte)

Coût : algorithme naïf
Nombre de caractères du texte :  120000
Nombre de caractères du motif :  20
Durée de la recherche (s) :  0,18181410000033793

Coût : algorithme Boyer-Moore
Nombre de caractères du texte :  120000
Nombre de caractères du motif :  20
Durée de la recherche (s) :  0,002768899999864516
from time import perf_counter
from module_boyer_moore import *

# implémentation de l'algorithme naïf
def recherche(m, t):
    lt = len(t)
    lm = len(m)
    lp = []
    for p in range(lt - lm + 1):
        s = ''
        for car in range(p, p + lm):
            s = s + t[car]
        if s == m :
            lp.append(p)
    return lp

def cout(motif, texte):
    debut_rech = perf_counter()
    recherche(motif,texte)
    fin_rech = perf_counter()
    duree_execution = (fin_rech - debut_rech)
    duree_execution = str(duree_execution).replace(".", ",")
    print("\nCoût : algorithme naïf")
    print("Nombre de caractères du texte : ", len(texte))
    print("Nombre de caractères du motif : ", len(motif))
    print("Durée de la recherche (s) : ", duree_execution)
    
    debut_rech = perf_counter()
    recherche_bm(motif,texte)
    fin_rech = perf_counter()
    duree_execution = (fin_rech - debut_rech)
    duree_execution = str(duree_execution).replace(".", ",")
    print("\nCoût : algorithme Boyer-Moore")
    print("Nombre de caractères du texte : ", len(texte))
    print("Nombre de caractères du motif : ", len(motif))
    print("Durée de la recherche (s) : ", duree_execution)

texte = "a" * 120000
motif = "z" * 20

Téléchargement d’un fichier : fonction écrite en langage Python

Auto-évaluation

Évaluez votre degré de réussite. Comparez votre réponse avec la proposition ci-dessus.

1 – Indiquez la durée mise pour réaliser le travail demandé :
Moins de 15 minutes
Entre 15 minutes et 30 minutes
Plus de 30 minutes

2 – Indiquez les conditions de réalisation :
Sans aide (documentation, tutoriel, forum…)
Avec aide :
>>> documentation
>>> tutoriel
>>> forum

3 – indiquez votre degré de réussite du travail demandé :
entre 75 et 100 %
entre 50 et 75 %
entre 25 et 50%
moins de 25 %