Está en la página 1de 4

Hoja 1

Dado un grafo G = (V, E), un subconjunto de vértices V' 0 ⊆ V y una cobertura por vértices para G
si y solamente si para todo arista e  ∈ E, hay un vértice v  ∈ V' que 'y el extremo de e. Sea w: V
-> Z una función que asocia cada uno vértice de G a un número entero positivo. El costo de una
cobertura V' y definido como w (V') = Pv2V 0 w(v). El problema de la cobertura de coste mínimo
consiste en encontrar la cobertura de menor costo en G.

Dado un árbol T, con raíz r, defina Tv como un sub-arbol de T que incluye el no v y todos sus
descendientes. Ser OP T (v, 1) el costo de la cobertura de los costos mínimo para arbol TV, de
todas las coberturas de TV con el vértice v. De forma análoga, defina OP T (v, 0) como la
cobertura de menor costo para árbol Tv, entre todas las cubiertas para Tv que no utilizan el
vértice v.

(a) (0.5pt) Sea OP T (v) el costo de la cobertura de costo mínimo para Tv. ¿Cómo
podemos obtener OP T (v) a partir de OP T (v,1) y OP T (v ,0)?

(b) (0.5pt) Si Tv es un arbol con sólo un no, cuánto vale OP T (v, 0) y OP T (v, 1)?

c) (1.0pt) Dado un no v, sean v1;….. ; vk los hijos de v. Encuentre una ecuación de recurrencia
que relaciona OP T (v,1) OP T (v1; 0); OPT (v1; 1); ::::; OP T (vk; 0); OP T (vk; 1). También
encuentra una ecuación de recurrencia que relaciona OP T (v ,0) con OP T (v1; 0); OPT (v1; 1);
………; OP T (vk; 0); OP T (vk; 1). Tenga en cuenta que no todos los OPT's citados deben
aparecer en la ecuación.

d) (1.0pt) Muestra el pseudo-c'odigo de un procedimiento recursivo y eficiente que recibe


como entrada un n'o v 2 T y devuelve OP T (v). Analice su complejidad.

Sean X e Y secuencias de n e m letras, respectivamente. Sea X [p] la p-esima letra de X y Y [q] a


q-'esima letra de Y. Una subsecuencia común de X y Y, con tamaño K, en una secuencia de k
pares enteros (i1; j1) < (i2; j2)< … <(ik; jk) tal que X[ia] = Y [ja] para a = 1, …….k. El problema de
la consecución común máxima consiste en encontrar la mayor subsecuencia común entre X e
Y,

a) (1.5) Sea OP T (i; j) el tamaño de la mayor subsecuencia común entre Xi y Yj, donde Xi
'y la secuencia contenida las i primeras letras de X y Yj 'y la secuencia conteniendo las j
primeras letras de Y. Encuentre una ecuación de recurrencia relacionando con
OP T(i - 1; j - 1), OP T(i; j - 1) e OP T(i - 1; j)
b) (1.5pt) Asuma que los valores de OP T (i, j) ya se han calculado y almacenado en una
matriz M de n líneas por m columnas. Muestra el pseudo-c'odigo de un procedimiento
que recibe M y devuelve la mayor sucesión común entre X e Y.

Responde las preguntas abajo

a) (0.5pt) Sea e = (u; v) una arista arbitraria de un grafo G = (V; E) y sea k un número
entero. Demuestre que existe una cobertura de vértices para G con k v'ertices si y
solamente si al menos uno de los grafos G – {u}g o G – {v} tiene una cobertura de
tamaño k - 1.
b) (0.5pt) Demuestre que un grafo con n vértices y más que k: (n - 1) aristas no tiene
una cobertura de tamaño k
c) (2pt) Utilice los resultados de los dos elementos anteriores para diseñar un
procedimiento ExisteCobertura que recibe como entrada un grafo G y un entero x
y devuelve 'SI' si G tiene una cobertura con x vértices y 'NO', caso contrario.
Analice el ~algoritmo de la mejor forma posible

(2.0pt) Sea A = {a1; ::::;an} un conjunto de números reales distintos y sea bi, para i = 1; ….; n, el
i-'esimo menor elemento de A. Los datos enteros K y L, con 1 ≤ K <L ≤ n, describen cómo sería
un algoritmo eficiente para calcular PL j=K bj y analice su complejidad. Cuanto menor es la
complejidad computacional del algoritmo mayor la puntualización.
Hoja 2

1. (3.0pt) Sea un grafo no direccionado G = (V; E). Una cobertura para G' y un conjunto de
vértices C ⊆ V tal que toda arista de E tiene por lo menos una de sus extremos en C. Una
cobertura C' se dice bien si no existe otra cobertura C' tal que │ C' │< │C│. Considere el
siguiente algoritmo guloso que se muestra en la figura siguiente.

C←O;
Mientras G tiene alguna arista
v← vértice de G con mayor grado
C← C U v
Quite v de G^1
Fin Mientras
Devuelva C

Figura 1: Cobertura

a) Muestra un ejemplo que muestra que este algoritmo no siempre devuelve la cobertura
óptima.

b) Asuma que el grafo es dado por una lista de adyacentes. Explique cómo implementar el
algoritmo anterior y analice en función de │V │ y │E │ la complejidad de la implementación.
Cuanto más eficiente mejor.

2. (2.0pt) Sea G = (V; E) un grafo conexo y no direccionado. Un puente en G' y una arista e € E
tal que si se quita e de G el grafo queda desconectado.

a) Sea e = uv una arista que no sea un puente. Podemos afirmar que existe un ciclo en G que
contienen los vértices u y v. ¿Por qué?

b) Asuma que G está representado por una lista de adyacentes. Dada una arista y = uv,
determine cómo modificar el código de DFS para determinar si es un puente gráfico. ¿Cuál es
la complejidad del algoritmo?

3. (2.0pt) Considere un tablero de ajedrez (4x4) con las casillas numeradas de 1 a 16.

Sea G = (V; E) un grafo, donde V = {1,…., 16} y

E = {ij │ las casillas i y j a adyacentes (separadas por una recta) en el tablero}.

Al mismo tiempo, asuma que el coste de la arista entre i y j es i × j.

a) Dibuja G y comprime un árbol generador mínimo para G

b) Explique el algoritmo utilizado y discuta su complejidad.

4. (3.0). Considere un tablero de ajedrez (4x4) con las casillas numeradas de 1 a 16.

Sea G = (V, E´) un grafo direccionado, donde V = {1,…., 16} y

E´ = { (i, j) las casillas i y j tiene al menos un punto de contacto en el tablero e i < j }


Al mismo tiempo, asuma que el coste de la arista (i , j) es i + j.

a) Ejecute el algoritmo de Dijkstra para calcular el valor de las rutas de coste mínimos entre el
vértice 1 y los demás vértices del grafo G.

b) ¿Cuál es la altura del árbol generado por una BFS en G o teniendo como origen el n ° 1?

c) ¿Cuántos componentes fuertemente conectados tiene el grafo G?

1. Para todo u € V
5. Si u no se ha visitado
9. DFS-VISIT (u)
DFS-VISIT (u)
15. Marque u como visitado
18. Para todo vértice v € Adj(u)
21. Si no se ha visitado
24. DFS-VISIT (v)

Figura 2: DFS

BFS

Procedimiento BFS(G,s)
1. Marque s como visitado
5. ENCOLAR (Q,s)
9. Mientras Q ≠ 0
10. u← DECOLAR(Q)
11. Para cada v € Adj[u]
12. si v no es visitado entonces
14. Marque v como visitado
16. ENCOLAR(Q,v)
20. Fin Para
30. Fin Mientras

Figura 3: Pseudocodigo de una BFS

También podría gustarte