Galindo-lab / quine-mccluskey-python

Implementación del algoritmo de Quine–McCluskey

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Algoritmo de Quine–McCluskey

Info

Implementacion del algoritmo de Quine–McCluskey para simplificar funciones logicas pensado para funcionar en la calculadora Casio fx-cg50.

https://es.wikipedia.org/wiki/Algoritmo_Quine–McCluskey

Terminos

https://wikimedia.org/api/rest_v1/media/math/render/svg/8e9a983dd4d6aec3ed0d21a5a12ed52a56dc47004

m
activaciones, donde la funcion es 1
d
redundancias, deonde el valor es indiferente

Documentacion

Entrada de datos

Lista

Ingresas los valores de activacion separados por ‘,’.

Tabla

La tabla acepta ‘1’ y ‘-’ cualquier otro valor será intepretado como ‘0’.

Interpretar el resultado

Ingresar datos

Analicemos un ejemplo para entender los resultados del programa

---------------------
      REDUCCION      
  DE FUNCION LOGICA  
---------------------

1.LISTA // 2.TABLA?
1
NUMERO DE VARIABLES?
4
ACTIVACION?
4,8,10,11,12,15
REDUNDANCIAS?
9,14

Terminos esenciales y no esenciales

los términos esenciales son los que contienen un mintermino único, un mintermino que no aparece en otros terminos, por lo que obligatoriamente sera parte de la funcion resultante.

los terminos no esenciales son los terminos cuyos terminos se repiten en otro termino, en este caso el 8.

---------------------
      RESULTADO      
---------------------

ESENCIALES:
-100 (4, 12)
1-1- (10, 11, 14, 15)

NO ESENCIALES: [8]
10-- (8, 9, 10, 11)
1--0 (8, 10, 12, 14)

Extrayendo la ecuacion

Ahora solo basta convertir el binario a nuestra ecuacion, como tenemos dos teminos esenciales los pasamos directamente. Cada digito correponde a el estado de una variable

‘1’
es no negada
‘0’
es negada
’-’
es inexistente
ABCD
-100 (4, 12) 
 |        __
 +-----> BCD  

1-1- (10, 11, 14, 15)
 |       
 +-----> AC 

la ecuacion para los minterminos es:

   [10, 11, 14, 15, 4, 12] 
                __
          AC + BCD


Importante: los terminos [9,14] son
            redundantes.

Nuestra funcion original pedía:

[4,8,10,11,12,15] 

y nuestra funcion actualmente da

[4,10,11,12,15] 

nos falta un termino, el temino faltante lo podemos encontrar en los terminos ‘NO ESENCIALES’

NO ESENCIALES: [8]
10-- (8, 9, 10, 11)
 |        _
 +-----> AB 

1--0 (8, 10, 12, 14)
 |        _
 +-----> AD

ambos terminos contienen el numero ‘8’ que nos falta por lo que tenemos más de una posible solucion:

      __    _
AC + BCD + AB
      __     _
AC + BCD  + AD

About

Implementación del algoritmo de Quine–McCluskey

License:GNU General Public License v3.0


Languages

Language:Python 58.9%Language:TeX 41.1%