Simplification logique

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

simplification logique

par fatal_error » 28 Fév 2014, 09:15

hello,

suite à http://www.maths-forum.com/question-logique-153105.php
qui soulève (en tout cas pour moi) un peu d'intérêt:

Créer un algorithme qui permette à partir d'une fonction booléenne, de simplifier son expression.
Par simplifier l'expression, j'entends terminer avec le moins de termes possibles (et pas de groupe parenthésé...)

Bien sûr, un karnaugh suffirait pour arriver à la fin.
Le but ici, c'est de pouvoir simplifier l'expression à l'aide des règles de base:
not(not(a))=a
not(a)+a=1
not(ab)=not(a)+not(b)
not(a+b)=not(a)not(b)
not(a)b+a=b
1a=a
0a=0
et éventuellement d'autres règles simples tel que multiplier par (a+b+c)


ex:
Code: Tout sélectionner
f(a,b,c)=abnot(c)+not(b)not(c)a+c
f(a,b,c)=anot(c)(b+not(b))+c
f(a,b,c)=anot(c)1+c                       //application x+not(x)=1
f(a,b,c)=anot(c)+c                        //application a1=a
f(a,b,c)=a                                //application not(a)b+a=b
la vie est une fête :)



Avatar de l’utilisateur
Ben314
Le Ben
Messages: 21709
Enregistré le: 11 Nov 2009, 21:53

par Ben314 » 28 Fév 2014, 09:55

Salut,
Un truc assez classique qui ne "simplifie" pas forcément l'expression, mais qui permet d'aboutir à une forme "standard" (et donc de vérifier facilement si deux expresions sont équivalentes), c'est d'utliser les notations correspondant à l'algèbre de boole où + désigne le ou exclusif (qui, contrairement au ou inclusif, a le bon gout de donner une structure de groupe avec pour neutre 0="faux" et comme "opposé" d'une proposition P la proposition P elle même).
La multiplication . désigne quand à elle le "et".
Pour le codage partant des connecteurs usuels ET, OU en NON, c'est totalement mécanique :
non(P) -> 1+P
P et Q -> PQ
P ou Q -> P+Q+PQ = 1+(1+P)(1+Q) (c'est à dire non[non(P) et non(Q)] )

Avec ça comme notation, on n'a pas besoin d'autre chose vu que la négation de P devient 1+P (ou 1="vrai") et les "règles de calculs" sont précisément celle d'une algèbre sur Z/2Z, c'est à dire les même règles que le + et le x sur R plus la règle P+P=0 et rien d'autre.

De mémoire, si on utilise cette notation, qu'on développe totalement l'expression de base (ici on ne peut distribuer que le x sur le + et pas le contraire) et qu'on simplifie les "doublons" (i.e. P.Q.R+P.Q.R=0 par exemple), on obtient une forme "unique" de la proposition.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 28 Fév 2014, 21:05

hello ben,

pas mal la méthode, j'ai l'impression qu'elle donne toujours l'expression la plus simplifiée, (notamment grace a la propriété p o p=0, o le ou exclusif) qui empêche les propositions de se "duppliquer".

Au final, il reste à remonter à partir de l'expression avec les ou exclusif vers les not, ET et OU
Puis pour les termes qu'on a pas réussi à remonter, par exemple
PoQoR (le o étant donc le ou exclusif)

(PoQ)oR=[ not(P)Q+not(Q)P ] o R = not(not(P)Q...)R + not(R)(not(P)...)
Or en simplifiant la dernière on a pas de termes qui se recouvrent, sinon ils auraient pété dans la forme simplifiée. Ca reste complètement flou pour la preuve, mais je pense que ca se tient...

A l'algo donc :D
la vie est une fête :)

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 13 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite