Mathématiques pour l'informatique 201-N11 • Cégep à Montréal

Exercices corrigés : logique booléenne et mathématique (201-N11)

Voici la série d'exercices corrigés de logique booléenne du cours Mathématiques pour l'informatique 201-N11, suivi au cégep par les étudiants en techniques et en sciences de l'informatique à Montréal. La partie A couvre les bases : les cinq connecteurs et leurs tables de vérité, les lois de l'algèbre de Boole et la simplification, l'implication avec sa contraposée, sa réciproque et sa négation, les quantificateurs et le renversement des \forall et \exists, puis le passage d'une table de vérité à la forme canonique en somme de produits. La partie B monte au niveau examen : le tableau de Karnaugh à quatre variables avec les groupes qui traversent les bords, le demi-additionneur et l'additionneur complet, l'universalité de la porte NAND, un système de contrôle d'accès à écrire puis à simplifier, et l'étude de validité de trois raisonnements.

Le fil de la série : la table de vérité est le juge, l'algèbre de Boole n'est qu'un raccourci. Chaque fois qu'une simplification est douteuse, elle se tranche en écrivant les lignes ; chaque fois qu'une équivalence est annoncée, elle se prouve en comparant deux colonnes. Aucune intuition tirée du français ne vaut une ligne de table.

Les pièges désignés nommément dans les corrigés : confondre une implication avec sa réciproque, oublier que De Morgan change le connecteur en même temps qu'il lève la barre, croire que la négation de « tous » est « aucun », et écrire un OU là où le cahier des charges impose un facteur commun.

Série autocorrigée Tape tes réponses sous chaque question : la page te dit juste ou faux avant d'ouvrir la correction. Avec un compte, chaque bonne réponse du premier coup rapporte des points.

Ce chapitre fait partie de Mathématiques pour l'informatique, 201-N11
Avant de commencer Fiche de révision : les pièges et la méthode de ce chapitre

Rappel de cours

  • Une table de vérité à nn propositions compte 2n2^{n} lignes. Il existe 22n2^{2^{n}} fonctions booléennes de nn variables.
  • pqp \Rightarrow q n'est fausse que sur la ligne p=1p=1, q=0q=0. Ailleurs elle est vraie, y compris à vide quand p=0p=0.
  • pq=¬pqp \Rightarrow q = \lnot p \lor q, et ¬(pq)=p¬q\lnot(p \Rightarrow q) = p \land \lnot q.
  • Contraposée de pqp \Rightarrow q : ¬q¬p\lnot q \Rightarrow \lnot p, toujours équivalente. Réciproque : qpq \Rightarrow p, sans lien de vérité avec l'originale.
  • De Morgan : AB=A+B\overline{AB} = \overline{A}+\overline{B} et A+B=AB\overline{A+B} = \overline{A}\,\overline{B}.
  • Distributivité double : A(B+C)=AB+ACA(B+C) = AB+AC et A+BC=(A+B)(A+C)A+BC = (A+B)(A+C).
  • Absorption : A+AB=AA+AB = A et A(A+B)=AA(A+B) = A. Idempotence : AA=AAA=A et A+A=AA+A=A.
  • Négation d'un quantificateur : ¬(x,P(x))=x,¬P(x)\lnot(\forall x, P(x)) = \exists x, \lnot P(x) et ¬(x,P(x))=x,¬P(x)\lnot(\exists x, P(x)) = \forall x, \lnot P(x).
  • Forme canonique en somme de produits : un terme par ligne où la fonction vaut 1, variable barrée si elle vaut 0 sur cette ligne.
  • Karnaugh : les groupes sont des rectangles de 2k2^{k} cases, les bords opposés sont voisins, un groupe de 2k2^{k} cases élimine kk variables.

Partie A : les bases (/50)

Exercice 1 : Connecteurs logiques et tables de vérité

Une proposition est un énoncé qui vaut vrai (1) ou faux (0), jamais les deux. Les connecteurs se définissent uniquement par leur table de vérité : c'est elle, et non l'intuition du français, qui dit ce qu'une expression vaut.

ppqqpqp \land qpqp \lor qpqp \Rightarrow q
11111
10010
01011
00001
  • a) Construisez la table de vérité complète de p¬qp \land \lnot q.
  • b) Sur quelle ligne, et sur elle seule, l'implication pqp \Rightarrow q est-elle fausse ? Traduisez cette ligne en français avec l'exemple : « si le fichier existe, alors la lecture réussit ».
  • c) Construisez la table du ou exclusif pqp \oplus q, puis celle de ¬(pq)\lnot(p \Leftrightarrow q). Que concluez-vous ?
  • d) Combien de lignes compte la table de vérité de cinq propositions ? Combien existe-t-il de fonctions booléennes distinctes de deux variables ?

Tape tes réponses, la page te dit juste ou faux 0/9

a)
b)
c)
d)
Voir la correction

Réponses

  • a) ¬q\lnot q vaut 0,1,0,10,1,0,1 et p¬qp\land\lnot q vaut 0,1,0,00,1,0,0 : vraie sur la seule ligne p=1p=1, q=0q=0
  • b) La ligne p=1p=1, q=0q=0 : la promesse n'est trahie que si le fichier existe et que la lecture échoue
  • c) Les deux colonnes valent 0,1,1,00,1,1,0 : pqp \oplus q et ¬(pq)\lnot(p \Leftrightarrow q) sont la même fonction
  • d) 25=322^{5}=32 lignes et 24=162^{4}=16 fonctions booléennes de deux variables

a) ¬q\lnot q inverse la colonne de qq, puis on applique le ET, qui ne vaut 1 que si les deux colonnes valent 1. Lignes dans l'ordre (p,q)=(1,1),(1,0),(0,1),(0,0)(p,q)=(1,1),(1,0),(0,1),(0,0) : ¬q\lnot q vaut 0,1,0,10,1,0,1 et p¬qp\land\lnot q vaut 0,1,0,00,1,0,0. L'expression n'est donc vraie que sur la ligne p=1p=1, q=0q=0. C'est exactement la ligne où pqp\Rightarrow q est fausse, ce qui n'est pas un hasard : p¬qp\land\lnot q est la négation de pqp\Rightarrow q.

b) Une seule ligne : p=1p=1 et q=0q=0. Une implication n'est fausse que lorsque la prémisse est vraie et la conclusion fausse. Sur l'exemple : la promesse « si le fichier existe, alors la lecture réussit » n'est trahie que dans le cas où le fichier existe bel et bien et où la lecture échoue quand même. Si le fichier n'existe pas, la promesse n'est pas testée, et on la déclare tenue : les deux dernières lignes valent 1. C'est le point que les étudiants refusent le plus longtemps, parce que le « si » du français porte une idée de cause que le \Rightarrow de la logique n'a pas.

c) pqp\oplus q vaut 1 quand les deux valeurs diffèrent : 0,1,1,00,1,1,0 sur les quatre lignes. pqp\Leftrightarrow q vaut 1 quand elles sont égales, soit 1,0,0,11,0,0,1, donc sa négation vaut 0,1,1,00,1,1,0. Les deux colonnes sont identiques : pqp\oplus q et ¬(pq)\lnot(p\Leftrightarrow q) sont la même fonction booléenne. Deux expressions sont équivalentes exactement quand leurs tables coïncident ligne à ligne, et c'est la seule preuve d'équivalence qui ne demande aucune astuce.

d) Avec nn propositions, chaque proposition prend 2 valeurs indépendamment des autres : la table compte 2n2^{n} lignes, donc 25=322^{5}=32 lignes pour cinq propositions. Pour compter les fonctions de deux variables, on remarque qu'une fonction est entièrement déterminée par la colonne de résultats qu'elle produit, soit 4 cases à remplir par 0 ou 1 : il y a 24=162^{4}=16 fonctions booléennes de deux variables. Elles ont toutes un nom : ET, OU, XOR, NAND, NOR, l'implication, les deux constantes, et ainsi de suite. Piège classique : répondre 4 en confondant le nombre de lignes et le nombre de fonctions.

Exercice 2 : Algèbre de Boole : les lois et la simplification

L'algèbre de Boole donne les mêmes réponses que la table de vérité, mais sans écrire les lignes. On note A\overline{A} la négation, le produit ABAB le ET et la somme A+BA+B le OU. Toute simplification doit préserver la table : si la table change, la simplification est fausse.

  • a) Simplifiez A+ABA + AB et énoncez la loi utilisée.
  • b) Simplifiez (A+B)(A+B)(A+B)(A+\overline{B}).
  • c) Simplifiez AB+A\overline{AB} + \overline{A}.
  • d) Simplifiez A+B(A+B)\overline{\overline{A}+\overline{B}} \cdot (A+B).
  • e) Que valent AAA \oplus A, AAA \oplus \overline{A} et A0A \oplus 0 ?
  • f) Vérifiez le résultat de la question b) en dressant sa table de vérité.

Tape tes réponses, la page te dit juste ou faux 0/10

a)
b)
c)
d)
e)
f)
Voir la correction

Réponses

  • a) A+AB=AA+AB = A, par absorption
  • b) (A+B)(A+B)=A(A+B)(A+\overline{B}) = A
  • c) AB+A=A+B=AB\overline{AB}+\overline{A} = \overline{A}+\overline{B} = \overline{AB}
  • d) ABAB
  • e) AA=0A \oplus A = 0, AA=1A \oplus \overline{A} = 1, A0=AA \oplus 0 = A
  • f) Le produit vaut 1,1,0,01,1,0,0 : c'est la colonne de AA, la simplification est confirmée

a) A+AB=A(1+B)=A1=AA + AB = A(1+B) = A \cdot 1 = A, car 1+B=11+B=1 : un OU avec 1 vaut toujours 1. C'est la loi d'absorption. Lecture : si AA suffit déjà à rendre l'expression vraie, ajouter un cas plus exigeant (AA ET BB) n'ajoute rien. Piège : écrire A+AB=A+BA+AB = A+B en « simplifiant » comme en algèbre ordinaire.

b) On développe : (A+B)(A+B)=AA+AB+BA+BB(A+B)(A+\overline{B}) = AA + A\overline{B} + BA + B\overline{B}. Or AA=AAA=A (idempotence), BB=0B\overline{B}=0 (une variable et sa négation ne sont jamais vraies ensemble), donc il reste A+AB+AB=A(1+B+B)=AA + A\overline{B} + AB = A(1+\overline{B}+B) = A. On peut aussi appliquer directement la distributivité du OU sur le ET : (A+B)(A+B)=A+BB=A+0=A(A+B)(A+\overline{B}) = A + B\overline{B} = A+0 = A. Cette seconde distributivité, X+YZ=(X+Y)(X+Z)X+YZ = (X+Y)(X+Z), n'a pas d'équivalent avec les nombres réels : c'est elle qu'on oublie.

c) De Morgan donne AB=A+B\overline{AB} = \overline{A}+\overline{B}, donc AB+A=A+B+A=A+B\overline{AB}+\overline{A} = \overline{A}+\overline{B}+\overline{A} = \overline{A}+\overline{B} par idempotence, soit encore AB\overline{AB}. L'expression valait déjà AB\overline{AB} dès le départ : le terme A\overline{A} était absorbé.

d) De Morgan sur le premier facteur : A+B=AB=AB\overline{\overline{A}+\overline{B}} = \overline{\overline{A}} \cdot \overline{\overline{B}} = AB. L'expression devient AB(A+B)=ABA+ABB=AB+AB=ABAB(A+B) = ABA + ABB = AB + AB = AB. Résultat : ABAB. La barre longue se lève d'un seul coup et change le connecteur ; la barre courte sur chaque lettre, elle, reste.

e) AA=0A \oplus A = 0 : deux valeurs identiques donnent 0. AA=1A \oplus \overline{A} = 1 : elles diffèrent toujours. A0=AA \oplus 0 = A : le XOR avec 0 laisse passer. Ces trois identités sont la base du chiffrement par XOR et de l'échange de deux variables sans variable auxiliaire.

f) Table de (A+B)(A+B)(A+B)(A+\overline{B}) sur les lignes (A,B)=(1,1),(1,0),(0,1),(0,0)(A,B)=(1,1),(1,0),(0,1),(0,0) : A+BA+B vaut 1,1,1,01,1,1,0 ; A+BA+\overline{B} vaut 1,1,0,11,1,0,1 ; leur produit vaut 1,1,0,01,1,0,0. C'est exactement la colonne de AA. La table confirme la simplification, et c'est le seul contrôle qui ne se discute pas.

Exercice 3 : Implication : contraposée, réciproque, négation

On considère l'énoncé PP : « si un programme compile, alors il ne contient pas d'erreur de syntaxe ». On note cc : « le programme compile » et ss : « le programme contient une erreur de syntaxe », de sorte que PP s'écrit c¬sc \Rightarrow \lnot s.

  • a) Écrivez la contraposée de PP en symboles puis en français.
  • b) Écrivez la réciproque de PP en symboles puis en français. Est-elle vraie ?
  • c) Écrivez la négation de PP. Attention : ce n'est pas une implication.
  • d) Démontrez par table de vérité que pqp \Rightarrow q et ¬pq\lnot p \lor q sont équivalentes.
  • e) Déduisez-en une écriture de ¬(pq)\lnot(p \Rightarrow q) sans implication.
  • f) Une implication dont la prémisse est fausse est dite vraie « à vide ». Donnez un exemple tiré du code.

Tape tes réponses, la page te dit juste ou faux 0/9

a)
b)
c)
d)
e)
f)
Voir la correction

Réponses

  • a) s¬cs \Rightarrow \lnot c : si le programme a une erreur de syntaxe, il ne compile pas
  • b) ¬sc\lnot s \Rightarrow c, et elle est FAUSSE : erreur de type, bibliothèque manquante, fichier introuvable
  • c) ¬P=cs\lnot P = c \land s : le programme compile ET contient une erreur de syntaxe
  • d) Les deux colonnes valent 1,0,1,11,0,1,1 : les expressions sont équivalentes
  • e) ¬(pq)=p¬q\lnot(p \Rightarrow q) = p \land \lnot q
  • f) Une boucle sur un tableau vide : « pour tout tour, le compteur augmente » est vrai à vide et ne prouve rien

a) Contraposée : s¬cs \Rightarrow \lnot c, soit « si le programme contient une erreur de syntaxe, alors il ne compile pas ». La contraposée échange ET nie les deux membres. Elle a toujours la même valeur de vérité que l'implication de départ : les deux ont la même table. C'est ce qui autorise le raisonnement par contraposition en démonstration.

b) Réciproque : ¬sc\lnot s \Rightarrow c, soit « si le programme ne contient pas d'erreur de syntaxe, alors il compile ». Elle est fausse : un programme syntaxiquement correct peut échouer à la compilation pour une erreur de type, une bibliothèque manquante ou un fichier introuvable. C'est un contre-exemple, et un seul suffit. La réciproque n'a aucune raison de partager la valeur de vérité de l'implication : les confondre est l'erreur de raisonnement la plus fréquente du cours.

c) Nier une implication, c'est affirmer la prémisse et nier la conclusion : ¬P=cs\lnot P = c \land s, soit « le programme compile ET il contient une erreur de syntaxe ». La négation d'une implication n'est jamais une implication, et surtout pas csc \Rightarrow s. Le repère : une promesse ne se réfute qu'en exhibant le cas où elle est trahie.

d) Table sur les lignes (p,q)=(1,1),(1,0),(0,1),(0,0)(p,q)=(1,1),(1,0),(0,1),(0,0). pqp \Rightarrow q vaut 1,0,1,11,0,1,1. Pour ¬pq\lnot p \lor q : ¬p\lnot p vaut 0,0,1,10,0,1,1, donc ¬pq\lnot p \lor q vaut 1,0,1,11,0,1,1. Les deux colonnes coïncident sur les quatre lignes, donc les expressions sont équivalentes. Cette identité est la porte d'entrée de toute la logique dans les circuits : une implication se câble avec un NON et un OU.

e) ¬(pq)=¬(¬pq)=p¬q\lnot(p \Rightarrow q) = \lnot(\lnot p \lor q) = p \land \lnot q par De Morgan. On retrouve la réponse de la question c) par le calcul, ce qui la confirme.

f) Exemple : dans une boucle qui parcourt un tableau vide, l'énoncé « pour tout tour effectué, le compteur augmente » est vrai à vide, puisqu'aucun tour n'est effectué. Un test unitaire portant sur un tableau vide passe donc toujours si sa condition porte sur les éléments : il ne prouve rien. C'est pourquoi une spécification de la forme « si le tableau contient un doublon, alors la fonction renvoie vrai » doit être testée sur un cas où la prémisse est effectivement vraie.

Exercice 4 : Quantificateurs et négation d'un énoncé quantifié

Un tableau TT contient nn nombres entiers, indexés de 0 à n1n-1. On note T[i]T[i] son élément d'indice ii. Les quantificateurs \forall (pour tout) et \exists (il existe) transforment une propriété portant sur un élément en une propriété portant sur le tableau entier.

  • a) Traduisez en symboles : « tous les éléments de TT sont strictement positifs ».
  • b) Écrivez la négation de cet énoncé, en symboles et en français.
  • c) Traduisez : « TT contient au moins un doublon », puis niez cet énoncé.
  • d) Les énoncés xZ, yZ, x+y=0\forall x \in \mathbb{Z},\ \exists y \in \mathbb{Z},\ x+y=0 et yZ, xZ, x+y=0\exists y \in \mathbb{Z},\ \forall x \in \mathbb{Z},\ x+y=0 sont-ils vrais ? Que montre la comparaison ?
  • e) Sur un tableau vide, l'énoncé de la question a) est-il vrai ou faux ?
  • f) Combien de comparaisons faut-il au pire pour vérifier l'énoncé de la question a) ? Et pour le réfuter ?

Tape tes réponses, la page te dit juste ou faux 0/12

a)
b)
c)
d)
e)
f)
Voir la correction

Réponses

  • a) i{0,,n1}, T[i]>0\forall i \in \{0,\dots,n-1\},\ T[i] > 0
  • b) i{0,,n1}, T[i]0\exists i \in \{0,\dots,n-1\},\ T[i] \le 0 : au moins un élément est négatif ou nul
  • c) i, j, (ij)(T[i]=T[j])\exists i,\ \exists j,\ (i \neq j) \land (T[i]=T[j]), dont la négation est i, j, (ij)(T[i]T[j])\forall i,\ \forall j,\ (i \neq j) \Rightarrow (T[i] \neq T[j])
  • d) Le premier est vrai (prendre y=xy=-x), le second faux : l'ordre des quantificateurs n'est pas décoratif
  • e) Vrai, à vide
  • f) nn comparaisons pour vérifier, une seule au mieux pour réfuter

a) i{0,,n1}, T[i]>0\forall i \in \{0,\dots,n-1\},\ T[i] > 0. On quantifie sur les indices, pas sur les valeurs : c'est la forme qui se traduit directement en boucle.

b) La négation échange le quantificateur et nie la propriété : i{0,,n1}, T[i]0\exists i \in \{0,\dots,n-1\},\ T[i] \le 0, soit « il existe au moins un élément de TT qui est négatif ou nul ». En français, la négation de « tous » n'est pas « aucun » mais « au moins un ne l'est pas ». Confondre les deux est l'erreur la plus coûteuse du chapitre, parce qu'elle passe inaperçue à la relecture.

c) « TT contient au moins un doublon » s'écrit i, j, (ij)(T[i]=T[j])\exists i,\ \exists j,\ (i \neq j) \land (T[i]=T[j]). Sa négation est i, j, (ij)(T[i]T[j])\forall i,\ \forall j,\ (i \neq j) \Rightarrow (T[i] \neq T[j]) : tous les éléments sont deux à deux distincts. Notez que la négation d'un \exists suivi d'un ET donne un \forall suivi d'une implication, et non d'un ET.

d) Le premier est vrai : pour chaque xx, on choisit y=xy=-x, et ce choix a le droit de dépendre de xx puisque yy est quantifié après. Le second est faux : il faudrait un unique yy qui annule tous les xx à la fois, or yy conviendrait pour x=yx=-y et échouerait pour x=y+1x=-y+1. La comparaison montre que l'ordre des quantificateurs n'est pas décoratif : \forall\exists et \exists\forall sont deux énoncés différents, et l'un peut être vrai quand l'autre est faux.

e) Il est vrai. Sur un tableau vide il n'y a aucun indice ii, donc aucune occasion de trouver un contre-exemple : l'énoncé est vrai à vide. Une fonction qui parcourt le tableau et renvoie vrai si aucune violation n'a été trouvée renvoie donc bien vrai sur le tableau vide, ce qui est le comportement correct et non un bogue.

f) Pour vérifier l'énoncé, il faut aller au bout : nn comparaisons au pire, et exactement nn quand l'énoncé est vrai. Pour le réfuter, un seul contre-exemple suffit, donc 1 comparaison au mieux, nn au pire si le seul élément fautif est le dernier. Cette asymétrie est celle du \forall : coûteux à confirmer, parfois immédiat à infirmer. Pour un \exists, c'est l'inverse.

Exercice 5 : De la table de vérité à l'expression : formes normales

Une fonction booléenne f(A,B,C)f(A,B,C) est donnée par sa table de vérité. Toute fonction admet une écriture canonique en somme de produits : on garde les lignes où ff vaut 1, on écrit pour chacune le produit des trois variables (barrées quand elles valent 0), et on relie ces produits par des OU.

AABBCCff
0000
0010
0100
0111
1000
1011
1101
1111
  • a) Écrivez la forme canonique en somme de produits de ff.
  • b) Combien de portes ET, OU et NON faudrait-il pour câbler cette forme telle quelle ?
  • c) Montrez que f=AB+BC+ACf = AB + BC + AC.
  • d) Décrivez en une phrase de français ce que calcule ff.
  • e) Écrivez la forme canonique de f\overline{f} et vérifiez qu'elle a bien 4 termes.

Tape tes réponses, la page te dit juste ou faux 0/12

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) f=ABC+ABC+ABC+ABCf = \overline{A}BC + A\overline{B}C + AB\overline{C} + ABC
  • b) 8 ET, 3 NON et 3 OU, soit 14 portes
  • c) f=AB+BC+ACf = AB+BC+AC : mêmes quatre lignes, et 5 portes au lieu de 14
  • d) La fonction majorité : vraie dès que deux des trois variables valent 1
  • e) f=ABC+ABC+ABC+ABC\overline{f} = \overline{A}\,\overline{B}\,\overline{C} + \overline{A}\,\overline{B}C + \overline{A}B\overline{C} + A\overline{B}\,\overline{C}, 4 termes, et 4+4=84+4=8 lignes

a) Les lignes où f=1f=1 sont (0,1,1)(0,1,1), (1,0,1)(1,0,1), (1,1,0)(1,1,0) et (1,1,1)(1,1,1). Chaque ligne donne un produit : ABC\overline{A}BC, ABCA\overline{B}C, ABCAB\overline{C} et ABCABC. D'où f=ABC+ABC+ABC+ABCf = \overline{A}BC + A\overline{B}C + AB\overline{C} + ABC. La règle : une variable qui vaut 1 sur la ligne entre telle quelle, une variable qui vaut 0 entre barrée. Chaque produit vaut 1 sur sa ligne et sur elle seule, donc la somme vaut 1 exactement sur les quatre lignes voulues.

b) Chaque produit de trois variables demande 2 portes ET à deux entrées, soit 8 portes ET, plus 3 portes NON (une par variable barrée, ici A\overline{A}, B\overline{B}, C\overline{C}), plus 3 portes OU pour relier les 4 termes. Total : 14 portes. C'est précisément ce coût qui motive la simplification.

c) On développe la forme proposée. ABAB vaut 1 sur les lignes (1,1,0)(1,1,0) et (1,1,1)(1,1,1) ; BCBC vaut 1 sur (0,1,1)(0,1,1) et (1,1,1)(1,1,1) ; ACAC vaut 1 sur (1,0,1)(1,0,1) et (1,1,1)(1,1,1). La réunion de ces lignes est {(0,1,1),(1,0,1),(1,1,0),(1,1,1)}\{(0,1,1),(1,0,1),(1,1,0),(1,1,1)\}, exactement l'ensemble des lignes où f=1f=1, et aucune autre ligne n'est atteinte. Les tables coïncident, donc f=AB+BC+ACf = AB+BC+AC. Par le calcul : ABCABC apparaît dans les trois termes et se laisse dupliquer par idempotence, ce qui permet de recoller ABC+ABC=BC\overline{A}BC + ABC = BC, ABC+ABC=ACA\overline{B}C+ABC = AC et ABC+ABC=ABAB\overline{C}+ABC = AB. On passe de 14 portes à 5.

d) ff vaut 1 exactement quand au moins deux des trois variables valent 1 : c'est la fonction majorité. Elle sert au vote à trois modules dans les systèmes redondants, où l'on accepte la panne d'un capteur sur trois.

e) f\overline{f} vaut 1 sur les quatre lignes restantes : (0,0,0)(0,0,0), (0,0,1)(0,0,1), (0,1,0)(0,1,0) et (1,0,0)(1,0,0). D'où f=ABC+ABC+ABC+ABC\overline{f} = \overline{A}\,\overline{B}\,\overline{C} + \overline{A}\,\overline{B}C + \overline{A}B\overline{C} + A\overline{B}\,\overline{C}, soit bien 4 termes. Les 8 lignes se répartissent entre ff et f\overline{f} sans reste : c'est un contrôle gratuit à faire systématiquement.

Partie B : problemes et raisonnement (/50)

Exercice 6 : Tableau de Karnaugh à quatre variables

Le tableau de Karnaugh range les 24=162^{4}=16 lignes d'une table à quatre variables dans une grille où deux cases voisines ne diffèrent que par une seule variable. Regrouper deux cases voisines élimine cette variable ; un groupe de 4 en élimine 2, un groupe de 8 en élimine 3. Les groupes doivent être des rectangles dont le nombre de cases est une puissance de 2, et les bords opposés du tableau sont voisins.

On considère f(A,B,C,D)f(A,B,C,D) qui vaut 1 sur les combinaisons dont le numéro décimal 8A+4B+2C+D8A+4B+2C+D appartient à {0,2,5,7,8,10,13,15}\{0, 2, 5, 7, 8, 10, 13, 15\}, et 0 ailleurs. Le tableau ci-dessous a été rempli par un étudiant.

AB\CDAB \backslash CD0000010111111010
00001011
01010110
11110110
10101011
  • a) Vérifiez que la case de la ligne AB=01AB=01 et de la colonne CD=11CD=11 correspond bien à un minterm de la liste.
  • b) Le tableau contient des erreurs : certaines cases portent un 1 dont le numéro ne figure pas dans la liste. Trouvez-les et corrigez-les.
  • c) Sur le tableau corrigé, formez les groupes maximaux et donnez l'expression simplifiée de ff.
  • d) Reconnaissez la fonction obtenue et écrivez-la avec un seul connecteur.
  • e) Comparez le nombre de portes de la forme canonique et de la forme simplifiée.

Tape tes réponses, la page te dit juste ou faux 0/11

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 8(0)+4(1)+2(1)+1=78(0)+4(1)+2(1)+1 = 7, qui figure bien dans la liste
  • b) Les numéros 3 et 11 de la colonne CD=11CD=11 sont fautifs : ces deux cases valent 0, et il reste 8 cases à 1
  • c) f=BD+BDf = \overline{B}\,\overline{D} + BD : les quatre coins et le bloc central, AA et CC disparaissent
  • d) f=BDf = \overline{B \oplus D}, le comparateur d'égalité
  • e) Environ 35 portes contre 5, soit un rapport de l'ordre de 7 pour 1

a) La ligne AB=01AB=01 signifie A=0A=0 et B=1B=1 ; la colonne CD=11CD=11 signifie C=1C=1 et D=1D=1. Le numéro vaut 8(0)+4(1)+2(1)+1=78(0)+4(1)+2(1)+1 = 7, qui figure bien dans la liste. Le contrôle vaut la peine d'être fait sur deux ou trois cases avant de grouper quoi que ce soit : un tableau mal rempli produit une simplification impeccable de la mauvaise fonction.

b) On teste la colonne CD=11CD=11, qui est entièrement à 1. Ses quatre numéros sont 33 (ligne 00), 77 (ligne 01), 1515 (ligne 11) et 1111 (ligne 10). Or 33 et 1111 ne figurent pas dans la liste {0,2,5,7,8,10,13,15}\{0,2,5,7,8,10,13,15\}. Les cases fautives sont donc celles des lignes AB=00AB=00 et AB=10AB=10 dans la colonne CD=11CD=11 : elles valent 0. En les corrigeant, le tableau devient : ligne 0000 : 1,0,0,11,0,0,1 ; ligne 0101 : 0,1,1,00,1,1,0 ; ligne 1111 : 0,1,1,00,1,1,0 ; ligne 1010 : 1,0,0,11,0,0,1. On compte alors 8 cases à 1, ce qui correspond aux 8 minterms annoncés. Ce décompte est le contrôle à ne pas sauter.

c) Premier groupe : les quatre coins du tableau, cases (AB,CD)=(00,00),(00,10),(10,00),(10,10)(AB,CD) = (00,00), (00,10), (10,00), (10,10), soit les numéros 0,2,8,100, 2, 8, 10. Les bords opposés étant voisins, ces quatre coins forment bien un rectangle de 4. Sur ce groupe AA change, CC change, mais B=0B=0 et D=0D=0 partout : il donne BD\overline{B}\,\overline{D}. Deuxième groupe : le bloc central des lignes 0101 et 1111 sur les colonnes 0101 et 1111, soit les numéros 5,7,13,155, 7, 13, 15. AA change, CC change, mais B=1B=1 et D=1D=1 : il donne BDBD. Les 8 cases sont couvertes, donc f=BD+BDf = \overline{B}\,\overline{D} + BD. Les variables AA et CC ont disparu : la fonction ne dépend pas d'elles.

d) ff vaut 1 exactement quand BB et DD ont la même valeur : c'est le NON-OU-exclusif, f=BDf = \overline{B \oplus D}, appelé comparateur d'égalité. C'est la brique de base d'un comparateur de mots binaires : on teste l'égalité bit à bit puis on relie les résultats par des ET.

e) Forme canonique : 8 minterms de 4 variables, soit 24 portes ET à deux entrées, 7 portes OU et 4 portes NON, environ 35 portes. Forme simplifiée : 2 portes NON, 2 portes ET, 1 porte OU, soit 5 portes, ou une seule porte XNOR si le catalogue en propose une. Le rapport est de l'ordre de 7 pour 1, et il se paie en surface de silicium, en consommation et en délai de propagation.

AB \ CD00011110001001010110110110101001les 4 coins : B = 0 et D = 0le bloc central : B = 1 et D = 1

Exercice 7 : Circuits logiques : demi-additionneur et porte NAND

Le circuit ci-dessous reçoit deux bits AA et BB et produit deux sorties SS et RR. Les deux points marquent des dérivations : un même signal alimente les deux portes.

XORETABSR
  • a) Donnez les expressions booléennes de SS et de RR en fonction de AA et BB.
  • b) Dressez la table des quatre cas et interprétez SS et RR comme l'addition binaire de AA et BB.
  • c) Un additionneur complet reçoit en plus une retenue entrante ReR_e. Donnez les expressions de sa somme SS et de sa retenue sortante RsR_s.
  • d) Montrez que la porte NAND, définie par AB=ABA \uparrow B = \overline{AB}, permet de construire le NON, le ET et le OU. Combien de NAND chacun demande-t-il ?
  • e) Pourquoi la fabrication privilégie-t-elle une porte universelle ?

Tape tes réponses, la page te dit juste ou faux 0/14

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) S=ABS = A \oplus B et R=ABR = AB
  • b) SS vaut 0,1,1,00,1,1,0 et RR vaut 0,0,0,10,0,0,1 : le couple (R,S)(R,S) donne 0,1,1,20,1,1,2, soit A+BA+B
  • c) S=ABReS = A \oplus B \oplus R_e et Rs=AB+Re(AB)R_s = AB + R_e(A \oplus B)
  • d) 1 NAND pour le NON, 2 pour le ET, 3 pour le OU : la porte est universelle
  • e) 4 transistors contre 6 : un seul motif gravé, testé et remplacé partout

a) AA et BB entrent tous deux dans la porte XOR du haut et dans la porte ET du bas. Donc S=ABS = A \oplus B et R=ABR = AB. Les points sur les fils marquent les dérivations : un même signal alimente deux portes, ce qui est permis et ne coûte rien de plus qu'une piste.

b) Lignes (A,B)=(0,0),(0,1),(1,0),(1,1)(A,B) = (0,0), (0,1), (1,0), (1,1). SS vaut 0,1,1,00, 1, 1, 0 et RR vaut 0,0,0,10, 0, 0, 1. En lisant RR comme le bit de poids fort et SS comme le bit de poids faible, le couple (R,S)(R,S) vaut 00,01,01,1000, 01, 01, 10 en binaire, soit 0,1,1,20, 1, 1, 2 en décimal : c'est exactement A+BA+B. Le circuit additionne. Le cas 1+11+1 est celui qui justifie la retenue : la somme vaut 2, qui ne tient pas sur un bit.

c) S=ABReS = A \oplus B \oplus R_e : la somme vaut 1 quand un nombre impair d'entrées vaut 1. Rs=AB+Re(AB)R_s = AB + R_e(A \oplus B) : il y a retenue soit parce que AA et BB valent tous deux 1, soit parce qu'exactement un des deux vaut 1 et que la retenue entrante s'y ajoute. Contrôle numérique : pour toute combinaison, 2Rs+S=A+B+Re2R_s + S = A+B+R_e, ce qui vaut 0, 1, 2 ou 3. On câble ce bloc nn fois en chaîne pour additionner deux mots de nn bits.

d) NON : A=AA\overline{A} = A \uparrow A, une seule NAND, en reliant les deux entrées ensemble. ET : AB=AB=(AB)(AB)AB = \overline{\overline{AB}} = (A \uparrow B) \uparrow (A \uparrow B), soit 2 NAND. OU : par De Morgan, A+B=AB=AB=(AA)(BB)A+B = \overline{\overline{A} \cdot \overline{B}} = \overline{A} \uparrow \overline{B} = (A \uparrow A) \uparrow (B \uparrow B), soit 3 NAND. Comme tout circuit se décrit avec NON, ET et OU, tout circuit se décrit avec des NAND seules : la porte est dite universelle. La porte NOR l'est également.

e) Parce qu'une usine qui ne grave qu'un seul motif de transistors le grave mieux, le teste avec un seul banc et le remplace partout par la même cellule de bibliothèque. En technologie CMOS, la NAND est en outre la porte la moins chère : 4 transistors, contre 6 pour un ET, qui n'est qu'une NAND suivie d'un inverseur. Un circuit entièrement en NAND est donc souvent plus petit que le même circuit écrit avec des ET et des OU, même s'il compte davantage de portes sur le schéma.

NANDNANDNANDABA + B

Exercice 8 : Cinq affirmations à corriger

Chacune des cinq affirmations suivantes est FAUSSE. Dites pourquoi et donnez l'énoncé correct.

  • 1) « Si une implication est vraie, alors sa réciproque est vraie. »
  • 2) « AB=AB\overline{AB} = \overline{A} \cdot \overline{B}. »
  • 3) « Une table de vérité à quatre propositions compte huit lignes. »
  • 4) « A+BC=(A+B)CA + BC = (A+B)C. »
  • 5) « Le OU logique est exclusif : quand A=1A=1 et B=1B=1, A+BA+B vaut 0. »

Tape tes réponses, la page te dit juste ou faux 0/9

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) FAUX : c'est la CONTRAPOSÉE qui partage la valeur de vérité, pas la réciproque
  • 2) FAUX : AB=A+B\overline{AB} = \overline{A} + \overline{B}, la barre qui se lève change le connecteur
  • 3) FAUX : 24=162^{4} = 16 lignes ; huit lignes correspondent à trois propositions
  • 4) FAUX : A+BC=(A+B)(A+C)A + BC = (A+B)(A+C)
  • 5) FAUX : le OU logique est inclusif, 1+1=11+1 = 1. Le connecteur exclusif est AB=AB+ABA \oplus B = A\overline{B}+\overline{A}B

1) FAUX. Une implication et sa réciproque sont deux énoncés indépendants. « Si x=2x=2 alors x2=4x^{2}=4 » est vraie, mais sa réciproque « si x2=4x^{2}=4 alors x=2x=2 » est fausse pour x=2x=-2. Énoncé correct : une implication a toujours la même valeur de vérité que sa CONTRAPOSÉE, jamais nécessairement que sa réciproque.

2) FAUX. C'est la loi de De Morgan mal appliquée : la barre qui se lève change aussi le connecteur. Contre-exemple avec A=1A=1, B=0B=0 : AB=0=1\overline{AB} = \overline{0} = 1, tandis que AB=01=0\overline{A} \cdot \overline{B} = 0 \cdot 1 = 0. Énoncé correct : AB=A+B\overline{AB} = \overline{A} + \overline{B}, et symétriquement A+B=AB\overline{A+B} = \overline{A} \cdot \overline{B}.

3) FAUX. Chaque proposition double le nombre de lignes : il y en a 2n2^{n}, donc 24=162^{4} = 16 pour quatre propositions. Huit lignes correspondent à trois propositions. Énoncé correct : une table à nn propositions compte 2n2^{n} lignes, et le nombre de fonctions booléennes de nn variables vaut 22n2^{2^{n}}.

4) FAUX. Le OU se distribue sur le ET en dédoublant le terme : contre-exemple avec A=1A=1, B=0B=0, C=0C=0 : à gauche 1+0=11 + 0 = 1, à droite (1+0)0=0(1+0) \cdot 0 = 0. Énoncé correct : A+BC=(A+B)(A+C)A + BC = (A+B)(A+C).

5) FAUX. Le OU logique est inclusif : 1+1=11+1 = 1. Il est vrai dès qu'au moins une entrée vaut 1, y compris quand les deux valent 1. Énoncé correct : le connecteur qui vaut 0 lorsque les deux entrées valent 1 est le OU exclusif, noté ABA \oplus B, et il vérifie AB=AB+ABA \oplus B = A\overline{B} + \overline{A}B.

Exercice 9 : Problème : contrôle d'accès à une salle serveur

L'accès à une salle serveur est piloté par quatre signaux binaires : BB (le badge est valide), CC (le code saisi est correct), HH (on est dans l'horaire ouvré) et DD (une dérogation a été accordée par le responsable). Le cahier des charges dit : la porte s'ouvre si le badge est valide ET le code correct ET que l'on est dans l'horaire ouvré ; elle s'ouvre également si le badge est valide ET le code correct ET qu'une dérogation a été accordée.

  • a) Écrivez l'expression booléenne AA de l'ouverture, directement d'après le cahier des charges.
  • b) Simplifiez AA et nommez la loi utilisée.
  • c) Comptez les portes à deux entrées avant et après simplification.
  • d) Sur les 16 combinaisons possibles, combien ouvrent la porte ?
  • e) Écrivez la condition de REFUS A\overline{A} sous forme de somme, et interprétez chaque terme.
  • f) Un stagiaire propose A=BC+H+DA' = BC + H + D. Donnez une combinaison qui montre que cette version est dangereuse.

Tape tes réponses, la page te dit juste ou faux 0/12

a)
b)
c)
d)
e)
f)
Voir la correction

Réponses

  • a) A=BCH+BCDA = BCH + BCD
  • b) A=BC(H+D)A = BC(H+D), par mise en facteur
  • c) 5 portes avant, 3 après
  • d) 3 combinaisons sur 16
  • e) A=B+C+HD\overline{A} = \overline{B} + \overline{C} + \overline{H}\,\overline{D} : badge invalide, ou code faux, ou bien hors horaire ET sans dérogation
  • f) B=0B=0, C=0C=0, H=1H=1, D=0D=0 : le vrai système donne 0, la version du stagiaire donne 1, la porte s'ouvre sans badge ni code

a) Le cahier des charges se traduit terme à terme : A=BCH+BCDA = BCH + BCD. Chaque « ET » devient un produit, le « également » devient un OU.

b) BCH+BCD=BC(H+D)BCH + BCD = BC(H+D) par mise en facteur, c'est-à-dire la distributivité du ET sur le OU lue de droite à gauche. Lecture métier : il faut le badge ET le code, plus au moins une des deux justifications d'horaire. Cette forme dit mieux le cahier des charges que la première, parce qu'elle sépare l'identification de l'autorisation temporelle.

c) Avant : chaque produit de trois variables demande 2 portes ET, soit 4 portes ET, plus 1 porte OU : 5 portes. Après : 1 porte OU pour H+DH+D, puis 2 portes ET pour BC(H+D)B \cdot C \cdot (H+D) : 3 portes. On économise 2 portes sur 5, et surtout un niveau de logique, donc du délai.

d) AA vaut 1 quand B=1B=1, C=1C=1 et H+D=1H+D=1. BB et CC sont fixés, il reste les 4 combinaisons de (H,D)(H,D), dont 3 vérifient H+D=1H+D=1 : (1,0)(1,0), (0,1)(0,1) et (1,1)(1,1). Donc 3 combinaisons sur 16 ouvrent la porte. La proportion est un contrôle utile : un système de sécurité qui ouvrirait sur la moitié des combinaisons serait suspect par construction.

e) A=BC(H+D)=BC+H+D=B+C+HD\overline{A} = \overline{BC(H+D)} = \overline{BC} + \overline{H+D} = \overline{B} + \overline{C} + \overline{H}\,\overline{D}, par De Morgan appliqué deux fois. Trois causes de refus, et elles sont bien distinctes : badge invalide, ou code faux, ou bien hors horaire ET sans dérogation. Notez que la troisième cause est un produit, pas une somme : être hors horaire ne suffit pas à refuser si une dérogation existe.

f) Prenons B=0B=0, C=0C=0, H=1H=1, D=0D=0 : le vrai système donne A=001=0A = 0 \cdot 0 \cdot 1 = 0, la porte reste fermée. La version du stagiaire donne A=0+1+0=1A' = 0 + 1 + 0 = 1 : la porte s'ouvre pour n'importe qui, sans badge ni code, du seul fait qu'on est dans l'horaire ouvré. L'erreur vient de la priorité des opérateurs : il a écrit un OU là où le cahier des charges impose que BCBC soit un facteur commun obligatoire. En logique de sécurité, une condition nécessaire se met en facteur, jamais en somme.

OUETHDCBA

Exercice 10 : Problème : valider un raisonnement par la logique

Un raisonnement est valide lorsque la conjonction de ses prémisses implique sa conclusion pour TOUTES les valeurs de vérité possibles, c'est-à-dire lorsque l'implication correspondante est une tautologie. La validité ne dit rien du contenu : elle dit seulement que la conclusion ne peut pas être fausse quand les prémisses sont vraies.

  • a) Formalisez : « si le serveur est en panne, le site est inaccessible ; or le site est accessible ; donc le serveur n'est pas en panne ». Ce raisonnement est-il valide ?
  • b) Formalisez : « si le serveur est en panne, le site est inaccessible ; or le site est inaccessible ; donc le serveur est en panne ». Ce raisonnement est-il valide ?
  • c) Démontrez par table de vérité que ((pq)¬q)¬p\big((p \Rightarrow q) \land \lnot q\big) \Rightarrow \lnot p est une tautologie.
  • d) Le raisonnement de la question b) peut-il avoir des prémisses vraies et une conclusion vraie ? Cela le rend-il valide ?
  • e) Étudiez la validité de : « si pp alors qq ; si qq alors rr ; donc si pp alors rr ».
  • f) En quoi cet exercice concerne-t-il un programmeur qui lit un message d'erreur ?

Tape tes réponses, la page te dit juste ou faux 0/12

a)
b)
c)
d)
e)
f)
Voir la correction

Réponses

  • a) ((pq)¬q)¬p\big((p \Rightarrow q) \land \lnot q\big) \Rightarrow \lnot p : valide, c'est le modus tollens
  • b) ((pq)q)p\big((p \Rightarrow q) \land q\big) \Rightarrow p : invalide, affirmation du conséquent, contre-exemple p=0p=0, q=1q=1
  • c) L'antécédent vaut 0,0,0,10,0,0,1 et l'implication finale 1,1,1,11,1,1,1 : c'est une tautologie
  • d) Oui avec p=1p=1, q=1q=1, et cela ne le rend PAS valide
  • e) Valide : le syllogisme hypothétique, aucun contre-exemple sur les 8 lignes
  • f) Un message d'erreur donne une conséquence, pas une cause : on cherche les prémisses qu'on peut infirmer

a) On note pp : « le serveur est en panne » et qq : « le site est inaccessible ». Le raisonnement est ((pq)¬q)¬p\big((p \Rightarrow q) \land \lnot q\big) \Rightarrow \lnot p. Il est valide : c'est le modus tollens. Cherchons les lignes où les deux prémisses sont vraies : ¬q\lnot q vraie impose q=0q=0 ; alors pqp \Rightarrow q n'est vraie que si p=0p=0. Sur cette unique ligne, la conclusion ¬p\lnot p vaut 1. Aucune ligne ne met les prémisses à vrai et la conclusion à faux, donc le raisonnement est valide.

b) Le raisonnement est ((pq)q)p\big((p \Rightarrow q) \land q\big) \Rightarrow p. Il n'est pas valide. Contre-exemple : p=0p=0, q=1q=1. Alors pqp \Rightarrow q vaut 1, qq vaut 1, les deux prémisses sont vraies, mais la conclusion pp est fausse. C'est l'erreur d'affirmation du conséquent : le site est inaccessible, mais peut-être à cause du réseau, du DNS ou du certificat expiré, et non d'une panne du serveur.

c) Table sur les quatre lignes (p,q)=(1,1),(1,0),(0,1),(0,0)(p,q) = (1,1), (1,0), (0,1), (0,0). pqp \Rightarrow q vaut 1,0,1,11, 0, 1, 1. ¬q\lnot q vaut 0,1,0,10, 1, 0, 1. La conjonction (pq)¬q(p \Rightarrow q) \land \lnot q vaut donc 0,0,0,10, 0, 0, 1 : elle n'est vraie que sur la dernière ligne. Sur cette ligne, ¬p\lnot p vaut 1. L'implication finale vaut donc 1,1,1,11, 1, 1, 1 : elle est vraie sur les quatre lignes, c'est une tautologie. Remarquez qu'il a suffi d'examiner une seule ligne, celle où l'antécédent est vrai ; sur les autres, l'implication est vraie à vide.

d) Oui : avec p=1p=1 et q=1q=1, les deux prémisses sont vraies et la conclusion aussi. Cela ne rend pas le raisonnement valide pour autant. La validité exige que la conclusion soit vraie sur TOUTES les lignes où les prémisses le sont, et la ligne p=0p=0, q=1q=1 suffit à ruiner cette exigence. Un raisonnement invalide peut donner une conclusion juste par accident : c'est ce qui le rend dangereux, parce qu'il semble marcher jusqu'au jour où il ne marche plus.

e) C'est le syllogisme hypothétique, ((pq)(qr))(pr)\big((p \Rightarrow q) \land (q \Rightarrow r)\big) \Rightarrow (p \Rightarrow r), et il est valide. Sur les 8 lignes, cherchons un contre-exemple : il faudrait p=1p=1, r=0r=0 et les deux prémisses vraies. De p=1p=1 et pqp \Rightarrow q vraie on tire q=1q=1 ; de q=1q=1 et qrq \Rightarrow r vraie on tire r=1r=1, ce qui contredit r=0r=0. Aucun contre-exemple n'existe, le raisonnement est valide. C'est le principe du chaînage des implications, celui qui autorise à empiler les lemmes dans une démonstration.

f) Un message d'erreur donne une conséquence observée, pas une cause. « La page ne s'affiche pas » est le qq de la question b) : en conclure « le serveur est tombé » est une affirmation du conséquent. Le raisonnement correct est le modus tollens : « si le serveur tourne, la page de test répond ; or la page de test ne répond pas, donc le serveur ne tourne pas ». Un bon diagnostic consiste à chercher les prémisses qu'on peut infirmer, pas celles qu'on aimerait confirmer.

Chapitre suivant Systèmes de numération informatique

Ce chapitre resservira dans

Les chapitres qui le réclament en amont, plus tard dans l'année ou dans les années suivantes.

Voir aussi

Vous suivez le cours 201-N11 en informatique au cégep ?

Contactez-moi pour une première séance. Bachelier en informatique de McGill et maître en informatique appliquée de Concordia, je traite la logique booléenne comme elle sera utilisée ensuite : dans les conditions d'un programme, dans les requêtes de base de données et dans les circuits.

Site par Studio Squalli