M03 - Logique booléenne, De Morgan et tableaux de Karnaugh
Objectif
Écrire une table de vérité, simplifier une expression par le calcul (lois) ou par un tableau de Karnaugh, et nier une expression avec De Morgan.
1. Les opérateurs
| (ET) | (OU) | (NON) | (OU exclusif) | |||
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 1 |
Priorité : NON puis ET puis OU → .
En informatique : ET = and/&&/&, OU = or/||/|, NON = not/!, XOR = ^. Le ET binaire sert à calculer une adresse réseau (IP ET masque) → R03 - Adressage IPv4 et classes ; le XOR sert à la parité RAID → ST01 - RAID.
2. Les lois à connaître
| Nom | Avec ET | Avec OU |
|---|---|---|
| Élément neutre | ||
| Élément absorbant | ||
| Idempotence | ||
| Complément | ||
| Double négation | ||
| Distributivité | ||
| Absorption | ||
| Absorption 2 |
De Morgan ⭐
Règle : on barre chaque terme et on échange + et ·.
Exemples :
- Année bissextile : →
3. Tableaux de Karnaugh
Méthode
- Remplir le tableau à partir de la table de vérité (colonnes en code Gray : 00, 01, 11, 10 - un seul bit change à chaque fois).
- Entourer les 1 par rectangles de 1, 2, 4 ou 8 cases, les plus grands possible, chevauchements autorisés, le tableau est cyclique (les bords se touchent).
- Pour chaque groupe, garder les variables qui ne changent pas ; l’expression finale = somme (OU) des groupes.
Exemple 1 -
| \ | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
- Groupe vertical colonne : varie → reste .
- Groupe horizontal ligne , colonnes 11 et 10 : varie → reste .
- ✅ (vérifié par
table_verite.py).
Exemple 2 (BTS) - bonus joueur :
Table : .
| \ | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 | 1 |
- Toute la ligne (4 cases) → .
- Colonne (m1 et m5) → → .
- (2 termes).
Simplification par le calcul (même résultat, plus long)
. Comme (absorption), on peut écrire . Or (absorption 2), donc . D’où . Karnaugh y arrive en 10 secondes !
Karnaugh à 4 variables
Lignes et colonnes toutes deux en code Gray (00, 01, 11, 10). Les 4 coins forment un groupe.
4. Exercice
Simplifier .
Correction
Mintermes : = m1, = m3, = m7, = m6.
\ 00 01 11 10 0 0 1 1 0 1 0 0 1 1 Groupes : (m1, m3) → ; (m7, m6) → . . Vérification :
python3 table_verite.py "!a.!b.c + !a.b.c + a.b.c + a.b.!c" "!a.c + a.b"
5. Script : scripts/maths/table_verite.py
python3 table_verite.py "a.b + !a.b.c" # table de vérité
python3 table_verite.py "a.b + !a.b.c" "b.c + a.b" # équivalentes ? ✅
python3 table_verite.py --mintermes "a.b + !b.c + !c.a" # F = Σm(1, 4, 5, 6, 7)
python3 table_verite.py "!(a + b)" "!a.!b" # vérifier De MorganNotation : . ou * = ET, + = OU, ! = NON.