Listas de decisión
Desde el punto de vista lógico, la parte condicional es sólo una proposición lógica, fórmula atómica, y así es evaluada como verdadera (T) o falsa (F). Su definición normalmente se formula como una pregunta acerca del estado, posición, etc., de algún dispositivo, artículo u objeto. Dependiendo de la respuesta, la acción asignada se ejecuta o no.
Puede haber dos organizaciones básicas de listas de decisión.
La primera es simplemente lineal; en esta organización las condiciones
se examinan consecutivamente, cada vez que la condición se evalúa
como verdadera se ejecuta la acción apropiada; entonces se evalúa
la próxima condición, etc. Así, en una organización
lineal cada condición se evalúa una vez y toda la lista se
examina a lo largo desatendiendo si cualquier acción (y cual) se
ha ejecutado. Un esquema gráfico de esta lista se presenta a continuación.
Una lista de decisión lineal
Después de entrar en la lista, se evalúa la primera condición. Si es verdad (T), se ejecuta la primera acción. A continuación se evalúa la siguiente condición, desatendiendo los resultados y el valor de la condición, etc. Después de finalizar la lista, el proceso examinador pueden repetirse (en un lazo cerrado) o puede terminarse. La iniciación de la entrada a una lista de decisión puede ser resultado de la ejecución de algún procedimiento de orden superior o de la satisfacción de algunas condiciones de entrada. Las acciones pueden representar operaciones reales en el sistema supervisado, decisiones, o sólo ciertas conclusiones para ser inferidas.
Otra posibilidad de organización de una lista de decisión
consiste en una estructura jerárquica. El principio es que la condición
mas restrictiva (la más fuerte, la más importante) se evalúa
primero, y si es verdad, se ejecuta la acción apropiada; la lista
se abandonada y, posiblemente, vuelve a interpretarse desde el principio.
Si la primera condición es falsa, se evalúan las siguientes
condiciones secuencialmente hasta encontrar la primera verdadera. Entonces
se ejecuta la acción apropiada y la lista se abandona. Este tipo
de organización se presenta esquemáticamente a continuación.
Una lista de decisión jerárquica.
Arboles de decisión
Las representaciones en arboles son estructuras que despliegan de forma intuitiva alguna decisión o procedimiento de clasificación, son leíbles, fáciles de usar y aceptados generalmente. La raíz del árbol es el nodo de entrada, y por debajo de cualquier nodo hay algunas conexiones de bifurcación. La selección de una conexión se lleva a cabo a partir de una declaración condicional asignada al nodo. La evaluación de esta condición (verdadera o falsa en el caso de árboles binarios, o un valor pre-especificado en el caso de árboles más complejos) determina la selección de la conexión. El árbol se cruza de arriba abajo, y la decisión definitiva u objeto clasificado se encuentra en las hojas.
La forma básica de árbol de decisión es un árbol
de decisión binario. En este árbol cualquier nodo (aparte
de los nodos hoja) tiene asignada una condición binaria equivalente
a una fórmula proposicional. Debajo de cualquier nodo hay normalmente
dos ramas, uno correspondiente a que la condición asignada sea verdadera
(V) y la otra que corresponde al caso de que la condición sea falsa
(F). A continuación se presenta un esquema gráfico de este
árbol.
Arbol de decisión binario simple.
En ciertos casos un árbol de decisión puede tomar la forma de grafo de decisión, cuando se enlazan ciertas ramas para evitar especificar durante muchas veces las mismas preguntas en situaciones iguales o similares. Es importante, sin embargo, que un árbol de decisión siempre se cruce de arriba abajo. Aun cuando tome la forma de grafo, no puede introducirse ningún ciclo.
Tablas de decisión
Una forma clásica de tabla de decisión es la vertical donde la condición_i especifica las condiciones a ser examinadas, y la acción_i define la acción a ser ejecutada. Los valores v_ij pueden ser + si la condición debe cumplirse para ejecutar la acción, - si la condición no puede cumplirse (si se cumple, entonces la acción no puede ejecutarse), y * (o vacio) qué significa que la acción es independiente de la condición. Los valores de w_ij son + si la acción debe ser ejecutada, con tal de que la sucesión vertical que define las condiciones sea satisfecha, o - (o el espacio vacío) si es necesario no realizar la acción. A continuación se presenta una tabla de decisión genérica.
condition_1 |
v_11 |
v_12 |
|
v_1n |
condition_2 |
v_21 |
v_22 |
|
v_2n |
|
|
|
|
|
condition_k |
v_k1 |
v_k2 |
|
v_kn |
action_1 |
w_11 |
w_12 |
|
w_1n |
action_2 |
w_21 |
w_22 |
|
w_2n |
|
|
|
|
|
action_m |
w_m1 |
w_m2 |
|
w_mn |
La evaluación de la tabla procede como sigue: se cruzan de arriba abajo las columnas de valores que especifican requisitos previos de acción, y se verifican las sucesiones de condiciones verdaderas y falsas. Si la forma coincide, se ejecutan las aciones especificados debajo, y se analiza la siguiente columna de condiciones. En condiciones normales, las condiciones pueden evaluarse una vez para procesar toda la tabla, y entonces sólo las sucesiones condicionales se emparejan con la forma actual de condiciones verdaderas y falsas.La ventaja principal de una tabla como la anterior consiste en su interpretación simple, intuitiva. Además, el procedimiento de evaluación puede acelerarse debido a la evaluación singular de condiciones durante cada ciclo. También pueden organizarse tablas de forma jerárquica, cierta acción puede consistir en analizar una tabla más específica, de un orden inferior (un acción similar a la instrucción "go to" en algunos lenguajes de programación). Una de las principales desventajas consiste en la posibilidad de definir las condiciones previas de acción sólo mediante valores binarios, dado que en algunos casos es más conveniente el uso de valores de atributos. A continuación se presenta una tabla ligeramente extendida, la tabla llamada de Objecto-Atributo-Valor (tabla OAV, OAT).
attrib_1 |
attrib_2 |
|
attrib_k |
action_1 |
action_2 |
|
action_m |
v_11 |
v_12 |
|
v_1k |
w_11 |
w_12 |
|
w_1m |
v_21 |
v_22 |
|
v_2k |
w_21 |
w_22 |
|
w_2m |
|
|
|
|
|
|
|
|
v_n1 |
v_n2 |
|
v_nk |
w_n1 |
w_n2 |
|
w_nk |
La tabla OAV es muy similar a las tablas de bases de datos relacionales y, de hecho, es una BDR con interpretación específica de ciertas columnas. El esquema básico es el siguiente.En la tabla anterior, las filas especifican bajo qué valores de atributos deben ejecutarse ciertas acciones. Como v_ij y w_ij pueden tomar muchos valores diferentes (no sólo verdadero/falso, o irrelevante, como en el caso anterior), el enfoque es más general que la tabla clásica anterior. En el caso de acciones, los valor específicos pueden indicar si la acción será aplicada o no, pero también pueden especificar algún parámetro de la acción, asociado a alguna columna. La interpretación (y ejecución) de esta tabla es directa: las filas se examinan sucesivamente, y se determinan los valores en curso de los atributos consecutivamente; si coinciden con la forma especificada en la fila examinada (la especificación dada por la fila examinada es más general que la especificación en curso), se ejecutan las acciones especificadas en la parte derecha de la tabla, y luego se examinan las siguientes filas. Por supuesto, también es posible la organización jerárquica de tablas.