Class Grafo

java.lang.Object
com.redes_sociales.modelos.Grafo

public class Grafo extends Object
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.
  • Constructor Details

    • Grafo

      public Grafo()
      Constructor para la clase Grafo. Inicializa una lista enlazada vacía de objetos UsuarioRelacion.
  • Method Details

    • agregarUsuario

      public void agregarUsuario(Usuario usuario)
      Agrega un nuevo usuario al grafo.
      Parameters:
      usuario - el usuario a agregar.
    • eliminarUsuario

      public void eliminarUsuario(Usuario usuario)
      Agrega un nuevo usuario al grafo.
      Parameters:
      usuario - el usuario a agregar.
    • agregarRelacion

      public void agregarRelacion(Relacion relacion)
      Agrega una nueva relación al grafo.
      Parameters:
      relacion - la relación a agregar.
    • eliminarRelacion

      public void eliminarRelacion(Usuario usuario1, Usuario usuario2)
      Elimina una relación del grafo.
      Parameters:
      usuario1 - el primer usuario en la relación.
      usuario2 - el segundo usuario en la relación.
    • getRelaciones

      public ListaEnlazada<Relacion> getRelaciones(Usuario usuario)
      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

      public ListaEnlazada<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

      public ListaEnlazada<Usuario> bfs(Usuario inicio)
      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

      public ListaEnlazada<Usuario> dfs(Usuario inicio)
    • getUsuarioRelacion

      public Grafo.UsuarioRelacion getUsuarioRelacion(Usuario usuario)
      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

      public ListaEnlazada<Relacion> 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.