From 31e592be6ea5110f3ff89d9b4cb897cfee9be0c2 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Tue, 11 Jan 2022 16:54:16 +0100
Subject: [PATCH] formatting

---
 slides/cours_13.md | 74 ++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 65 insertions(+), 9 deletions(-)

diff --git a/slides/cours_13.md b/slides/cours_13.md
index d0a6720..45b0982 100644
--- a/slides/cours_13.md
+++ b/slides/cours_13.md
@@ -372,6 +372,10 @@ Dans ce qui suit la taille de la table est `table_size`.
 
 # La méthode séquentielle
 
+\footnotesize
+
+## Comment ça marche?
+
 * Quand l'index est déjà occupé on regarde sur la position suivante, jusqu'à en
   trouver une libre.
 
@@ -392,6 +396,10 @@ table[index].state = OCCUPIED;
 
 # Méthode linéaire
 
+\footnotesize
+
+## Comment ça marche?
+
 * Comme la méthode séquentielle mais on "saute" de `k`.
 
 ```C
@@ -413,6 +421,10 @@ Cette méthode répartit mieux les regroupements au travers de la table.
 
 # Méthode du double hashing
 
+\footnotesize
+
+## Comment ça marche?
+
 * Comme la méthode linéaire, mais `k = h2(key)` (variable).
 
 ```C
@@ -434,16 +446,20 @@ h2(key) = (table_size - 2) - key % (table_size -2)
 
 # Méthode pseudo-aléatoire
 
+\footnotesize
+
+## Comment ça marche?
+
 * Comme la méthode linéaire mais on génère `k` pseudo-aléatoirement.
 
-```C
-index = h(key);
-while (table[index].state == OCCUPIED && table[index].key != key) {
-   index = (index + random_number) % table_size; // attention à pas dépasser
-}
-table[index].key = key;
-table[index].state = OCCUPIED;
-```
+    ```C
+    index = h(key);
+    while (table[index].state == OCCUPIED && table[index].key != key) {
+        index = (index + random_number) % table_size;
+    }
+    table[index].key = key;
+    table[index].state = OCCUPIED;
+    ```
 
 ## Comment s'assurer qu'on va bien retrouver la bonne clé?
 
@@ -461,6 +477,46 @@ table[index].state = OCCUPIED;
 
 # Méthode quadratique
 
+* La fonction des indices de collision est de degré 2.
+* Soit $J_0=h(key)$, les indices de collision se construisent comme:
+
+    ```C 
+    J_i = J_0 + i^2 % table_size, i > 0,
+    J_0 = 100, J_1 = 101, J_2 = 104, J_3 = 109, ...
+    ```
+
+## Problème possible?
+
+. . .
+
+* Calculer le carré peut-être "lent".
+* En fait on peut ruser un peu.
+
+# Méthode quadratique
+
+\footnotesize
+
+```C 
+J_i = J_0 + i^2 % table_size, i > 0,
+J_0 = 100
+          \
+           d_0 = 1 
+          /        \
+J_1 = 101           Delta = 2
+          \        /
+           d_1 = 3
+          /        \
+J_2 = 104           Delta = 2
+          \        /
+           d_2 = 5
+          /        \
+J_3 = 109           Delta = 2
+          \        /
+           d_3 = 7
+          /        
+J_4 = 116
+J_{i+1} = J_i + d_i,
+d_{i+1} = d_i + Delta, d_0 = 1, i > 0.
+```
 
 
-# Méthode de chaînage
-- 
GitLab