You are on page 1of 7

Diego Francisco Sanabria 201217484

Estados: 0..3 X 0..3

𝑉 = {(𝑚𝑖, 𝑐𝑖, 𝑏, 𝑚𝑑, 𝑐𝑑)|


𝑚𝑖: 𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑚𝑖𝑠𝑖𝑜𝑛𝑒𝑟𝑜𝑠 𝑑𝑒𝑙 𝑙𝑎𝑑𝑜 𝑖𝑧𝑞𝑢𝑖𝑒𝑟𝑑𝑜

𝑐𝑖: 𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑐𝑎𝑛í𝑏𝑎𝑙𝑒𝑠 𝑑𝑒𝑙 𝑙𝑎𝑑𝑜 𝑖𝑧𝑞𝑢𝑖𝑒𝑟𝑑𝑜


𝑏: 𝑏𝑜𝑡𝑒 (= 0 𝑠𝑖 𝑒𝑠𝑡á 𝑎 𝑙𝑎 𝑑𝑒𝑟𝑒𝑐ℎ𝑎, = 1 𝑠𝑖 𝑒𝑠𝑡á 𝑎 𝑙𝑎 𝑖𝑧𝑞𝑢𝑖𝑒𝑟𝑑𝑎)
𝑚𝑑: 𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑚𝑖𝑠𝑖𝑜𝑛𝑒𝑟𝑜𝑠 𝑑𝑒𝑙 𝑙𝑎𝑑𝑜 𝑑𝑒𝑟𝑒𝑐ℎ𝑜
𝑐𝑑: 𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑐𝑎𝑛í𝑏𝑎𝑙𝑒𝑠 𝑑𝑒𝑙 𝑙𝑎𝑑𝑜 𝑑𝑒𝑟𝑒𝑐ℎ𝑜
Estado inicial: (3,3,0,0,0)

Arcos:
(𝑚𝑖, 𝑐𝑖, 𝑏, 𝑚𝑑, 𝑐𝑑) → (𝑚𝑖 − 2, 𝑐𝑖, 1 − 𝑏, 𝑚𝑑 + 2, 𝑐𝑑) , 𝑠𝑖 𝑚𝑖 − 2 ≥ 𝑐𝑖, 𝑚𝑑 + 2 ≥ 𝑐𝑑
(𝑚𝑖, 𝑐𝑖, 𝑏, 𝑚𝑑, 𝑐𝑑) → (𝑚𝑖 − 1, 𝑐𝑖, 1 − 𝑏, 𝑚𝑑 + 1, 𝑐𝑑) , 𝑠𝑖 𝑚𝑖 − 1 ≥ 𝑐𝑖, 𝑚𝑑 + 1 ≥ 𝑐𝑑
(𝑚𝑖, 𝑐𝑖, 𝑏, 𝑚𝑑, 𝑐𝑑) → (𝑚𝑖 − 1, 𝑐𝑖 − 1, 1 − 𝑏, 𝑚𝑑 + 1, 𝑐𝑑 + 1) , 𝑠𝑖 𝑚𝑖 − 1 ≥ 𝑐𝑖 − 1, 𝑚𝑑 + 1 ≥ 𝑐𝑑 + 1

(𝑚𝑖, 𝑐𝑖, 𝑏, 𝑚𝑑, 𝑐𝑑) → (𝑚𝑖, 𝑐𝑖 − 2, 1 − 𝑏, 𝑚𝑑, 𝑐𝑑 + 2) , 𝑠𝑖 𝑚𝑖 ≥ 𝑐𝑖 − 2, 𝑚𝑑 ≥ 𝑐𝑑 + 2


Problema: Buscar una ruta (3,3,0,0,0) →∗ (0,0,1,3,3)
3ª) El costo de un camino es el producto en el semianillo de los costos de los arcos. En este caso el
costo es la mínima capacidad entre las de los arcos que forman el camino, esto puesto que una
carga mayor no puede transportarse por ese camino. Es decir, la multiplicación sería la función
min.

Entre todos los costos de los caminos se debe escoger el mayor. Así pues, la suma estaría dada por
la función max.

Los elementos del semianillo son reales positivos, debe permitirse el valor
∞ 𝑝𝑎𝑟𝑎 𝑝𝑜𝑑𝑒𝑟 𝑡𝑒𝑛𝑒𝑟 𝑛𝑒𝑢𝑡𝑟𝑜 𝑝𝑎𝑟𝑎 𝑚𝑖𝑛, 𝑙𝑜𝑠 𝑣𝑎𝑙𝑜𝑟𝑒𝑠 𝑠𝑒 𝑝𝑢𝑒𝑑𝑒𝑛 𝑡𝑜𝑚𝑎𝑟, 𝑝𝑜𝑟 𝑒𝑛𝑑𝑒, 𝑒𝑛 𝑅 +
Así, el semianillo debe ser (𝑅 + , 𝑚𝑎𝑥, 𝑚𝑖𝑛, 0, ∞)

3b) La capacidad máxima de una conexión se puede calcular usando una versión del algoritmo de
Dijskstra, puesto que el semianillo cumple la propiedad de que

𝑎 ⊕ 𝑏 ∈ {𝑎, 𝑏}, 𝑝𝑎𝑟𝑎 𝑎, 𝑏 ∈ 𝑆


En un tal semianillo se puede usar una implementación del Algoritmo de Dijkstra
(𝑅 + , 𝑚𝑎𝑥, 𝑚𝑖𝑛, 0, ∞)𝑒𝑠 𝑢𝑛 𝑠𝑒𝑚𝑖𝑎𝑛𝑖𝑙𝑙𝑜 𝑑𝑒 𝐷𝑖𝑗𝑘𝑠𝑡𝑟𝑎 𝑝𝑜𝑟𝑞𝑢𝑒

𝑎 max 𝑏 ∈ {𝑎, 𝑏}
De modo que si se puede usar una versión del Algoritmo de Dijkstra para resolver el problema

Se propone un algoritmo de Dijkstra en


(𝑅 + , 𝑚𝑎𝑥, 𝑚𝑖𝑛, 0, ∞)

Con parada forzada si se alcana el nodo objetivo

Considerando el grafo dirigido 𝐺(𝑉, 𝐸, 𝑐), 𝑑𝑜𝑛𝑑𝑒

V: conjunto de nodos

E: conexiones directas entre nodos


C: capacidad de conexión entre i y j si (i,j) ∈k

El grafo G se representa con una matriz de distancias 𝐷 ∈ 𝑀𝑛 (𝑅+ )𝑡. 𝑞:

D(i,j) = c(i,j), si (i,j) ∈ 𝐸

= [] , En otro caso.

Algoritmo:

1. Determinar D’ (Variante 1: Floyd Warshall, variante 2 Dijkstra n veces)


2. Encontrar x tal que (c ) Maximizar sobre las sumas de filas de 𝐷 +

3c) 𝑇(𝑛) = 𝜃(𝑛𝑙𝑜𝑔𝑛 + 𝑒)

𝑆(𝑛) = 𝜃(𝑛)
[GAZAPO]: Los literales del enunciado tienen como prefijo el número 3. Por consistencia se usará
el número 4 en la respuesta.

4ª.
[𝑃1]𝑝 (𝑛, 0) ≡ 𝑛 = 0

La sumatoria a la derecha resulta una suma vacía cuando k = 0


[𝑃2] 𝑝(𝑛, 𝑘) ≡ 𝑝(𝑛. 𝑘, 𝑘 − 1) ∨ 𝑝(𝑛 + 𝑘, 𝑘 − 1) ,𝑘 > 0
𝑝(𝑛, 𝑘)
=

𝑛 = ±1 ± 2 ± ⋯ ± 𝑘
=

(𝑛 = ±1 ± 2 ± ⋯ ± 𝑘 − 1 + 𝑘) ∨ (𝑛 = ±1 ± 2 ± ⋯ ± 𝑘 − 1 − 𝑘)

(𝑛 − 𝑘 = ±1 ± 2 ± ⋯ ± 𝑘 − 1) ∨ (𝑛 + 𝑘 = ±1 ± 2 ± ⋯ ± 𝑘 − 1)

= 𝑝(𝑛 − 𝑘, 𝑘 − 1) ∨ 𝑝(𝑛 + 𝑘, 𝑘 − 1)

𝑝(𝑚. 𝑘) ≡ 𝑝(−𝑛, 𝑘)
𝑝(𝑛, 𝑘)
=

𝑛 = ±1 ± 2 ± ⋯ ± 𝑘
=

−𝑛 = − ± 1 − ±2 − ± ⋯ − ±𝑘
= 𝑝(−𝑛, 𝑘)

4b)

Según la definición de los arcos

(𝑥, 𝑦) → (|𝑥 − 𝑦|, 𝑦 − 1), 𝑠𝑖 𝑦 ≥ 1


(𝑥, 𝑦) → (𝑥 + 𝑦, 𝑦 − 1), 𝑠𝑖 𝑦 ≥ 1

Caso 1: (𝑥, 𝑦) → (|𝑥 − 𝑦|, 𝑦 − 1)

Hip: p(u,v)

𝑃𝑎𝑟𝑎 𝑥 ≥ 𝑦

p(u,v)

P(x-y,y-1)

⇒por debilitamiento

𝑝(𝑥 − 𝑦, 𝑦 − 1) ∨ 𝑝(𝑥 + 𝑦, 𝑦 − 1)
= 𝑃2
= 𝑝(𝑥, 𝑦)
𝑃𝑎𝑟𝑎 𝑥 < 𝑦

p(u,v)

P(-x+y,y-1)

= p(x-y, y-1) por P3

⇒por debilitamiento

𝑝(𝑥 − 𝑦, 𝑦 − 1) ∨ 𝑝(𝑥 + 𝑦, 𝑦 − 1)
= 𝑃2
= 𝑝(𝑥, 𝑦)

Caso 2 (𝑥, 𝑦) → (𝑥 + 𝑦, 𝑦 − 1)

Hip: p(u,v)

p(u,v)

P(x+y,y-1)

⇒por debilitamiento

𝑝(𝑥 − 𝑦, 𝑦 − 1) ∨ 𝑝(𝑥 + 𝑦, 𝑦 − 1)
= 𝑃2
= 𝑝(𝑥, 𝑦)

4c) Los arcos del grafo se construyen de manera que 𝑠𝑖(𝑥, 𝑦) → (𝑢, 𝑣)𝑦 𝑝(𝑢, 𝑣)𝑒𝑛𝑡𝑜𝑛𝑐𝑒𝑠 𝑝(𝑥, 𝑦).

Entonces es fácil ver que:

(𝑢, 𝑣) ∈ 𝑆𝑈𝐶 ∗ (𝑥, 𝑦) ∧ 𝑝(𝑢, 𝑣) ⇒ 𝑝(𝑥, 𝑦)

Es notorio que p(0,0) vale. Encontrar (0,0) desde (n,k) significa que (0,0) ∈ 𝑆𝑈𝐶 ∗ (𝑁, 𝐾) así pues
p(n,k) debe valer también.

Si p(n,k) vale, debe existir un camino desde (n,k) a (x,0) usando repetidamente [P2] hasta asignar
los signos de los k sumandos, por [P1] se debe tener que x=0 así que se encuentra (0,0).

4d) No, no es posible generar ciclos pues la segunda componente siembre disminuye en una
unidad
𝑦(𝑦+1)
4e) El máximo valor representable con sumas de elementos en 1..y es 2
si x supera este
valor, no se puede construir, es decir ¬𝑝(𝑥, 𝑦). Así pues se puede definir:

𝑦+1
𝑑(𝑥, 𝑦) ≡ 𝑥 ≤ 𝑦( )
2
Si suponemos ¬𝑑(𝑥, 𝑦). Si para (𝑢, 𝑣) ∈ 𝑆𝑈𝐶 ∗ (𝑥, 𝑦)𝑠𝑒 𝑡𝑢𝑣𝑖𝑒𝑟𝑎 𝑝(𝑢, 𝑣) debería tenerse también
que (0,0) ∈ 𝑆𝑈𝐶 ∗ (𝑢, 𝑣) 𝑒𝑠𝑡𝑜 𝑖𝑚𝑝𝑙𝑖𝑐𝑎 𝑞𝑢𝑒 (0,0) ∈ 𝑆𝑈𝐶 ∗ (𝑥, 𝑦) , esto implicaría que p(x,y) vale, lo
cual es imposible si ¬d(x,y). así pues es posible desechar a los sucesores de (x,y) porque entre
estos no se encuentra (0,0)

4f) Se construye un árbol binario completo, cuya raíz se encuentra en (n,k), las hojas tienen forma
(u,0), es decir tiene k+1 niveles, por ende la complejidad es 𝑂(2𝐾 )-

You might also like