fbpx
Wikipedia

Algoritmo Quine–McCluskey

El Algoritmo Quine–McCluskey Es un método de simplificación de funciones booleanas desarrollado por Willard Van Orman Quine y Edward J. McCluskey. Es funcionalmente idéntico a la utilización del mapa de Karnaugh, pero su forma tabular lo hace más eficiente para su implementación en lenguajes computacionales, y provee un método determinista de conseguir la mínima expresión de una función booleana.

Pasos

El método consta de dos pasos:

  1. Encontrar todos los implicantes primos de la función.
  2. Usar esos implicantes en una tabla de implicantes primos para encontrar los implicantes primos esenciales, los cuales son necesarios y suficientes para generar la función.

Complejidad

Aunque es más práctico que el mapa de Karnaugh, cuando se trata de trabajar con más de cuatro variables, el tiempo de resolución del algoritmo Quine-McCluskey crece de forma exponencial con el aumento del número de variables. Se puede demostrar que para una función de n variables el límite superior del número de implicantes primos es 3n/n. Si n = 32 habrá más de 6.5 * 1015 implicantes primos. Funciones con un número grande de variables tienen que ser minimizadas con otros métodos heurísticos.

Ejemplo

Paso 1: Encontrar implicantes primos

Minimizando una función arbitraria:

 
A B C D f
m0 0 0 0 0 0
m1 0 0 0 1 0
m2 0 0 1 0 0
m3 0 0 1 1 0
m4 0 1 0 0 1
m5 0 1 0 1 0
m6 0 1 1 0 0
m7 0 1 1 1 0
m8 1 0 0 0 1
m9 1 0 0 1 X
m10 1 0 1 0 1
m11 1 0 1 1 1
m12 1 1 0 0 1
m13 1 1 0 1 0
m14 1 1 1 0 X
m15 1 1 1 1 1

Uno fácilmente puede formar la expresión canónica suma de productos de esta tabla, simplemente sumando minitérminos (dejando fuera las redundancias) donde la función se evalúa con 1:

 

Por supuesto, esta expresión no es mínima. Para optimizarla, primero son colocados todos los minitérminos evaluados en la función como 1 en una tabla. Las redundancias también son agregadas a la tabla, estas pueden combinarse con los minitérminos:

N. de 1s Minterm Representación binaria
1 m4
m8
0100
1000
2 m9
m10
m12
1001
1010
1100
3 m11
m14
1011
1110
4 m15 1111

En este punto, uno puede empezar a combinar los minitérminos entre sí. Si dos minitérminos solo varían en un solo dígito, ese dígito debe reemplazarse por un guion "-" indicando que ese bit no importa. Los términos que ya no pueden combinarse más son marcados con "*". Cuando van de tamaño 2 a 4, tratamos '-' como un valor de bit.

Ejemplo: -110 y -100 o -11- pueden ser combinados, pero no -110 y 011-.

(Consejo: agrupar los '-' primero.)

Número de 1s Minterm Bin | Implicantes de tamaño 2 | Implicantes de tamaño 4 --------------------------------|-------------------------|------------------------ 1  m4 0100 | m(4,12) -100* | m(8,9,10,11) 10--*  m8 1000 | m(8,9) 100- | m(8,10,12,14) 1--0* --------------------------------| m(8,10) 10-0 |------------------------ 2  m9 1001 | m(8,12) 1-00 | m(10,11,14,15) 1-1-*  m10 1010 |-------------------------|  m12 1100 | m(9,11) 10-1 | --------------------------------| m(10,11) 101- | 3  m11 1011 | m(10,14) 1-10 |  m14 1110 | m(12,14) 11-0 | --------------------------------|-------------------------| 4  m15 1111 | m(11,15) 1-11 |   | m(14,15) 111- | 

Paso 2: tabla de implicantes primos

Los términos marcados con "*" ya no pueden combinarse más, en este punto ya tenemos la tabla de implicantes primos. En el costado van los implicantes primos recientemente generados, y en la parte superior los minitérminos utilizados. Los minitérminos correspondientes a las redundancias son omitidos en este paso, no se colocan en la parte superior.

4 8 10 11 12 15
  X X - 1 0 0
  X X X 1 0 - -
  X X X 1 - - 0
  X X X 1 - 1 -

En esta tabla vemos los minitérminos que "cubre" cada implicante primo. Ninguno de los implicantes de esta tabla está incluido dentro de otro (esto queda garantizado en el paso uno), pero si puede estar "cubierto" por dos o más implicantes. Es el caso de   que está cubierto por   y   o   que está cubierto por   y  .

Por este motivo, cada uno de estos dos implicantes solo son esenciales en ausencia del otro. Un proceso adicional simple para reducir estos implicantes es prueba y error, pero un proceso más sistemático es el método de Petrick. En el caso que estamos analizando, los dos implicantes primos   y   no llegan a incluir todos los minitérminos por lo que podemos combinar estos implicantes con cada uno de los implicantes no esenciales para conseguir dos funciones mínimas:

 

 

Las dos son equivalentes a esta función original dándole:

 

Véase también

Enlaces externos

  • Implementación del algoritmo de Quine-McCluskey con búsqueda de todas las soluciones, by Frédéric Carpon.
  • , artículo de Jack Crenshaw comparando el método de Quine-McCluskey con los mapas de Karnaugh.
  • .
  • .
  • Implementación Python
  • Quinessence, an open source implementation written in Free Pascal.
  • QCA an open source, R based implementation used in the social sciences, by Adrian Duşa
  • Un ejemplo totalmente trabajado y explicado: http://www.cs.ualberta.ca/~amaral/courses/329/webslides/Topic5-QuineMcCluskey/sld024.htm
  • [1], Applet donde se implementa paso a paso el algoritmo de Quine-McCluskey.
  • [2] Implementación del método Quine-McCluskey. Consola de dominio público SourceForge.net.
  • [3] Tutorial del método de Quine-McCluskey (pdf).
  • Una excelente fuente donde se detallan todos los pasos: Olivier Coudert "Two-level logic minimization: an overview" INTEGRATION, the VLSI journal, 17-2, pp. 97–140, October 1994 el 10 de mayo de 2020 en Wayback Machine.
  • The Boolean Bot: Una implementación en JavaScript para la web: http://booleanbot.com/
  •   Datos: Q621409

algoritmo, quine, mccluskey, método, simplificación, funciones, booleanas, desarrollado, willard, orman, quine, edward, mccluskey, funcionalmente, idéntico, utilización, mapa, karnaugh, pero, forma, tabular, hace, más, eficiente, para, implementación, lenguaje. El Algoritmo Quine McCluskey Es un metodo de simplificacion de funciones booleanas desarrollado por Willard Van Orman Quine y Edward J McCluskey Es funcionalmente identico a la utilizacion del mapa de Karnaugh pero su forma tabular lo hace mas eficiente para su implementacion en lenguajes computacionales y provee un metodo determinista de conseguir la minima expresion de una funcion booleana Indice 1 Pasos 2 Complejidad 3 Ejemplo 3 1 Paso 1 Encontrar implicantes primos 3 2 Paso 2 tabla de implicantes primos 4 Vease tambien 5 Enlaces externosPasos EditarEl metodo consta de dos pasos Encontrar todos los implicantes primos de la funcion Usar esos implicantes en una tabla de implicantes primos para encontrar los implicantes primos esenciales los cuales son necesarios y suficientes para generar la funcion Complejidad EditarAunque es mas practico que el mapa de Karnaugh cuando se trata de trabajar con mas de cuatro variables el tiempo de resolucion del algoritmo Quine McCluskey crece de forma exponencial con el aumento del numero de variables Se puede demostrar que para una funcion de n variables el limite superior del numero de implicantes primos es 3n n Si n 32 habra mas de 6 5 1015 implicantes primos Funciones con un numero grande de variables tienen que ser minimizadas con otros metodos heuristicos Ejemplo EditarPaso 1 Encontrar implicantes primos Editar Minimizando una funcion arbitraria f A B C D m 4 8 10 11 12 15 d 9 14 displaystyle f left A B C D right sum m left 4 8 10 11 12 15 right sum d left 9 14 right A B C D fm0 0 0 0 0 0m1 0 0 0 1 0m2 0 0 1 0 0m3 0 0 1 1 0m4 0 1 0 0 1m5 0 1 0 1 0m6 0 1 1 0 0m7 0 1 1 1 0m8 1 0 0 0 1m9 1 0 0 1 Xm10 1 0 1 0 1m11 1 0 1 1 1m12 1 1 0 0 1m13 1 1 0 1 0m14 1 1 1 0 Xm15 1 1 1 1 1Uno facilmente puede formar la expresion canonica suma de productos de esta tabla simplemente sumando miniterminos dejando fuera las redundancias donde la funcion se evalua con 1 f A B C D A B C D A B C D A B C D A B C D A B C D A B C D displaystyle begin matrix f A B C D A BC D AB C D AB CD AB CD ABC D ABCD end matrix Por supuesto esta expresion no es minima Para optimizarla primero son colocados todos los miniterminos evaluados en la funcion como 1 en una tabla Las redundancias tambien son agregadas a la tabla estas pueden combinarse con los miniterminos N de 1s Minterm Representacion binaria1 m4m8 010010002 m9m10m12 1001101011003 m11m14 101111104 m15 1111En este punto uno puede empezar a combinar los miniterminos entre si Si dos miniterminos solo varian en un solo digito ese digito debe reemplazarse por un guion indicando que ese bit no importa Los terminos que ya no pueden combinarse mas son marcados con Cuando van de tamano 2 a 4 tratamos como un valor de bit Ejemplo 110 y 100 o 11 pueden ser combinados pero no 110 y 011 Consejo agrupar los primero Numero de 1s Minterm Bin Implicantes de tamano 2 Implicantes de tamano 4 1 m4 0100 m 4 12 100 m 8 9 10 11 10 m8 1000 m 8 9 100 m 8 10 12 14 1 0 m 8 10 10 0 2 m9 1001 m 8 12 1 00 m 10 11 14 15 1 1 m10 1010 m12 1100 m 9 11 10 1 m 10 11 101 3 m11 1011 m 10 14 1 10 m14 1110 m 12 14 11 0 4 m15 1111 m 11 15 1 11 m 14 15 111 Paso 2 tabla de implicantes primos Editar Los terminos marcados con ya no pueden combinarse mas en este punto ya tenemos la tabla de implicantes primos En el costado van los implicantes primos recientemente generados y en la parte superior los miniterminos utilizados Los miniterminos correspondientes a las redundancias son omitidos en este paso no se colocan en la parte superior 4 8 10 11 12 15m 4 12 displaystyle m left 4 12 right X X 1 0 0m 8 9 10 11 displaystyle m left 8 9 10 11 right X X X 1 0 m 8 10 12 14 displaystyle m left 8 10 12 14 right X X X 1 0m 10 11 14 15 displaystyle m left 10 11 14 15 right X X X 1 1 En esta tabla vemos los miniterminos que cubre cada implicante primo Ninguno de los implicantes de esta tabla esta incluido dentro de otro esto queda garantizado en el paso uno pero si puede estar cubierto por dos o mas implicantes Es el caso de m 8 9 10 11 displaystyle m left 8 9 10 11 right que esta cubierto por m 8 10 12 14 displaystyle m left 8 10 12 14 right y m 10 11 14 15 displaystyle m left 10 11 14 15 right o m 8 10 12 14 displaystyle m left 8 10 12 14 right que esta cubierto por m 8 9 10 11 displaystyle m left 8 9 10 11 right y m 4 12 displaystyle m left 4 12 right Por este motivo cada uno de estos dos implicantes solo son esenciales en ausencia del otro Un proceso adicional simple para reducir estos implicantes es prueba y error pero un proceso mas sistematico es el metodo de Petrick En el caso que estamos analizando los dos implicantes primos m 4 12 displaystyle m left 4 12 right y m 10 11 14 15 displaystyle m left 10 11 14 15 right no llegan a incluir todos los miniterminos por lo que podemos combinar estos implicantes con cada uno de los implicantes no esenciales para conseguir dos funciones minimas f A B C D B C D A B A C displaystyle begin matrix f A B C D BC D AB AC end matrix f A B C D B C D A D A C displaystyle begin matrix f A B C D BC D AD AC end matrix Las dos son equivalentes a esta funcion original dandole f A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D displaystyle begin matrix f A B C D A BC D AB C D AB C D AB CD AB CD ABC D ABCD ABCD end matrix Vease tambien EditarAlgebra de Boole Willard Van Orman Quine Metodo de Petrick Logica binariaEnlaces externos EditarImplementacion del algoritmo de Quine McCluskey con busqueda de todas las soluciones by Frederic Carpon All about Quine McClusky articulo de Jack Crenshaw comparando el metodo de Quine McCluskey con los mapas de Karnaugh Lectura del algoritmo de Quine McCluskey Java applet Implementacion Python Quinessence an open source implementation written in Free Pascal QCA an open source R based implementation used in the social sciences by Adrian Dusa Un ejemplo totalmente trabajado y explicado http www cs ualberta ca amaral courses 329 webslides Topic5 QuineMcCluskey sld024 htm 1 Applet donde se implementa paso a paso el algoritmo de Quine McCluskey 2 Implementacion del metodo Quine McCluskey Consola de dominio publico SourceForge net 3 Tutorial del metodo de Quine McCluskey pdf Una excelente fuente donde se detallan todos los pasos Olivier Coudert Two level logic minimization an overview INTEGRATION the VLSI journal 17 2 pp 97 140 October 1994 Archivado el 10 de mayo de 2020 en Wayback Machine The Boolean Bot Una implementacion en JavaScript para la web http booleanbot com Datos Q621409Obtenido de https es wikipedia org w index php title Algoritmo Quine McCluskey amp oldid 133233203, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos