Actividad Didáctica 3 Representación de operaciones sobre relaciones con matrices Introducción Una de las formas más comunes de representar las relaciones, además de los pares ordenados, es la denominada matriz de relación, la cual compuesta por unos y ceros. Las filas corresponden a los elementos del primer conjuntos y las columnas a los elementos del segundo conjunto. El elemento en la fila y la columna es uno si x R y, y es cero en caso contrario. Una matriz booleana es una matriz de números cuyas componentes o entradas son exclusivamente ceros o unos. Las matrices booleanas son útiles porque pueden representar objetos abstractos como relaciones binarias o grafos. Por lo tanto la matriz de relación es una matriz booleana. Las operaciones básicas que se pueden realizar entre matrices booleanas son cuatro: unión, intersección, complemento y producto booleano. Sin embargo, estas operaciones no pueden realizarse sobre dos matrices cualesquiera, sino que deben cumplir ciertos criterios para poder llevarse a cabo. En particular, en el caso de la unión y la intersección, las matrices que intervienen en la operación deben tener el mismo tamaño, y en el caso del producto booleano, las matrices deben cumplir con las mismas condiciones que para formar el producto de matrices. Supóngase que las relaciones R y S son relaciones sobre el conjunto A = {1, 2, 3} donde R= {(1,1),(1,3),(2,1),(3,2)} S={(1,1),(1,3),(2,2),(2,3),(3,1)} son dos relaciones sobre A. Entonces sus matrices de relación correspondientes son: MR = y MS = Además las matrices booleana se pueden emplear para determinar muchas de las operaciones sobre las relaciones binarias. Actividad: con el software libre Maxima demostrar que las siguientes expresiones son equivalentes: Operación 1. MRS = MR MS. 2. MRS = MR MS. 3. MR’ = (MR)’ . 4. MRS = MR (MS)’ . 5. MRS = MR MS. 6. = (MR)t. Instrucción y resultado NOTA: Algunas de las operaciones booleanas definidas en Maxima tienen algún error o, simplemente, no aparecen. A continuación se proporcionan las instrucciones para definir todas las funciones necesarias para la realización de la actividad: log_y(a,b):= block(if(a=1 and b=1)then return(1) else return(0)); log_o(a,b):= block(if(a=1 or b=1)then return(1) else return(0)); log_no(a):= block(if(a=0)then return(1) else return(0)); matriz_log_y(A,B):=matrixmap(log_y, A, B); matriz_log_o(A,B):=matrixmap(log_o, A,B); matriz_log_no(A):=matrixmap(log_no,A);