Edición de «Práctica 6: Árboles (Algoritmos III)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 18: Línea 18:
<br>b) Si un grafo es conexo, la min. cantidad de ejes (sin ciclos) es n-1. Sea G' un arbol. Sean 2 vertices v,w en G'. Como G' es conexo -> Ex. Unico camino C de v a w, con lo cual C+(v,w) es un ciclo, y ya que antes no habia es el unico posible. -> G' tiene n ejes y un solo ciclo.
<br>b) Si un grafo es conexo, la min. cantidad de ejes (sin ciclos) es n-1. Sea G' un arbol. Sean 2 vertices v,w en G'. Como G' es conexo -> Ex. Unico camino C de v a w, con lo cual C+(v,w) es un ciclo, y ya que antes no habia es el unico posible. -> G' tiene n ejes y un solo ciclo.


<br>c) Verdadero:
Esta demostración no es correcta (la dejo porque es lo primero que uno esta tentado a hacer). La falla esta en que estamos asumiendo que la unica manera de armar un grafo conexo de n ejes agregando un eje a un grafo inicial de n-1 ejes es suponiendo que este grafo inicial es un arbol (grafo conexo de n-1 ejes). El contraejemplo es el siguiente.
o-o-o-o.....o-o-o que tiene n ejes sin embargo no tiene circuitos.


[[Archivo:Algo3_P6_Ej6.2c_Grafo_m_n_2_circuitos.jpg]]
'''PREGUNTA: Oye tío! pues en ese contraejemplo tienes n ejes pero cuantos nodos tienes? n ó n+1?'''
 
<br>c) Verdadero (K4 sin una diagonal, o sea:)
<br>o-o
<br>|\|
<br>o-o
 
Hombre!, la pregunta es verdadera pero ahí veo 3 circuitos, si etiquetamos los nodos "a,b,c,d" en sentido horario, tenemos los ciclos: a-b-c-d-a; a-b-c-a; a-c-d-a. Yo propongo el siguiente ejemplo que va de coña:
<br>o-o
<br>| |
<br>o-o
<br>|\
<br>o-o


==Ejercicio 06.03:==
==Ejercicio 06.03:==
Línea 71: Línea 84:
<br>a)Sup que no fuera un arbol. Entonces existe un eje que no es puente, con lo cual hay mas ejes que conectan dos comp. conexas -> Se puede obtener otro arbol generador pasando por otro eje que las conecta -> No se tiene un unico arbol generador -> ABS
<br>a)Sup que no fuera un arbol. Entonces existe un eje que no es puente, con lo cual hay mas ejes que conectan dos comp. conexas -> Se puede obtener otro arbol generador pasando por otro eje que las conecta -> No se tiene un unico arbol generador -> ABS
<br>b)Creo que si se conocen todos los arboles generadores, uniendolos se pueden obtener todos los ejes que existian originalmente para cada vertice
<br>b)Creo que si se conocen todos los arboles generadores, uniendolos se pueden obtener todos los ejes que existian originalmente para cada vertice
<br>c) Encontré algo llamado "teorema de contracción-eliminación", que dice que T(G) = T(G-e) + T(G/e), con e cualquier arista del grafo, G/e es el grafo resultante de contraer la arista e (unir ambos extremos en un sólo nodo), y G-e el grafo resultante de eliminar la arista, como es usual.
<br>c)
También hay una manera sacando un cofactor de la matriz laplaciana (eliminando una fila y columna y haciendo el determinante de la matriz resultante)
https://math.stackexchange.com/questions/90950/finding-the-number-of-spanning-trees-of-a-graph-g
http://www.student.dtu.dk/~dawi/01227/01227-GraphTheory.pdf


==Ejercicio 06.12:==
==Ejercicio 06.12:==
Línea 91: Línea 101:
<br>b)
<br>b)
==Ejercicio 06.18:==
==Ejercicio 06.18:==
<br>a) Se pueden tomar ideas de este link:
<br>a)
http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/dijkstra/Prim.shtml
 
Tiene el algoritmo y una "live demo" en java donde se puede correr Prim sobre grafos y ver el seguimiento paso a paso.
Además tiene el .java para compilar y jugar.
 
<br>b)
<br>b)
<br>c)
<br>c)
==Ejercicio 06.19:==
==Ejercicio 06.19:==
<br>a)
<br>a)
Línea 117: Línea 121:
<br>-> T(Kruskal) = O(m log m + m*n) = O(m*n)
<br>-> T(Kruskal) = O(m log m + m*n) = O(m*n)


<br>c) Se pueden tomar ideas de este link:
<br>c)
http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/kruskal/Kruskal.shtml
 
Tiene el algoritmo con el .java para compilar.
Y además una "live demo" en java donde se puede correr Kruskal sobre grafos y ver el seguimiento paso a paso.
 
<br>d)
<br>d)


Línea 131: Línea 130:
==Ejercicio 06.22:==
==Ejercicio 06.22:==
<pre>
<pre>
Lema 1: T es árbol y e no en E -> T+e tienen un ciclo C que contiene a e
Lema 1: T es arbol y e no en E -> T+e tienen un ciclo C que contiene a e
Dem:
Dem:
e = (u,v). T es conexo -> Ex. camino C1 entre u y v. En T+e, C1+e forman un circuito que incluye a e.
e = (u,v). T es conexo -> Ex. camino C1 entre u y v. En T+e, C1+e forman un circuito que inclute a e.


Lema 2: T es árbol, T+e tiene un ciclo, T+e-e' con e y e' en C -> T+e-e' es árbol
Lema 2: T es arbol, T+e tiene un ciclo, T+e-e'con e y e' en C -> T+e-e' es arbol
Dem:
Dem:
* E(T+e-e') = n-1 + 1 - 1 = n-1
* E(T+e-e') = n-1 + 1 - 1 = n-1
* Sup e'=(w1,w2). T+e tiene un ciclo que incluye a e' -> Ex. 2 caminos en T+e entre w1 y w2 -> T+e-e' tiene un camino entre w1 y w2 -> no se desconecto nada -> T+e-e' es conexo
* Sup e'=(w1,w2). T+e tiene un ciclo que incluye a e' -> Ex. 2 caminos en T+e entre w1 y w2 -> T+e-e' tiene un camino entre w1 y w2 -> no se desconecto nada -> T+e-e' es conexo
-> T+e-e' es árbol
-> T+e-e' es arbol
</pre>
</pre>


<br> Sup. que G tiene 2 AGMs, S y T -> Habrá ejes en S y no en T, y viceversa
<br> Sup. que G tiene 2 AGMs, S y T -> Habra ejes en S y no en T, y viceversa
<br> Sea e el menor de los ejes que están en sólo uno de los dos árboles (e pertenece a S unión T menos S intersección T)
<br> Sea eS el menor eje que esta en S y no en T ->(Lema 1) T+eS tiene un ciclo C que contiene a eS
<br> Sin perdida de generalidad, supongo que e pertenece a S (podría haber sido T)
<br> En C Ex. eT en T que no esta en S (en S no habia ciclos). Por HI l(eS) != l(eT)
<br>->(Lema 1) T+e tiene un ciclo C que contiene a e
<br> Puede pasar que l(eS) > l(eT)? ABS (por ser el menor eje) -> l(eS) < l(eT)
<br> En C Ex. eT en T que no esta en S (en S no había ciclos). Por HI l(e) != l(eT)
<br> -> l(T+eS-eT) = l(T)+l(eS)-l(eT) < l(T) -> AG es mas chico que T (ABS)
<br> Puede pasar que l(e) > l(eT)? ABS (por ser el menor eje) -> l(e) < l(eT)
<br> (Lema 2) T+e-eT es árbol
<br> -> l(T+e-eT) = l(T)+l(e)-l(eT) < l(T) -> AG es mas chico que T (ABS)
<br> -> Ex. Unico AGM
<br> -> Ex. Unico AGM
Otra opción es correr o generar el árbol generador mínimo con kruskal, aprovechando que al ser todos los ejes distintos kruskal se vuelve determinístico y no puede dar dos arboles distintos.


==Ejercicio 06.23:==
==Ejercicio 06.23:==
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: