Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SOLUCIÓN:
RECORRIDO EN PROFUNDIDAD
GRAFO 1
Tomamos el nodo A, luego marcamos el nodo adyacente y repetimos el procedimiento
mientras que existan nodos adyacentes en el camino. Lo que obtendremos al final es el
recorrido y el árbol generado a partir de este.
GRAFO 2
Se sigue el mismo procedimiento que se tomó en el grado anterior.
RECORRIDO EN AMPLITUD
GRAFO 1
Este recorrido es equivalente al recorrido por niveles, la diferencia con el recorrido anterior es
que en este caso se utiliza una Cola. Se empieza por el nodo A, se encolan todos sus nodos
adyacentes, si ya no existen nodos adyacentes, entonces se desencola y se repite el proceso con
el primero de cola. Este proceso se repetirá mientras existan nodos en el grafo que no han sido
recorridos. Lo que obtendremos al final es el árbol generado y el recorrido.
GRAFO 2
Se sigue el mismo procedimiento que en el GRAFO 1.
Figura A
Figura B
c) Son grafos isomorfos? Justifique su respuesta
Figura A
Figura B
Solución
Recordemos que:
Es decir, que para todo nodo en un grafo debe haber una correspondencia en el otro grafo.
Además, estos deben cumplir ciertos corolarios:
1.- Ambos grafos deben tener la misma cantidad de nodos.
2.- Ambos grafos deben tener la misma SUMA DE GRADOS DE TODOS LOS
VÉRTICES)
FIGURA A: SÍ SON ISOMORFOS
Justificación:
Ambos grafos tienen la misma cantidad de vértices, así que se cumple la primera condición:
No. Vértices (G) = 4
No. Vértices (H) = 4
Además, ambos grafos poseen la misma suma de los grados:
G(G) = 8
G(H) = 8
Ahora establecemos la correspondencia: F(G) = H
F(u1) = v1
F(u2) = v2
F(u3) = v3
F(u4) = v4
Por lo tanto, concluimos que los grafos de la FIGURA A SON ISOMORFOS.
FIGURA B: NO SON ISOMORFOS
Figura B
Justificación:
Ambos grafos tienen la misma cantidad de vértices, así que se cumple la primera condición:
No. Vértices (G) = 5
No. Vértices (H) = 5
Además, ambos grafos no poseen la misma suma de todos los vértices:
G(G) = 13
G(H) = 14
Como podemos observar, el grado de los grafos es distinto, así que no se cumple el segundo
corolario.
Por lo tanto, concluimos que los grafos de la FIGURA B NO SON ISOMORFOS.
2. (Pseudcódigo)
Solución
Diagrama de entrada y Salida:
Explicación:
Recordemos que:
Entonces el algoritmo consiste en hallar la máxima suma de aristas de todos los vértices, el
cual será el grado del Grafo.
Dibujo:
Para entender el pseudocódigo, primero lo explicaré gráficamente el funcionamiento del
algoritmo.
Se tiene el siguiente grado dirigido.
Sumando las aristas entrantes y las salientes obtenemos el grado total de cada vértice.
grado_salida0
//En el primer bucle para evaluar las aristas entrantes al nodo y se sumarán al número de
aristas salientes.
Grado_entrada0
Para i = 0 hasta N-1
Para j= 0 hasta N-1
Grado_entrada Grado_entrada +matriz[j][i]
Fin Para
Vector[i]Vector[i]+ Grado_entrada
Grado_entrada 0//Se reinicia el contador para el siguiente nodo
Fin Para
Max_grado=0
//En este último bucle se hallará el nodo que tiene el máximo grado
Para i=0 hasta N-1
Si(max<Vector[i])
Max_grado Vector[i]//Se guardará el máximo grado.
Fin Si
Fin Para
Retornar Max_grado
Fin Funcion
3. (Pseudocódigo)
Un ABM es un árbol binario que en su raíz guarda el menor valor (y los árboles izquierdo
y derecho tienen la misma propiedad). Por ejemplo como se muestra la figura.
Se le pide hacer un método que entregue true si el árbol binario de raíz x corresponde a
un ABM (o false si no).
Hágalo en
a) forma recursiva
b) forma tradicional.
Solución
Diagrama de entrada y salida
a) Forma Recursiva
Para entender el método recursivo, explicaré este algoritmo gráficamente
con el siguiente grafo.
PSEUDOCÓDIGO
//El registro nodo representará al árbol que vamos a evaluar en algoritmo.
Registro Arbol
Entero info // valor
Árbol Hd // Hijo derecho
Árbol Hi // Hijo izquierdo
Fin_registro
Árbol raíz
4. (Desarrollo)
Dado el siguiente grafo, encontrar:
a) Matríz de adyacencia
b) Matríz de incidencia
c) Es conexo? Justifique su respuesta
d) Es simple? Justifique su respuesta
e) Es regular? Justifique su respuesta
f) Es completo? Justifique su respuesta
g) Es fuertemente conexo? Justifique su respuesta
h) Es unilateralmente conexo? Justifique su respuesta
i) Una cadena simple no elemental de grado 6
j) Un ciclo no simple de grado 5
k) Grafo recubridor. Muestre 3 de ellos
Solución:
a) Matriz de adyacencia
Recordemos que:
Nodo a a a a a1 a1 a1 a1 a1 a1
a2 a3 a5 a6 a8 a10 a13 a16 a19 a20
s 1 4 7 9 1 2 4 5 7 8
V1 1 1 1 1 1 1
V2 1 1 1 1 1
V3 1 1 1 1 1 1
V4 1 1 1
V5 1 1 1 1 1
V6 1 1 1 1
V7 1 1 1 1 1 1
V8 1 1 1 1 1
c) ¿Es conexo?
SÍ ES CONEXO
Recordemos que:
Para verificar si un grafo es Conexo podemos realizar tanto el algoritmo DFS o el BFS. En
esta ocasión realizaremos el recorrido DFS (Primera Búsqueda en Profundidad).
Tenemos el grafo:
Aplicando el algoritmo DFS (Recorrido en profundidad)
Empezamos el RECORRIDO EN PROFUNDIDAD.
Obtenemos:
Cómo podemos observar el grafo posee camino alcanzable desde cualquier vértice hacia
cualquier vértice, por lo tanto, se cumple lo necesario para decir que el grafo sí es Conexo.
Nodo a a a a a1 a1 a1 a1 a1 a1
a2 a3 a5 a6 a8 a10 a13 a16 a19 a20
s 1 4 7 9 1 2 4 5 7 8
V1 1 1 1 1 1 1
V2 1 1 1 1 1
V3 1 1 1 1 1 1
V4 1 1 1
V5 1 1 1 1 1
V6 1 1 1 1
V7 1 1 1 1 1 1
V8 1 1 1 1 1
Suma 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
En cambio, si revisamos la matriz de adyacencia, podremos observar que no todos los vértices
comparten el mismo grado, cantidad de nodos adyacentes.
Vértices V1 V2 V3 V4 V5 V6 V7 V8 Grado
V1 0 1 1 1 0 0 1 1 5
V2 1 0 1 0 1 1 0 1 5
V3 1 1 0 1 1 1 1 0 6
V4 1 0 1 0 1 0 1 0 4
V5 0 1 1 1 0 1 1 1 6
V6 0 1 1 0 1 0 0 1 4
V7 1 0 1 1 1 0 0 1 5
V8 1 1 0 0 1 1 1 0 5
Por lo tanto, el grafo NO ES REGULAR.
Sin embargo, si observamos la matriz de adyacencia podremos notar que existen vértices que
no están unidos por aristas directamente. Como, por ejemplo, los vértices 1 y 5, 1 y 6, 2 y 7.
Por lo tanto, el grafo NO ES COMPLETO.
g) ¿Es fuertemente conexo? Justifique su respuesta
NO APLICA PARA ESTE GRAFO.
Recordemos que:
3er GRAFO
5. (Desarrollo en Java)
Construya una aplicación para hallar la matriz de adyacencia y la matriz de caminos en un
grafo.
SOLUCIÓN
Explicación del código:
Al programa se le ingresa el grafo, especificando sus aristas. En la función principal se está
representando el siguiente grafo.
/**
}
System.out.println();
}
}
matriz.agregar(1, 0);
matriz.agregar(1, 4);
matriz.agregar(2, 0);
matriz.agregar(2, 3);
matriz.agregar(2, 4);
matriz.agregar(3, 2);