Академический Документы
Профессиональный Документы
Культура Документы
ESTRUCTURAS DE DATOS
COMPONENTES CONEXAS
De un grafo no dirigido
Componentes
conexas: entre ellas
son conexas
Componentes Conexas
Donde V1 y V2 pertenecen a W
CONEXO
A
B
C
E
D
B
C
E
D
No
CONEXO
ALGORTIMO:
DETERMINAR
CONEXIN
Si entre todos los vrtices, hay camino
Si no
EJEMPLO
A
E
D
Recorrido desde E
C
B
C
Recorrido desde E
B
Conjunto recorridos =
Conjunto de Vertices
Es CONEXO
Componen
te Conexa
W1
IMPLEMENTACION
No olvidar: Luego
de recorrer,
obtendremos un
conjunto de vertices
LRecorrido
COMPONENTES
FUERTEMENTE
CONEXAS
De un grafo DIRIGIDO
No
CONEXO
C
B
H
4
Componente
s
5
6
F
S
CONEXO
ALGORITMO
Si D interseccion A = V entonces
Si no
EJEMPLO
B
H
F
S
C
W=DA
B
H
W <> V,
Componente F.C.
F
S
1) Recorrer desde
H (Descendientes)
1) Recorrer desde B
(Descendientes)
D= B
D= H
2) Invertir
Direcciones
3) Recorrer desde B
(Ascendientes)
A= B
W2 =
{H}
W1 = {B, C, S}
3) Recorrer desde
H (Ascendientes)
S
A= H
W3 = {F}
1) Recorrer desde
F (Descendientes)
S
D= F
3) Recorrer desde
F (Ascendientes)
A= FH
PUNTOS DE
ARTICULACION
En un grafo no dirigido conexo
Desconectan al Grafo
La conectividad de un grafo
EJEMPLO
A
B
C
Puntos de
Articulacion
E
F
ARBOL DE EXPANSION
Este se obtiene
Ejemplo
C
F
C
D
E
F
Arco en Retroceso:
Cuando se quiere
visitar un nodo que
ya ha sido visitado y
no es el padre
COMO REPRESENTAR EL
ARBOL DE EXPANSION
Un arbol en expansion
Arcos en Retroceso
No es un arbol binario
Cada Vertice puede tener 0, 1 o n hijos
Si sabemos que CADA VERTICESOLO TIENE UN PADRE
La representacion mostrar
ARBOL DE EXPANSION
CON MATRIZ DE ADY.
Se encuentran en un arreglo
Representa un vertice
Ej: A 0, B 1, etc
int Padres[MAX];
0 1
A B
Representa un vertice
B
C
D
E
F
ALGORITMO: ENCONTRAR
P.A.
1 ,1
A es P.A.
De acuerdo al recorrido
Se obtiene Num(v)
2 ,2
Minimo entre
Num(v) se calcula
a medida que se
genera el Arbol
de Expansion
Para calcular
Bajo(v), se
necesita bajar
hasta conocer los
Bajos(hijos de v)
Min(1, --, 2)
P.A. son
Min(3, --, 3)
4 ,3
Num(v)
Num(arco_retroceso de v)
Bajo(hijos de v)
C es P.A.
3,3
Min(4, ---, 3)
F
5 ,3
E
Min(5, ---, 3)
6 ,3
B
Min(6, 3,
----)
CAMBIOS EN EL ARBOL
Generico V[MAX];
Generico Informacion;
int Padres[MAX];
int Num[MAX];
Vertice *padre;
int Bajo[MAX];
Lista *LArcos;
int nvertices;
}Vertices;
}Vertice;
COMO IMPLEMENTAR??
Primero
Si es L.A.
Luego
Recorrer el grafo
Calcular Bajo
IMPLEMENTACION
CALCULAR NUM y PADRES
//Al recorrer, llenar Num y enlazar con los padres
void RecorrerParaArbol(Grafo G, Vertice *V, int *vez){
int i;
Al vertice de origen, marcar como
vistado y contarlo, hay que llevar
LSE_nodo *p;
rastreo del aumento del contador
V->visitado = TRUE;
*vez++;
((Vertice *)(p->G))->Num = *vez;
for(p = V->LA->header; p!=NULL; p= p->sig){
if(!((Vertice *)(p->G))->Visitado){
RecorrerParaArbol(G, p->G, vez);
((Vertice *)p->G)->padre = V;
}
}
IMPLEMENTACION
CALCULAR BAJO
EJERCICIO