Un diagrama de decisión binario ( BDE ) o un programa de ramificación es una forma de representar una función booleana de variables como un gráfico acíclico dirigido , que consta de nodos de decisión internos (etiquetados ), cada uno de los cuales tiene dos hijos y dos nodos terminales (etiquetados 0 y 1), cada uno de los cuales corresponde a uno de los dos valores de la función booleana. En la literatura extranjera, los diagramas de decisión binarios y los programas de ramificación se denominan diagrama de decisión binario ( BDD ) y programas de ramificación ( BP ), respectivamente.
Una función booleana se puede representar como un gráfico acíclico dirigido , que consta de varios nodos de decisión internos y dos nodos terminales, denominados nodo terminal 0 y nodo terminal 1. Cada nodo de decisión interno en un nivel está etiquetado con una variable booleana y tiene dos hijos , llamados hijo menor y hijo mayor. La transición de un nodo interno a un niño menor o mayor se realiza según el valor de la variable (0 o 1, respectivamente). Para los valores dados , la ruta desde el nodo raíz hasta el nodo 1-terminal corresponde al hecho de que en estos valores de entrada la función booleana toma el valor 1.
Se dice que un BDR está ordenado si diferentes variables aparecen en el mismo orden en todos los caminos desde el nodo raíz del gráfico hasta uno de los vértices terminales. Al mismo tiempo, algunas variables en los caminos pueden estar ausentes si la operación de reducción se realizó previamente en el gráfico.
Un BDR se denomina abreviado si se aplican al gráfico las siguientes dos reglas de abreviatura:
En la mayoría de los casos, un diagrama de decisión binario se entiende como un diagrama de decisión binario ordenado reducido ( SUBDR ). La ventaja de un BDD ordenado reducido es que es canónico (único) para una función particular y un orden dado de variables. [1] Esta propiedad hace que RUBMS sea útil para probar la equivalencia funcional.
La figura de la izquierda muestra un árbol de decisión binario (sin aplicar las reglas de reducción) correspondiente a la tabla de verdad para la función booleana que se muestra en la misma figura . Para valores de entrada dados , puede determinar el valor de la función booleana moviéndose a lo largo del árbol desde el nodo raíz del árbol hasta los nodos terminales, eligiendo la dirección de transición desde el nodo según el valor de entrada . Las líneas punteadas en la figura representan transiciones a un niño más pequeño y las líneas continuas representan transiciones a un niño mayor. Por ejemplo, si se dan los valores de entrada ( , , ), entonces desde el nodo raíz debe ir a lo largo de la línea de puntos hacia la izquierda (ya que el valor es 0), luego debe ir a lo largo de las líneas continuas a la derecha (ya que los valores y y son iguales a 1). Como resultado, terminaremos en un nodo de 1 terminal, es decir, el valor es 1.
El árbol de decisión binario de la figura de la izquierda se puede convertir en un diagrama de decisión binario aplicando dos reglas de reducción. El BDR resultante se muestra en la figura de la derecha.
La idea principal para crear una estructura de datos de este tipo fue la descomposición de Shannon . Cualquier función booleana sobre una de las variables de entrada se puede dividir en dos subfunciones, denominadas complemento positivo y complemento negativo, de las cuales solo se selecciona una subfunción de acuerdo con el principio if-then-else , dependiendo del valor de la variable de entrada (sobre la cual se realizó la expansión de Shannon). Representando cada subfunción como un subárbol y continuando la expansión en las variables de entrada restantes, se puede obtener un árbol de decisión, cuya reducción dará un diagrama de decisión binario . La información sobre el uso de diagramas de decisión binarios o programas de bifurcación binaria se publicó por primera vez en 1959 en Bell Systems Technical Journal [2] [3] [4] . Mamrukov [5] implementó un BDD llamado forma canónica entre paréntesis en CAD para el análisis de circuitos independientes de la velocidad. Randal Bryant , de la Universidad Carnegie Mellon, exploró el potencial para crear algoritmos eficientes basados en esta estructura de datos : su enfoque consistía en utilizar un orden fijo de variables (para una representación canónica única de cada función booleana) y la reutilización de subgrafos comunes (para compacidad). ). La aplicación de estos dos conceptos clave permite aumentar la eficiencia de las estructuras de datos y los algoritmos para representar conjuntos y relaciones entre ellos. [6] [7] El uso de subgrafos comunes por varios BDR ha llevado a la aparición de la estructura de datos del diagrama de decisión binario ordenado reducido compartido . [8] El nombre BDR ahora se usa principalmente para esta estructura de datos en particular.
Donald Knuth , en su video conferencia Fun With Binary Decision Diagrams (BDD), llamó a los diagramas de decisión binarios " una de las estructuras de datos realmente fundamentales que han surgido en los últimos veinticinco años " y señaló que la publicación de Randal Bryant de 1986 [6 ] , que destacó el uso de diagramas binarios de decisión para la manipulación de funciones booleanas, fue durante algún tiempo la publicación más citada en informática.
Los BDR se utilizan ampliamente en sistemas de diseño asistido por computadora (CAD) para la síntesis de circuitos lógicos y en la verificación formal .
En electrónica, cada BDR específico (incluso no reducido y no ordenado) puede implementarse directamente reemplazando cada nodo con un multiplexor con dos entradas y una salida.
El tamaño del BDR está determinado tanto por una función booleana como por la elección del orden de las variables de entrada. Al compilar un gráfico para una función booleana, el número de nodos en el mejor de los casos puede depender linealmente de , y en el peor de los casos, la dependencia puede ser exponencial con una elección fallida del orden de las variables de entrada. Por ejemplo, dada una función booleana, si usa el orden de las variables , entonces necesita 2 n +1 nodos para representar la función en forma de BDD. En la figura de la izquierda se muestra un BDD ilustrativo para una función de 8 variables. Y si usa order , puede obtener un BDR equivalente de 2 n +2 nodos. En la figura de la derecha se muestra un BDD ilustrativo para una función de 8 variables.
La elección del orden de las variables es fundamental cuando se utilizan tales estructuras de datos en la práctica. El problema de encontrar el mejor orden de variables es un problema NP-completo . [9] Además, incluso el problema de encontrar un orden subóptimo de variables es NP-completo , tal que para cualquier constante c > 1 el tamaño del BDD es como mucho c veces mayor que el óptimo. [10] Sin embargo, existen heurísticas efectivas para resolver este problema.
Además, hay funciones para las que el tamaño del gráfico siempre crece exponencialmente a medida que aumenta el número de variables, independientemente del orden de las variables. Esto se aplica a las funciones de multiplicación, lo que indica la gran complejidad de la factorización .
La investigación sobre diagramas de decisión binarios ha llevado a la aparición de muchos tipos de gráficos relacionados, como BMD ( Diagramas de momento binario ), ZDD ( Diagrama de decisión con supresión cero ), FDD ( Diagramas de decisión binarios libres ), PDD ( Diagramas de decisión de paridad ) y MTBDD (Multiple terminal BDD).
Muchas operaciones lógicas ( conjunción , disyunción , negación ) se pueden realizar directamente en el BDR utilizando algoritmos que realizan manipulaciones de gráficos en tiempo polinomial. Sin embargo, repetir estas operaciones muchas veces, por ejemplo, al formar conjunciones o disyunciones de un conjunto de BDD, puede conducir a un BDD exponencialmente grande en el peor de los casos. Esto se debe a que cualquier operación previa en dos BDR generalmente puede dar como resultado un BDR con un tamaño proporcional al producto de los tamaños anteriores, por lo que para múltiples BDR, el tamaño puede aumentar exponencialmente.
Estructuras de datos | |
---|---|
Liza | |
Árboles | |
cuenta | |
Otro |