Dado un conjunto de N objetos (vértices), se definen dos operaciones:
Dos objetos se dicen que son adyacentes si están unidos.
Un grafo es un par (V,E), donde V es un conjunto de vértices y E es una lista de pares nodos que están unidos.
La implementación más eficiente de un grafo es utilizando listas de adyacencia:
unir(0,2);
unir(0,2);unir(1,7);
unir(0,2); unir(1,7); unir(4,5); unir(7,3); unir(2,3); unir(0,4); conectados(0,3);
Vamos a hacer una pregunta para responder en la encuesta:
Se cumplen las siguientes propiedades:
Los elementos que están relacionados, forman una clase de equivalencia, para la relación de estar conectados, se llaman las componentes conexas.
Las componentes conexas en este grafo son \[\{0,1,2,3,4,5,7\}, \{6\}.\]
Conseguir una estructura de forma que podamos calcular eficientemente las componentes conexas de un grafo. Hay que tener en cuenta que:
Vamos a utilizar un array de enteros id:
ID[p] == ID[q];
ID = [0,0,0,0,0,0,1,0];
Conectados(p,q) return id[p] == id[q]
unir(p,q): pid = id[p] qip = id[q] para cada 0<= i < n: si (id[i] == qid): id[i] = pid