Los Números y La Lógica Booleana de las Computadoras - Hoja 1 LOS NÚMEROS, EL CERO Y LA LÓGICA BOOLEANA DE LAS COMPUTADORAS Dr. Hernán Doval La escritura de los números ¿Cuándo y donde los hombres empezaron a contar? Por supuesto no conocemos los detalles, pero la historia de los “números” como la de la “escritura” está subordinada a la necesidad práctica de dejar “registrado”, por un tiempo al menos, lo que los hombres hablan y lo que contabilizan. Como en el nacimiento de la escritura, que fue precedida por la comunicación gestual y oral, antes del surgimiento del cálculo numérico existió la necesidad de “enumerar” y “contabilizar”. Las primitivas maneras de contar fueron “gestuales” y no habladas, por lo tanto pueden comprenderla tanto un chino como un argentino. Mostrar dos dedos para pedir dos cafés, es tan comprensible expresado por un argentino a un mozo chino de Hong Kong, como por un cliente chino a un argentino en un bar de Buenos Aires. Podemos conocer cuántas personas ha asesinado un pistolero arquetipo del Oeste, contando las muescas por cada enemigo muerto en las cachas de su Colt. Pero el pastor que realizaba muescas en su bastón de madera o juntaba piedras en un recipiente de barro por cada oveja que poseía, para así poder “contabilizar” su ganado, no podía saber si poseía diez o veinte animales; sólo sabía que tenía tantos como incisiones había hecho en su vara o como piedras había apartado en la vasija, pues el no estaba nombrando el número de sus piezas de ganado. Si el contar fue gestual al comienzo, todo lleva a pensar que los hombres contaron primero sirviéndose de los dedos (de una mano, de las dos manos, o incluso de las manos y de los píes); algunos han denominado a esto “inventario por medio del esqueleto”. Es por ello, que aún actualmente los papúes de Nueva Guinea cuentan del “1” (con el meñique derecho) al “22” (el meñique izquierdo), pasando por las articulaciones de la muñeca, del codo, del hombro, las orejas, los ojos, la nariz, la boca, etc. De esta manera el “nombre” de cada número estaba asociado al nombre de cada dedo y de la mano. En el Amazonas ecuatorial, por ejemplo, los jíbaros denominan jimiar (“par de dedos”) al número dos, uwej (“mano”) al cinco, nawe (“pie”) al diez, etc. Es una verdadera práctica mnemotécnica, en la que se combina una serie de “gestos” (mostrar uno, dos o tres dedos) con una serie fonética (el nombre de los dedos). Miremos comparativamente las tres primeras cifras en español y en algunas otras lenguas indoeuropeas. español francés italiano inglés holandés ruso latín uno un uno one een adin unus dos deux due two twee dva duo tres trios tre three drie tri tres Los Números y La Lógica Booleana de las Computadoras - Hoja 2 Todas estas expresiones se asemejan porque vienen de ciertas raíces del tronco indoeuropeo: oin (expresa la idea de único), dwi, tre; aunque no nos es conocido el origen del sentido de estas palabras antes que comenzaran a designar estos números, tal vez fueran empleadas para referirse a ciertas partes del cuerpo. Si sólo dispusiéramos de las diferentes partes del cuerpo para poder contar, rápidamente entraríamos en dificultades para nombrar cantidades importantes. El próximo paso fue pensar en alguna estructura que tuviera una “base cíclica”, es decir que se pudiera volver sobre si misma muchas veces para simplificar los inventarios. El esqueleto permitía ese juego al contabilizar como una unidad los cinco dedos de una mano, los diez dedos de ambas manos, o aún los veinte dedos de las manos y los pies. Reconocido esto, desde ese momento ya se podía contar multiplicando por la base, por ejemplo en un sistema de base cinco (tomando como unidad los 5 dedos de una mano), dos manos tienen el valor de diez y cuatro manos el valor de veinte (cinco multiplicado por cuatro). Los griegos utilizaban estas nociones para contar, utilizando un contador o ábaco con el mismo principio que aún se utiliza en el jardín de infantes. Tenían una especie de caja dividida en columnas, donde ponían piedritas (se la llamaban “cálculos”, en latín “calculus”), cada diez piedras había que pasar a la columna siguiente; así si llenábamos dos veces la primera columna esta se encontraba vacía, pero la columna siguiente tenía dos piedritas y esto indicaba el número veinte utilizando un contador de base diez (como es nuestro actual sistema numérico decimal). Digresión al margen, ahora podemos comprender porque la palabra “cálculo” significa un procedimiento aritmético como también la presencia de una “concreción” (litiasis o piedra) en el sistema ureteral (cálculo renal), en la vesícula (cálculo biliar) o en la vejiga (cálculo vesical). Sin embargo para la escritura de los números los griegos no utilizaron estas nociones, porque desde los tiempos homéricos los griegos escribían decenas y centenas con las iniciales de su nombre o concediendo a las letras del alfabeto valores numéricos; del 1 al 4 hacían la anotación ayudándose con barras verticales, para continuar con 5, 10, 100 etc., sirviéndose de siglas: P (pi) para penta (pende, “cinco”), D (delta) para deca (deka, “diez”), H (eta) para hecatón (hekaton, “cien”). Paralelamente a este sistema, cometieron un error fatal al llegar al siglo de Pericles, porque comenzaron a utilizar las 24 letras del alfabeto griego en su orden habitual, para escribir los números: “A” o “a” (alfa) para 1, “B” o “b” (beta) para 2, “G” o “g” (gama) para 3, “D” o “d” (delta) para 4, etc. Así, 10 pasó a ser “i”, la décima letra, y entonces “11” se escribía “ia”, la décima más la primera. Este sistema no era muy útil, porque los números se podían confundir con palabras, aún cuando para diferenciar las letras de los números a estos se les colocaba una raya encima. Por ejemplo, 318 se escribe “tíe” que en griego significa “¿por qué?”. Algo parecido nos sucede cuando leemos las nuevas patentes alfanuméricas (combinación de letras y números) que dan lugar a combinaciones como: “SEX 069”, “FMI 148”, “DGI 121”, “UCR 111”, “OPA 303”, “USA 909”, que muchas veces disgusta al dueño del auto. Los Números y La Lógica Booleana de las Computadoras - Hoja 3 De esta manera las palabras podían tener valores numéricos, lo que quizás sirviera de base para interpretaciones esotéricas o para la magia cabalística. Los hebreos que tomaron prestado este sistema de numeración de los griegos, no escribían nunca el número 15 utilizando la suma de 10+5, sino utilizando en su lugar 9+6; ya que el conjunto 10+5 (es decir yod que sería 10 y he que indicaría 5) configura las letras del nombre de Dios: Yahvé... Los romanos también emplearon letras en la trascripción de las cifras. Utilizaron barras verticales para los primeros tres números, una barra para el número 1, dos barras para el 2 y tres barras para el 3, como ya vimos antes que era usual entre los griegos y otras numerosas culturas. Un caso diferente es el signo V (para el 5) y el X (para el 10). Cuando se utilizan barras para las anotaciones no se pueden disponer de muchas soluciones gráficas, además de las incisiones verticales (para los números del 1 al 3), se pueden realizar cruces con dos barras que pueden tener la forma de un signo más (+) o de una equis (x). Los romanos escogieron la “X” para la notación del número 10, en el lugar donde los griegos se sirvieron de la “sigla” D (delta) por razones no conocidas. De esta “X” que indica 10 se deriva la “V” como la mitad de la “X” (el signo “X” partido en dos) y que por lo tanto denota 5. De esta manera se pueden comprender las tres primeras cifras romanas, I, V, X. Para las cifras 50, 100 y 1000, utilizaron respectivamente las letras “L”, “C” y “M”. Evolucionaron de tres letras griegas que no corresponden a ningún sonido de la lengua latina. El signo griego ψ evolucionó a “L” (50), θ a “C” (100) y φ a “M” (1000). En Roma cuando se colocaba un número de menor valor a la izquierda de uno de mayor valor, este último disminuía su valor por lo indicado en el número más pequeño, por ejemplo “IV” indica 4 (5-1), “XC” 90 (100-10); y colocado a la derecha aumenta el valor, por ejemplo “VI” significa 6 (5+1) y “CX” 110 (100+10). Así el número decimal “1999” se escribe: MCM XC IX, como si fueran varias columnas. Como los ejércitos romanos colonizaron gran parte de Europa, el norte de África y el cercano Oriente, esta forma de notación numérica se utilizaría en el mundo occidental hasta el siglo X después de Cristo, porque recién por primera vez aparecen cifras “árabes”, en lugar de las habituales cifras romanas, en el manuscrito Codex Vigilanus del año 976. Lo que caracteriza a todas las numeraciones de la antigüedad, pasando desde los sumerios, egipcios y chinos a los griegos y romanos, es que las cifras disponen “siempre” del mismo valor: el número 221 se escribía entre los sumerios, que tenían base sexagesimal, 3 veces sesenta + 4 veces diez + uno (utilizaban 8 números en lugar de tres en el sistema decimal actual), y por los chinos, dos + cien + dos + diez + uno (5 cifras en lugar de tres), los romanos escribían CC XXI (también 5 signos). La invención del “cero” El verdadero cambio revolucionario de las notaciones numéricas actuales, es el concepto según el cual el lugar en donde se encuentra colocado un número determina su valor, en el ejemplo anterior de la cifra 221 el primer 2 vale 200 y el segundo 2 vale 20. Para que pueda suceder que el mismo número se transforme en valores diferentes según su posición, tiene que inventarse el “cero”. Desde este momento los números según su posición se Los Números y La Lógica Booleana de las Computadoras - Hoja 4 convierten en “cifra”, palabra árabe que significa “cero” o “vacío”; y este concepto inicialmente indicaba la ausencia (“vacío”) de unidades en cierto orden numérico. Gracias a la invención del “cero” y de la “numeración posicional”, de aquí en adelante solamente iban a ser necesarios un número muy limitado de signos para hacer la notación de cualquier número, por elevado que fuera este. Sólo 10 signos numéricos (del 0 al 9) en nuestra habitual numeración “decimal”, o únicamente 2 signos numéricos (“0” o “1”) en la numeración “binaria” que utilizan nuestra computadoras para realizar complejos cálculos. La notación decimal es también llamada “números arábicos”, pero no significa que este sistema haya sido creado por los árabes. Por lo que conocemos el “cero” nació con los sumerios, simplemente para resolver dificultades de cálculo, aunque no lo utilizaron para una numeración posicional. Se lo apropiaron los griegos del ejército de Alejandro Magno en su paso por Babilonia en el año 331 antes de Cristo y lo llevaron a la India hasta donde llegaron sus soldados. O mejor dicho intelectuales como Pirrón y otros expertos en astronomía y matemáticas, que hicieron conocer a los indios la obra de Herón, Pappus y Diofanto. Allí el “cero” se quedó por varios siglos –existe una tabla del año 876 donde “270” aparece escrito “270”. De allí lo tomaron los árabes, apareciendo en Bagdad en el año 773, pasando de Damasco a la Córdoba morisca y de allí al resto de Europa. El árabe Al Khwarizmi hizo entrar en la historia el sistema decimal cuando en 825 escribió un tratado llamado Al Gebar, introduciendo como dice su título el “álgebra”. Muy pronto los “números arábigos” y los cálculos que con ellos se hacían, fueron conocidos como “algorismos”. A pesar que eran necesarios para utilizarlos en la contabilidad cada vez mayor del desarrollo incipiente de la burguesía comerciante de las villas (burgos), no todos aceptaron las cuentas “por algorismo”, ya que lo consideraban poco confiable. Aún en 1299 el gobierno de Florencia puso fuera de la ley a los que utilizaban libros contables que contenían “algorismos”, y en Padua exigían que los precios de los libros estuvieran en letras, como garantía de lealtad comercial (como aún se pide en la confección de cheques bancarios). Sin embargo al transcurrir el siglo XV la victoria de los “números arábigos” fue total. En un grabado de Gregor Reisch que ilustra la Margarita Philosophica de 1503, la musa Aritmética mira displicentemente a Boecio que terminó un certamen de cálculo, utilizando el nuevo sistema decimal, contra Pitágoras que seguía calculando con su ábaco. Sin el “cero” no sólo no existiría el sistema decimal actual, sino que no conoceríamos los números negativos y ni siquiera los decimales, tampoco los logaritmos, y probablemente no hubieran aparecido Descartes, Newton o Einstein. La notación decimal utiliza solamente 10 signos numéricos (0 a 9) y el valor depende en la posición en que se encuentren. Como en el ábaco cada 10 signos numéricos pasamos a la posición siguiente, por lo tanto las posiciones que ocupa cada número van a estar indicados por la potencia de n 10, la fórmula genérica sería (0-9)*10 (figura 1). Los Números y La Lógica Booleana de las Computadoras - Hoja 5 Por lo tanto en el número “237” de la figura 1, el “2” indica “200” y se puede escribir 2*102 (donde la potencia “2” de base “10” indica 200 y obviamente la colocación de dos ceros a la derecha del “2”), el “3” indica “30” (3*101) y el “7” representa la unidad (7*100). La suma de 200 + 30 + 7 = 237. Observe, para comparar, como se escribía 237 en romano en la figura 1 (CC XXX VII). Figura 1 Notación “decimal” y “romana” 237 10 200 30 7 237 2 2*10 1 3*10 0 7*10 237 CC XXX VII (0-9)*10 n Ahora nos vamos a introducir a otro tipo de notación numérica, la llamada “binaria” que utiliza la potencia de base “2” (“0” o “1”). Números “binarios” y la computadora digital Todas las computadoras digitales que utilizamos operan con números binarios y un circuito lógico (que más adelante veremos que es una lógica booleana). Todos reconocemos que las computadoras superan al cerebro humano en la velocidad de procesamiento y en la capacidad de almacenamiento de su memoria permanente. Pero para desmitificar el trabajo sorprendente que realiza esta “caja negra”, vamos a examinar las operaciones internas sencillas que realiza, pero eso sí, de manera incesante y repetidas velozmente. La célula de memoria más elemental de una computadora puede solo almacenar una variable con dos valores, el llamado “binary digit” o más conocido como bit, que representa una pieza de información ya sea numérica como “0” o “1”, o lógica como “Falsa” o “Verdadera”. Esto se realiza electrónicamente con una corriente baja o alta, o un voltaje negativo o positivo, o una magnetización débil o fuerte, que representan Los Números y La Lógica Booleana de las Computadoras - Hoja 6 respectivamente el “0” o “Falso” y “1” o “Verdadero”. Esto termina expresando una numeración o lógica binaria. El número de veces por segundo que la computadora es capaz de cambiar, leer o escribir la corriente, el voltaje o la magnetización y el número de operaciones paralelas determina su velocidad. ¿Cómo almacena y usa los números la computadora?. Por supuesto no en la forma decimal (0 a 9) que nosotros conocemos, sino en la forma binaria (0 o 1), que es la única forma en que puede almacenar una computadora digital. Cuando el usuario utiliza la computadora no le interesa que ella transforma los números decimales que introduce a números binarios, o que los resultados de las operaciones aritméticas con los números binarios (suma, resta, multiplicación y división) se transformen en números decimales en la pantalla. Pero aún así, es útil tener una idea básica de estas operaciones internas de transformación de la computadora, aunque sea para desmitificar este instrumento creado por el hombre. Vamos a utilizar un número pequeño como el “11” para realizar la transformación de la notación “decimal” a la “binaria”. En notación decimal 1110 se escribiría ((0-9)*10n); o sea 1*101 + 1*100 = 11 (figura 1). En notación binaria debemos escribir (0-1)*2n (figura 2). Por lo tanto el primer número binario que utilizaremos es el “1” con la potencia de base “2” que más próxima se encuentre al número decimal “11”. Calculemos empezando por el menor, 1*21 = 2, 1*22 = 4, 1*23 = 8, 1*24 = 16. O sea “1” multiplicado por la potencia de “2” que no se pasa del número decimal “11” es la tercera (1*23 = 8) (figura 2). Colocamos el número “1” con tres ceros de posición a la derecha = “1000” y descontamos (restamos) “8” de “11” y nos queda el número decimal “3” (11 – 8 = 3) (figura 2). La próxima posición descendente en los números binarios es 1*22 = 4, como sobrepasa al número decimal “3” en esa posición ponemos cero (0*22 = 0), o sea el número binario “0” con dos ceros a la derecha = “000” (figura 2). La siguiente posición en los números binarios es 1*21 = 2, que lo restamos al “3” decimal y queda “1”, y al mismo tiempo colocamos el “1” con un cero a la derecha = “10” (figura 2). Al final en la unidad ponemos el “1” (1*20) = “1” (figura 2). El número binario resultante de 1000 + 000 + 10 + 1 = 1011, es la forma en que la computadora digital almacena el número decimal “11”. O sea “1110” decimal (1*101 + 1*100 = 11) se transforma en “10112” binario (1*23 + 0*22 + 1*21 + 1*20). Los Números y La Lógica Booleana de las Computadoras - Hoja 7 Figura 2 Transformación “decimal” 11 (0-1)*2 10 Paso 1 -8 1*2 3 Paso 2 -0 0*2 3 Paso 3 -2 1*2 3 2 1 n “binario” 1011 2 1000 2 000 2 10 2 1 Paso 4 -1 1*2 0 12 0 ¿Cómo se suman y restan los números binarios?. Las reglas para adicionar o sustraer los “números binarios” son exactamente las mismas que se utilizan para sumar y restar con los “números decimales”. Vamos a mostrar un ejemplo de cómo se suman los números decimales “43” y “78” (43 + 78 = 121) y sus homólogos números binarios “000 101 011” (compruebe que es la transformación del número decimal 43) y “001 001 110” (compruebe que es el número decimal 78) respectivamente (figura 3). Para mayor comprensión visual el número “43” se descompone como 4*101 + 3*100 y el “78” como 7*101 + 8*100. Compruebe el los cálculos realizados en la figura 3, que de la misma manera que se “transportan” en los números decimales las cifras 10 o mayor a la posición siguiente y queda el resto (o cero) en la misma posición; con los números binarios se “transportan” las cifras de 2 o mayor a la posición siguiente y queda el resto (o cero) en la misma posición. Los Números y La Lógica Booleana de las Computadoras - Hoja 8 Figura 3 Base 101 100 43 4 3 + 78 +7 +8 11 11 12110 +1 12 “se lleva” 1 o 12110 Los mismos números en la forma “binaria” son: 000 101 011 = 4310 +001 001 110 = 7810 102 121 001 1 001 111 1 001 “se lleva” = 12110 La misma técnica sencilla, similar a la decimal, se utiliza para la resta de los números binarios. Introducción a la Lógica Booleana Vamos a introducirnos en la “lógica Booleana” para conocer como funcionan los programas “cualitativos” de las computadoras digitales, en la mayoría de los programas de apoyo o toma de decisiones. Los programas de apoyo para tomar decisiones heurísticas operan con expresiones lógicas (E), que a su vez están compuestos por elementos de decisión binarios. Estos elementos de decisión binarios se utilizan, por ejemplo, para probar si algún síntoma de la enfermedad esta presente, o si tenemos una variable continúa (ej. glucemia), para conocer si la medición está por encima de cierto nivel umbral (glucemia >120 mg%). Estas "expresiones lógicas” son las “operaciones lógicas” binarios que ya discutimos como: VERDADERO (V) o FALSO (F), “1” 0 “0”, YES (Y) o NOT (N), SI (S) o NO (N). Los Números y La Lógica Booleana de las Computadoras - Hoja 9 La matemática es una rama de la lógica, que tiene un origen filosófico, o al revés como quieren algunos matemáticos. Es muy útil y funcional para las computadoras digitales, porque todos sus circuitos operan con reglas basadas en una lógica binaria. El fundamento de la “lógica matemática” apareció en el siglo XIX, cuando en 1847 Boole publicó su libro “El Análisis Matemático de la Lógica”. Por lo tanto la lógica matemática es también llamada “lógica booleana”; pero también se la conoce con otros nombres como: “lógica combinatoria”, “lógica simbólica”, o “lógica proposicional”. Figura 4 LOGICA BOOLEANA (diagrama de Venn) A ‘A ‘A A B ‘B ‘A A B ‘B E = NOT A 1) 2) 3) 4) A V V F F B V F V F E = ‘A A V F ‘A F V A AND B E = A AND B E = A.B 1) V 2) 3) 4) F ‘A A B ‘B E = A OR B A OR B E = A+B 1) 2) 3) V 4) F Operadores Lógicos Existen un número finito de “operadores lógicos”, de los cuales los más importantes son el “operador unitario” NOT (opera solamente con una variable lógica), la expresión lógica se escribe E = NOT A. Los “operadores binarios” AND y OR (ambos operan con dos variables lógicas), las expresiones lógicas se escriben E = A AND B y E = A OR B respectivamente. Vamos a mostrar como funcionan los “operadores lógicos” utilizando un diagrama de Venn. Un diagrama de Venn es una representación gráfica de todos los objetos posibles que pertenecen a cierta “clase de objetos”. El rectángulo en el diagrama de Venn representa el dominio de cierta clase de objetos. La operación NOT En la figura 4 el rectángulo podría, por ejemplo, representar una clase de objetos que podrían ser “animales”. Si ahora querríamos representar un grupo de “mamíferos” dentro de la clase de animales, lo pondríamos dentro Los Números y La Lógica Booleana de las Computadoras - Hoja 10 del Círculo A, todos los animales fuera del círculo A serían también animales pero “no mamíferos”, por lo tanto la expresión se escribiría: E = NOT A O como en la lógica booleana, utilizando el apóstrofe en lugar de NOT: E = ‘A Esta expresión (el área fuera del círculo de la figura 4) es VERDADERA (V) si A es FALSA (F), y FALSA (F) si A es VERDADERA (V). En el primer diagrama de Venn de la figura 4, a la derecha se puede ver una tabla con esta dos opciones opuestas. Por lo tanto una expresión como: A = “este animal es un mamífero” debería estar en el círculo A que es V, si estuviera fuera del círculo en ‘A, sería F. La operación AND Si ahora, además del rectángulo (animales) y del círculo A (mamíferos), de manera similar dibujamos un nuevo círculo B, de manera que B representara: B = “este animal vive en el océano”. Los dos círculos A y B estarán parcialmente sobrepuestos, la intersección de los dos círculos estará constituido por el subgrupo de “mamíferos que viven en el océano”. Esta superposición de los dos círculos permite 4 posibilidades de verdadero o falso de la relación del grupo A y B, los dos verdaderos, los dos falsos, uno falso y otro verdadero o viceversa (ver Tabla de la figura 4). Por lo tanto el área sombreada (la intersección), se escribe como: E = A AND B En el álgebra booleana se coloca un “punto”, representando la operación AND o el producto lógico, de una manera similar a la multiplicación algebraica, por lo tanto: E = A . B, De manera que esta expresión lógica será VERDADERA, únicamente si ambas A y B son VERDADERAS. Por lo tanto, la expresión “la ballena es un mamífero que vive en el océano” será VERDADERA, si tanto A (mamífero) como B (vive en el océano) son VERDADERAS. La operacion OR La expresión lógica: E = A OR B es únicamente FALSA si ambos, A (mamíferos) y B (viven en el océano) son FALSOS, en cualquier otra situación la expresión es VERDADERA. El área sombreada de la unión de A y B del último diagrama de la figura 4 la operación OR en un diagrama de Venn. La expresión una “cucaracha” es un mamífero o vive en el océano es FALSA porque A y B son FALSAS. En el álgebra booleana: E=A+B Con el signo “más” representando la operación lógica OR o adición lógica (figura 4), la cual es totalmente diferente a la suma algebraica. Los Números y La Lógica Booleana de las Computadoras - Hoja 11 Figura 5 MÉTODO CUALITATIVO O SIMBÓLICO Características de un valor por encima de un umbral (U) E = “x > U” o es Verdadero (V) o es Falso (F) Característica de la expresión, puede ser un Síntoma (S) E = “ síntoma S está presente” o es V o es F Características más complejas, varios síntomas o valores E = “relación Q/R > 1/3 AND duración de Q >0.03 s en D1 o V6” Ecuación 10 del código de Minnesota El valor de “E” se utiliza para comenzar otra “unidad de decisión” (próxima), o realizar alguna “acción” (final) IF “E” THEN (acción 1) ELSE (acción 2) Expresiones lógicas Una “expresión lógica puede ser: • una “variable lógica”, • una “declaración verbal” que puede ser VERDADERA o FALSA, o • variables lógicas lógicos. y declaraciones combinadas por operadores Cuando la expresión lógica es una “declaración verbal”, usualmente se coloca entre comillas. Colocaremos algunas declaraciones verbales simples: E1= “8 es un número primo”. E2 = “relación Q/R > 1/3 AND duración de Q >0.03 seg en D1 o V6” (ecuación 10 del código de Minnesota). E3 = “9 + 6 = 15”. Cada expresión lógica puede ser VERDADERA o FALSA, en los ejemplos anteriores es evidente que la expresión E1 es FALSA, y que la E3 es VERDADERA. Además la expresión E2 tiene dos declaraciones verbales combinadas con un operador lógico. (figura 5) En la implicación nosotros relacionamos dos expresiones lógicas A y B una con la otra, diciendo que si A es VERDAD, entonces B es también VERDAD. La expresión se escribe: E=A→B Esto anotación significa que “A implica B”, u otra manera que se escribe en el lenguaje de las computadoras digitales, “IF A THEN B (acción 1) ELSE C Los Números y La Lógica Booleana de las Computadoras - Hoja 12 (acción 2)”. Esta relación lógica se utiliza en los sistemas expertos de los programas de las computadoras (figura 5). Estos sistemas que realizan deducciones sobre métodos simbólicos utilizando operadores lógicos, de la manera que lo hace un sistema de apoyo de decisiones que usa un razonamiento basado en reglas, para concluir un diagnóstico basado en un caso modelo, es llamado popularmente el método heurístico; como es utilizado en el razonamiento clínico habitual. Estas decisiones individuales se realiza sobre la presencia de un síntoma: E = “síntoma S está presente” O en su defecto, si una “medición” es mayor que algún “valor umbral”, si en el resultado de una prueba el valor de “x” es mayor que el umbral “U”. De esta forma estos datos continuos se convierten en datos binarios, donde el valor lógico de la expresión E puede ser VERDADERO o FALSO. Se escribe: E = “x > U” (figura 5) Un formalismo de expresiones complejas es el código de Minnesota, que es utilizado para clasificar el electrocardiograma en diferentes categorías de diagnóstico electrocardiográficos de enfermedades, y se usa fundamentalmente como “screening” poblacional. Este código tiene muchas micro-decisiones lógicas incorporadas, muchas veces, en expresiones (E) bastantes largas. Ya hemos visto como se escribe la “expresión lógica” de la ecuación 10: E = “relación Q/R > 1/3 AND duración de Q >0.03 s en D1 o V6” El valor de E de esta expresión puede ser utilizada para comenzar alguna otra unidad de decisión elemental o realizar alguna acción. Por lo tanto la expresión más general en el razonamiento heurístico es: IF E THEN (acción 1) ELSE (acción 2). Figura 6 SECUENCIA de las MICRODECISIONES La “secuencia de las microdecisiones” va a depender del conocimiento de la enfermedad, los pasos que se deben realizar en el proceso de “toma de decisiones”, y el “objetivo” propuesto en el proceso de toma de decisiones Generalmente se siguen 3 estrategias diferentes en la toma de decisiones “heurística” con computadoras: 1. Uso de todas las microdecisiones simultáneamente (tablas de decisión o tablas de verdad) 2. Uso de las microdecisiones secuencialmente (hojas de flujo o arboles de decisión) 3. Uso de las microdecisiones expresadas en reglas de acción (basada en reglas o razonamiento cualitativo) Los Números y La Lógica Booleana de las Computadoras - Hoja 13 La “secuencia de las microdecisiones”, como se realizan en un programa, dependen del conocimiento que se tiene de la enfermedad, los pasos a realizar en la “toma de decisiones” y el “objetivo” que se propone (figura 6). De manera más general, se utilizan tres estrategias diferentes cuando se toman decisiones “heurísticas” con computadoras (figura 6): 1. Utilización “simultánea” de todas las microdecisiones (tablas de decisión o tablas de verdad) 2. Utilización “secuencial” de las microdecisiones (hojas de flujo o árboles de decisión) 3. Utilizar las microdecisiones expresadas en “reglas de acción “ (basada en reglas o razonamiento cualitativo) Mostraremos algunos ejemplos con los tres métodos. Tablas de Decisión o Verdad Una Tabla de Verdad o Decisión toma todas las expresiones lógicas (Ek) en forma simultánea o de una sola vez. Una ecuación general de una Tabla de Verdad es: D = E (E1, E2, ... Ek) Figura 7 TABLAS de DECISION o VERDAD Toma en cuenta todas las expresiones lógicas Ek en una vez Var. E1 E2 E3 E4 E5 E6 E7 E8 E9 E 10 E 11 E 12 Expresión lógica Todos los RR son regulares Todos los QRS son idénticos QRS dura > 120 msec Frec. card. > 100 lat/min Las ondas P están presentes Frec. Card. < 40 lat/min P neg. en DII y pos. en aVR No. P/QRS < 1.1 No. P/QRS > 1.1 Intervalos PR regulares Intervalo PR > 200 ms P además de DII y aVR D = E {E1,E2,....Ek} . AND + OR .’E NEGACION Expresiones lógicas E usada como Elementos en la Tabla de Verdad para el diagnóstico de Arritmias diag. “ritmo nodal” D=E1.E2.’E3.’E5. ’E12+E1.E2.’E3.E5. E7, Un ejemplo concreto de “tabla de verdad” es un programa de computación para el reconocimiento de algunas arritmias, diseñado por J. Wartak, que utiliza “expresiones lógicas” donde se consideran las formas de las ondas y el intervalo RR del electrocardiograma (ECG). En la figura 7 se pasan lista a las 12 diferentes expresiones lógicas. Los Números y La Lógica Booleana de las Computadoras - Hoja 14 A su vez en la figura 8 se da la “tabla de verdad”. La combinación de las 12 expresiones lógicas en las “reglas” que se establecieron del 1 la 9, nos permite conocer el “diagnóstico” (D) de las diferentes arritmias. Por principio, este método de apoyo en la decisión diagnóstica evaluaría todas las líneas (las reglas diagnósticas) de la tabla de verdad (en el caso de la figura 8 las nueve líneas en forma completa) antes de llegar a una decisión diagnóstica definitiva. Tomemos como ejemplo las expresiones lógicas para el diagnóstico del ritmo nodal (figura 8). El diagnóstico se realiza aplicando las reglas 3 y 4, de manera que podemos escribir: D = E1 . E2 . ‘E3 . ‘E5 . ‘E12 + E1 . E2 . ‘E3 . E5 . E7, En esta ecuación el “punto” indica el operador lógico AND, el signo “más” el operador lógico OR y el “apóstrofe” la negación lógica NOT. Esta expresión diagnóstica significa que en ambas declaraciones (+ o OR), es VERDAD que “todos los intervalos RR son regulares” (E1) y “todos los complejos QRS son idénticos” (E2), y es FALSO “que la duración de los QRS es mayor de 120 mseg” (‘E3). Además en la primera parte, es FALSO que “las ondas P están presentes” (‘E5) y “las ondas P están presentes en derivaciones distintas de DII y aVR” (‘E12). En la segunda parte es VERDAD que “las ondas P están presentes” (E5) y que presentan “P negativa en DII y positiva en aVR” (E7) (figura 8). Figura 8 Tabla de Verdad para el Diagnóstico de Arritmias (Wartak J.) R. E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 D expr. Diag 1 V V V V F N N N N N N N Taq. Ventr. 2 V V V F N V N N N N N N R. Idioventr. 3 V V F N F N N N N N N F R.Nodal 4 V V F N V N V N N N N N R.Nodal 5 V V F N V N F V N N N N AV 1° Grado 6 V V F N V N F V N F N N Disoc. A-V Wenckebach Mar.Errante 7 V V F N V N F F V N N N AV 2° Grado 8 V V F N V N F F F N N N AV 3° Grado 9 V V N N V F F V F V F F R.Sinusal Como se puede ver con este ejemplo diseñado por J. Wartak, de tabla de verdad para el diagnóstico de arritmias, las tablas de verdad pueden incorporar fácilmente decisiones complejas sobre muchas enfermedades. Los Números y La Lógica Booleana de las Computadoras - Hoja 15 Sin embargo, optimizar una tabla de verdad es dificultosa, y solamente si se “valida” la tabla de verdad diseñada por un evaluador o prueba independiente, esta puede confirmar un rendimiento aceptable. Hoja de flujo El sistema de una “hoja de flujo” utiliza, en principio, la misma lógica booleana de las decisiones micro que las tablas de verdad, la diferencia entre ambas es que una “hoja de flujo” contiene más conocimiento e información que una tabla de verdad. Esto se debe a que en la hoja de flujo las reglas no son evaluadas simultáneamente (como en la tabla de verdad), sino de manera secuencial como condiciona la estructura jerárquica que establece la hoja de flujo. En una hoja de flujo la “unidad elemental de decisión” se dibuja como un rombo, y tiene una “entrada” en la parte superior y dos o más “salidas” en la parte inferior del rombo (figura 9). La “entrada” conecta ese nodo de decisión con la “unidad elemental de decisión" que la precede, y las “salidas” son las decisiones lógicas binarias excluyentes de VERDADERO o falso. Figura 9 FLUJOGRAMA (árbol de decisión) El “flujograma puede ser considerado como un “árbol de decisión colocado cabeza abajo, con las raíces en la parte superior y las ramas y las hojas desplegándose hacia abajo. Se toman las microdecisiones en los llamados “nodos”, que es una figura romboidal con una entrada en la parte superior y dos o más salidas en la inferior. F V La entrada está conectada a la unidad de decisión elemental precedente, y las salidas son las decisiones binarias VERDADERO (V) o FALSO (F). El árbol sigue una vía que va de la raíz y finaliza en las hojas, donde comienza alguna actividad o se va a otro flujograma. Se puede considerar que el diseño y construcción de una “hoja de flujo”, es similar a las de un “árbol de decisión” colocado cabeza abajo; es decir con las “raíces” en la parte superior y las “ramas” y las “hojas” creciendo hacia abajo. La decisiones que se toman en dicho “árbol”, viajan de la “raíz” y termina en algunas de sus “hojas”, con lo que se espera sea una decisión correcta. Al llegar al final de la hoja, expresada en una regla similar a la que se Los Números y La Lógica Booleana de las Computadoras - Hoja 16 usaban en la tabla de verdad, se toma una acción, que puede ser el comienzo de alguna actividad o ir a alguna otra “hoja de flujo”. La figura 10 muestra un ejemplo de una “hoja de flujo”, basada en las mismas decisiones elementales y expresiones lógicas que se presentaron en la “tabla de verdad” de la figura 8. Una gran ventaja de la hoja de flujo con respecto a la tabla de verdad, es que en ésta el procesamiento de la información es mucho más eficiente, ya que no es necesario que se evalúen todas las entradas de combinaciones posibles. Pero la principal desventaja es que el proceso de toma de decisiones es muy rígido, una vez que se comete un error y se entra en un camino de decisión equivocado, no existe un retorno posible al camino verdadero. Es por ello, que aún más que en una tabla de verdad, la “hoja de flujo” debe ser probada muchas veces de manera exhaustiva antes de poner en aplicación en la práctica clínica. Figura 10 Flujograma de Diagnóstico de las Arritmias Inicio F E1 V F E2 V F E3 V F E4 V V E5 F TV F E5 F E12 V E6 V E7 RIV F RN F V E8 F AV1 F E9 F V E10 WB V AV2 AV3 Debe recordarse que cuando se construye tanto una tabla de verdad como una hoja de flujo, la clave para que sea exitosa o sea, que permita con seguridad un resultado, depende de su construcción empírica de ensayo y error con pruebas múltiples y extensa de campo; ya que no existen formalismos matemáticos, tal como se utilizan en los modelos estadísticos, para asegurar la ausencia de errores de construcción. Se utiliza la técnica de “algoritmo de partición no paramétrica” para la construcción de una hoja de flujo. Esta indica que se debe tomar primero en consideración a la “característica más discriminante” y comenzar la construcción del primer “nodo elemental” de decisión en la “raíz” del Los Números y La Lógica Booleana de las Computadoras - Hoja 17 “árbol”. Hecho esto, se busca la “característica más discriminante” siguiente para cada rama del primer nodo de decisión, y se prosigue de esta manera hasta agotar todas las características del grupo de decisiones que tenemos listadas. Una vez terminado nos daremos cuenta que nos ha salido un árbol muy extenso y “frondoso” para poder utilizarlo en la toma de decisión clínica, así que este va a ser el momento de “podar” algunas de las ramas poco utilizadas. A diferencia de una clasificación estadística, para probar que construimos el mejor árbol de decisión posible para el problema de decisión que teníamos entre manos, su rendimiento en la realidad debería ser evaluado por un grupo de pruebas independientes (expertos del tema, otras reglas de decisión, etc.). Razonamiento “basado en reglas” En los dos métodos anteriores, cuando ocurren nuevas pruebas diagnósticas, respuesta terapéuticas y por lo tanto cambios en la toma de decisiones, toda la tabla de verdad o la hoja de flujo deben ser condicionadas por dichos cambios. Por este motivo se han diseñado sistemas que independicen el conocimiento contenido en las reglas de expresión lógica que hemos venido discutiendo, de la estructura del propio “modelo de decisión”; esto se trató de resolver con el sistema de razonamiento “basado en reglas” (figura 11). Figura 11 Razonamiento Basado en Reglas Las “reglas” que contienen un conocimiento del tipo IF “E” THEN (acción 1) ELSE [acción 2] , forman lo que se llamaría una “base de conocimiento” Por ejemplo: IF {E1.E2.’E3.’E5.’E12} THEN R. N. IF {E1.E2.’E3.E5.E7} THEN R.N. Base de conocimiento Métodos de Inferencia Base de datos de pacientes Conocimiento Explicación Hist. Clínica Las reglas en las cuales está contenido el conocimiento de las expresiones lógicas, forma una base de conocimiento, la cual es similar a una “base de datos”, pero en este caso no contiene simplemente datos sino en su lugar “sentencias lógicas” que en situaciones posibles, definida por los datos Los Números y La Lógica Booleana de las Computadoras - Hoja 18 reales de un determinado paciente, se relacionan con las conclusiones posibles alcanzadas cuando se toman en consideración dichos datos (figura 11). En este sistema subyace el “conocimiento heurístico” del razonamiento clínico, en el cual de un lado tenemos la “base de datos del paciente” y del otro la “base de conocimiento”, y es posible razonar acerca de los dos y sacar una conclusión, que siempre utilizará un “método de inferencia” con un pensamiento original similar a lo que sucede en la mente de un clínico formado. Para el mecanismo de inferencia que utilizan los sistemas de razonamiento basado en reglas, existen diferentes estrategias, estas son conocidas como razonamiento hacia delante y razonamiento hacia atrás. En ambos estrategias de inferencia, los datos del paciente seleccionan una o más reglas de conocimiento que pueden razonar con dichos datos; la ejecución de dichas reglas puede llevar por mecanismos de inferencia a preguntar por más datos del paciente o a aplicar automáticamente una o más reglas adicionales. Como el mecanismo de inferencia puede llevar a invocar una regla después de otra, a menudo se refieren a la “base de conocimiento” como reglas de producción, porque producen automáticamente “cadenas de razonamiento” durante la resolución de un problema. Razonamiento hacia delante En el “razonamiento hacia adelante”, el dato seleccionado de la “base de datos del paciente” se confronta con las “reglas de producción” de la “base de conocimiento para hacer “inferencias”. La conclusión se puede ejecutar o agregar al grupo de datos, para de esta manera desencadenar nuevas conclusiones si existen reglas que se ajusten a esos nuevos datos. Por lo tanto, al “razonamiento hacia delante” también se lo llama razonamiento manejado por los datos. Una vez que una o más reglas son evocadas por los datos primarios o por las conclusiones, el programa se detiene. Razonamiento hacia atrás En el “razonamiento hacia atrás” el proceso se inicia cuando el mecanismo de “inferencia” selecciona las “reglas” de la “base de conocimiento” y controla si hay datos disponibles en la “base de datos” del paciente para poder realizar la inferencia. Si al utilizar la “regla elegida” no existen las premisa en la “base de dato” del paciente, en el “razonamiento hacia atrás” se determina si las otras reglas tienen aplicación para los datos de ese paciente. Por eso este tipo de razonamiento, también llamado razonamiento manejado por el objetivo, continúa cíclicamente ya sea hasta que se prueba que la regla elegida es falsa o se reconoce que todas las premisas de la regla elegida son verdaderas. Algunos mecanismos combinan ambos sistemas de razonamiento, hacia delante y hacia atrás. Cuando existen pocos datos, es mejor empezar con Los Números y La Lógica Booleana de las Computadoras - Hoja 19 los datos primarios (razonamiento hacia delante), porque esos datos pueden elegir selectivamente la regla correspondiente de la “base de conocimiento”. Cuando existen muchos datos del paciente que estamos considerando, no deseamos desencadenar una interminable cadena de reglas de producción si utilizáramos el razonamiento hacia delante, en esta situación empezar con las reglas de la “base de conocimiento” (razonamiento hacia atrás) es mucho más eficiente. El razonamiento basado en reglas es también conocido como un sistema basado en el conocimiento; en la vieja literatura se lo llamaba sistema experto, porque el sistema contenía conocimiento de los expertos y podía resolver los problemas de una manera semejante al razonamiento de los expertos. Cuando un no experto utiliza estos sistemas de apoyo para tomar decisiones, muchas veces no comprende porque el sistema llega a ciertas conclusiones. Para mantener la decisión final en manos del médico, los nuevos sistemas de conocimiento se comportan como si fueran sistemas críticos, que suministran información adicional para justificar su consejo y se comportan mucho más como sistemas explicatorios. En estas situaciones el usuario del sistema propone un “plan de acción”, y el sistema ofrece una crítica de la conducta planeada. Pero no siempre esta dando guías y consejos, que terminan por abrumar y molestar al usuario. En realidad, como dijimos, el usuario toma las decisiones y solamente en las dos circunstancias siguientes, se presenta una aviso del sistema: 1. Cuando en situaciones poco comunes el usuario necesita un consejo o quiere conocer si su decisión es razonable. 2. Cuando el usuario toma una decisión que se encuentra fuera del rango que se considera permisible para los expertos que desarrollaron el sistema. En esa situación el sistema da una “alerta”, pero el sistema no se sobrepone al médico en su decisión ni prescribe la acción que debería realizar el usuario. Aunque estos sistemas basados en el conocimiento (sistemas expertos) se han desarrollado bastante, no son los únicos. Solo a fines de ejemplo informativo, mencionaremos las redes semánticas, que utilizan grupos de conceptos que se relacionan de una manera jerárquica. Por lo tanto, debemos mantener los ojos abiertos, para reconocer los rápidos desarrollos en los métodos que estructuran la base del conocimiento, de una forma que la hacen cada vez más utilizable.