You are on page 1of 3

Tarea 1

CC3101-01 Matemticas Discretas para la Computacin.


Profesor: Pablo Barcel.
Auxiliares: Pablo Muoz y Bernardo Subercaseaux
Ayudantes: Juan Jos Alegra, Hans Fehrman, Ian Letter, Juan Rojas
Indicaciones generales: Usted debe entregar un informe en formato pdf en donde detalle
las soluciones a los siguientes problemas. Las preguntas donde se le pida programar un cdigo
deben ser resueltas en lenguaje M atlab u otro lenguaje especificado en el foro del curso. Cualquier propiedad usada, tanto para argumentar preguntas tericas o el funcionamiento de su
cdigo, debe ser formalmente demostrada. El informe debe contener el desarrollo terico de
las preguntas junto con ejemplos de uso de las funciones solicitadas (capturas de pantalla).
El cdigo fuente debe ester bien escrito y debidamente comentado. El incumplimiento de
cualquiera de estas reglas implicar que la parte correspondiente no sea corregida

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.

4. Programe una funcin


maximal_l_set(M,l)
que calcula el mayor subconjunto de elementos del dominio de la relacin que representa M tal que
puede llegarse de cualquier elemento del conjunto a cualquier otro en a lo ms l operaciones de la
7-aritmtica.
5. Encuentre el menor valor de l tal que el conjunto que define la funcin anterior para la relacin
definida entre los enteros del 1 al 100 tiene cardinal 100, es decir, que se puede llegar de cualquier
nmero del 1 al 100 a cualquier otro en a lo ms l operaciones. Repita lo mismo para 1000 en lugar
de 100. 1

P2 El problema SAT de satisfacibilidad de frmulas Booleanas, consiste en dada una frmula


(x1 , ..., xn ) que depende de variables preposicionales xi {0, 1} i = 1, ..., n, decidir si existe una asignacin de variables que la verifica.
Se conjetura que SAT es un problema difcil, en el sentido que no existen algoritmos eficientes para
decidir satisfacibilidad para cualquier frmula. Sin embargo, existen restricciones en la estructura de las
frmulas para las que el problema admite soluciones eficientes. Por ejemplo, HORNSAT y 2SAT.
HORNSAT es el problema de satisfacibilidad para frmulas de Horn. Las frmulas de Horn tienen la
forma siguiente :
ni
m _
^
=
`i,j
i=1 j=1

donde, para todo i = 1, ..., m, a lo ms un literal en {`i,1 , ..., `i,ni } es positivo.


2SAT es el problema de satisfacibilidad para frmulas en formato conjuntivo normal en las que cada
clausula contiene exactamente dos literales, esto es :
=

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

P3 Dado un nmero entero n 1, considere un tablero T (n) de 2n 2n casillas. Un triomin es una


pieza con forma de L como muestra la figura a continuacin.
1

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

You might also like