








Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Estructuras de Datos No Lineales, Profesor: Mayte Gracía, Carrera: Ingeniería Informática, Universidad: UCA
Tipo: Apuntes
1 / 14
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!









Dado un grafo no dirigido y conexo G = (V, A), se define un
árbol generador
(o de expansión)
de G^ como un árbol que conecta todos los vértices de V; su coste es la suma de loscostes de las aristas del árbol. Un árbol es un grafo conexo acíclico.
Árbol generador de GCoste = 102
Árbol generador de GCoste = 78
#include
"apo.h" //^ Arista
de^ un
grafo
ponderado
template
<typename
tCoste>
struct
aristaP
{
vertice
orig,
dest; tCoste
coste; aristaP(vertice
v=vertice(),
vertice
w=vertice(),
tCoste
c=tCoste()):
orig(v),
dest(w),
coste(c)
{}
}; //^ Orden
de^ aristas
de^ un
grafo
ponderado
template
<typename
tCoste>
bool^ operator
<(const
aristaP
a1,^ const
aristaP
a2)
{ return
a1.coste
<^ a2.coste;
}
//^ Incluir
la^ arista
a^ en^
el^ árbol
g^ y^ el
nuevo
vértice
en^ U.
g[a.orig][a.dest]
=^ g[a.dest][a.orig]
=^ a.coste;
vertice
u^ =^ U[a.orig]
?^ a.dest
:^ a.orig;
U[u]^ =
true; //^ Introducir
en^ el
APO^ las
aristas
adyacentes
al^ vértice
u
//^ que
no^ formen
ciclos. for^ (vertice
v^ =^ 0;
v^ <^ n;
v++)
if^ (!U[v]
&&^ G[u][v]
<^ GrafoP
v,^ G[u][v]));
} return
g; }
Inicialización
En^ rojo^ las aristas que hay en elAPO ordenadas por coste.
i = 1^
a = (3, 5, 10)
i = 2^
a = (5, 2, 7)
i = 4^
a = (0, 1, 24)
i = 5^
a = (6, 7, 25)
i = 7^
a = (7, 9, 10)
i = 8^
a = (9, 8, 5)