Adloun

Étude — l'index des mots, de bout en bout

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 17 — Les dictionnaires dévoilés : le hachage

Énoncé

Construire l'index inverse d'un texte fourni sous forme de liste de mots, associant à chaque mot la liste de toutes ses positions. (a) Implémenter cette fonction et donner sa complexité temporelle. (b) En déduire une méthode efficace pour trouver les positions d'un mot et chercher les mots apparaissant plus de fois. Comparer avec le coût d'une recherche sans indexation. (c) Discuter de l'usage de la mémoire et de l'échange espace-temps. (d) Expliquer en quoi cette structure est la base des moteurs de recherche sur le Web.

Corrigé

(a)

def index_inverse(mots: list) -> dict:
    index = {}
    for i in range(len(mots)):
        mot = mots[i]
        if mot not in index:
            index[mot] = []
        index[mot].append(i)
    return index

Cette construction effectue un seul parcours de la liste de mots de longueur . À chaque mot, l'accès ou l'insertion dans le dictionnaire s'effectue en moyen. La complexité de construction est donc linéaire, en en moyenne. (b)

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.