Algorithmique : Recherche d’un mot.

Dictionnaire :
  • un ens. d’enregistrements
  • accédé par des clés dans un espace ordonné
  • Chercher (clé)
  • Insérer (clé)
  • Supprimer (clé)
  • Concaténer 2 dico :
    • max(Dict1) < min(Dict2)
  • Scinder Dict, clé :
    • Dict1 $≤$ clé
    • Dict2 $>$ clé

Arbres balisés

Complexité $= 𝛩(b\log_a(n))$

Question : scission en $\log(n)$ sur les AVL ?

File de priorité

Cas le plus important : simulateur : événements classés par date d’échéance.

Création d’un tas : complexité : mieux que $n\log n$ : en $𝛳(n)$

8.1 + 4.2 + 2.3 + 1.4

8 4 2 1 = 15 <= 16
  4 2 1 = 7 <= 8
    2 1 = 3 <= 4
      1 = 1 <= 2
_________________
            <= 32

Tas binomial

Longueur de la liste : en $\log(n)$.

Si on a l’union, il faut utiliser tas binomial.

Si on a $n$ sommets en tout dans notre tas : en écrivant $n$ en base $2$, on a un $1$ à l’indice $i$ ssi il y a l’arbre $B_i$ dans notre tas.

Union ≡ addition en binaire, opération fondamentale.

Faire de même que l’addition en binaire : $B_i ≡ i$-ème bit vaut $1$.

Ce qu’on gagne avec les tas binomiaux : le min en $O(1)$, toutes les autres opérations en $O(log(n))$.

Tas de Fibonacci

Inventés par Tarjan :

$O(1)$ amorti

$O(k)$

$k$ opérations.

Heuristique : on profite de l’opération chère pour rééquilibrer les arbres tournois.

Attention : liste du tas plus en $\log(n)$, comme il n’y a pas de rééquilibrage lors de l’insertion !

Opération clé à faire de manière intelligente : extraction du minimum.

Sur le transparent :

  • gris = marqué
  • petits 1, 2, … en superscript = arbre de degré 1, 2, …

NB: quand on extrait le minimum, on ne change pas les marquages.

La seule opération qui change les marquages : diminuer la valeur. Mais attention : on ne marque pas la racine, pq? :

  • Analyse de complexité

Une racine ne peut être marquée que si elle était fils d’une racine qui a été extraite.


Elimination du min d’un arbre donné : en $O(degré de la racine)$

Tas binomial : diminution de valeurs en $O(1)$, alors que pour les 2 autres structures : c’était en $O(1)$.

Diminution de valeur, complexité amortie :

  • $a(T)$ a augmenté d’au plus $m$
  • $m(T)$ a diminué d’au plus $m-2$.

$𝛥Pot = O(m+1) -2C(m-2) = O(1)$

Matroïdes :

  • familles libres
  • sous-graphes acycliques d’un graphe connexe

Pseudo-matroïde : différence

  • avec matroïde : quand on on élimine un élément, on ne le regarde plus après
  • pseudo-matroïde : on peut le revoir
Arbre à $n$ sommets :

Graphe connexe acyclique.

Algo de Prim

Grâce aux tas de Fibonacci : Complexité passe de $O(\vert A\vert \log(\vert S) \vert)$ (pour tas binomial) à $O(\vert S\vert \log(\vert S) \vert + \vert A \vert)$ (pour tas de Fibonacci) : gain énorme, car le graphe est connexe, d’où :

\[|S| << |A|\]

Leave a comment