Professional Documents
Culture Documents
P1 Sea R una relacin sobre {1, . . . , n}, n 1. Para x, y {1, . . . n}, definimos un camino de x
a y como una secuencia de pares (a0 , a1 ), (a1 , a2 ), . . . , (am1 , am ) que cumple a0 = x, am = y y adems
cada par en la secuencia es miembro de R. El largo de tal camino es m. Considere adems la matriz
M {0, 1}nn asociada a R, donde Mi,j = 1 ssi (i, j) R.
Para x, y A, definimos un camino de x a y como una secuencia de pares (a0 , a1 ), (a1 , a2 ), . . . , (am1 , am )
que cumple a0 = x, am = y y adems cada par en la secuencia es miembro de R. El largo de tal camino es
m. Demuestre que (M ` )ij equivale a la cantidad de caminos de largo ` entre ai y aj , elementos de A.
A partir de lo anterior, considere la 7-aritmtica, un interesante subconjunto de la aritmtica que puede
definirse formalmente a travs de la relacin R = {(a, b) N2 | a+7 = b a7 = b 7a = b b a7 c = b}.
Utilice lo demostrado anteriormente para responder las siguientes preguntas:
1. Programe una funcin
aritmetica7(N)
que genera la matriz de la relacin definida para los nmeros enteros de 1 a N.
2. Programe una funcin
caminoMinimo(M,a,b)
que calcula la mnima cantidad de operaciones de la 7-aritmtica para llegar de a a b, considerando
la matriz de relacin M.
3. Programe una funcin
alcanzables(M,a,l)
que retorna un vector con todos los nmeros que son alcanzables en a lo ms l operaciones de la
7-aritmtica a partir desde a.
m
^
(`i `0i )
i=1
Usted debe programar dos funciones, hornsat(phi), twosat(phi), que reciban un string que codifica
una frmula, y retorne 1 o 0 segn sta sea satisfacible o no. Su algoritmo debe ser eficiente, aprovechando
la estructura de las frmulas para dar con una solucin, y no recurriendo a construccin de las tablas de
verdad. Las frmulas sern codificadas por matrices. Una frmula (x1 , . . . , xn ) de m clausulas se codifica
con una matriz A {1, 0, 1}nm , donde para i {1, . . . n}, c {1, . . . , m} se tiene
si xi aparece en clausula c
1
0 si ni xi ni xi aparece en clausula c
Ai,c =
1
si xi aparece en clausula c
Una estrategia similar se sigui hace algunos aos para demostrar que el mximo nmero de movimientos para resolver
un cubo de Rubik desde cualquier estado vlido es 20.
Figura 1: Triomin
Un triomin puede colocarse en el tablero usando tres de sus casillas. Para i, j {1, . . . , 2n }, una
(i, j)-solucin de T (n) es una forma de llenar el tablero con triomins de manera que (1) los triomins
cubran la totalidad del tablero salvo la casilla (i, j), y (2) no hayan triomins superpuestos.
1. Demuestre que para todo n 1, y para todo i, j {1, . . . , 2n }, es posible encontrar una (i, j)-solucin
de T (n).
2. Programe una funcin tablero(n, i, j) que reciba como entradas nmeros enteros n 1, i, j
{1, . . . , 2n } y retorne una (i, j)-solucin de T (n). Puede codificar la salida como una matriz de nmeros enteros. Esta matriz contiene un 0 en la posicin (i, j) y adems cada triomin est identificado
con un nmero distinto. Por ejemplo, una posible salida para tablero(2, 1, 2) es la siguiente:
1
1
2
2
0
1
4
2
3
4
4
5
3
3
5
5