Package com.redes_sociales.modelos
Class Grafo
java.lang.Object
com.redes_sociales.modelos.Grafo
Esta clase representa un grafo, que es una estructura de datos que consiste en nodos (usuarios) y aristas (relaciones).
El grafo se implementa utilizando una lista enlazada de objetos UsuarioRelacion, cada uno de los cuales representa un nodo y sus aristas adyacentes.
-
Nested Class Summary
Modifier and TypeClassDescriptionclass
Esta clase interna representa un nodo en el grafo y sus aristas adyacentes. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
agregarRelacion
(Relacion relacion) Agrega una nueva relación al grafo.void
agregarUsuario
(Usuario usuario) Agrega un nuevo usuario al grafo.Realiza una búsqueda en anchura (BFS) en el grafo a partir de un usuario dado.int
contarIslas
(boolean useBfs) Cuenta el número de islas en el grafo.void
eliminarRelacion
(Usuario usuario1, Usuario usuario2) Elimina una relación del grafo.void
eliminarUsuario
(Usuario usuario) Agrega un nuevo usuario al grafo.getRelaciones
(Usuario usuario) Obtiene las relaciones de un usuario en el grafo.getUsuarioRelacion
(Usuario usuario) Obtiene el objeto UsuarioRelacion para un usuario dado.Obtiene todos los usuarios en el grafo.Identifica las relaciones en el grafo que son puentes.
-
Constructor Details
-
Grafo
public Grafo()Constructor para la clase Grafo. Inicializa una lista enlazada vacía de objetos UsuarioRelacion.
-
-
Method Details
-
agregarUsuario
Agrega un nuevo usuario al grafo.- Parameters:
usuario
- el usuario a agregar.
-
eliminarUsuario
Agrega un nuevo usuario al grafo.- Parameters:
usuario
- el usuario a agregar.
-
agregarRelacion
Agrega una nueva relación al grafo.- Parameters:
relacion
- la relación a agregar.
-
eliminarRelacion
Elimina una relación del grafo.- Parameters:
usuario1
- el primer usuario en la relación.usuario2
- el segundo usuario en la relación.
-
getRelaciones
Obtiene las relaciones de un usuario en el grafo.- Parameters:
usuario
- el usuario cuyas relaciones se van a obtener.- Returns:
- una lista enlazada de las relaciones del usuario.
-
getUsuarios
Obtiene todos los usuarios en el grafo.- Returns:
- una lista enlazada de todos los usuarios en el grafo.
-
contarIslas
public int contarIslas(boolean useBfs) Cuenta el número de islas en el grafo. Una isla es un subgrafo conectado.- Parameters:
useBfs
- si es true, usa la búsqueda en anchura (BFS) para contar las islas; si es false, usa la búsqueda en profundidad (DFS).- Returns:
- el número de islas en el grafo.
-
bfs
Realiza una búsqueda en anchura (BFS) en el grafo a partir de un usuario dado.- Parameters:
inicio
- el usuario desde donde comenzar la BFS.- Returns:
- una lista enlazada de usuarios visitados durante la BFS.
-
dfs
-
getUsuarioRelacion
Obtiene el objeto UsuarioRelacion para un usuario dado.- Parameters:
usuario
- el usuario cuyo objeto UsuarioRelacion se va a obtener.- Returns:
- el objeto UsuarioRelacion para el usuario dado, o null si el usuario no está en el grafo.
-
identificarPuentes
Identifica las relaciones en el grafo que son puentes. Un puente es una relación cuya eliminación aumentaría el número de islas en el grafo.- Returns:
- una lista enlazada de las relaciones que son puentes.
-