Necesito el código fuente del gráfico BFS y DFS en C ++ Uso de recursividad ¿Pueden ayudarme?

5 Respuestas


  • Un buen ejemplo de un programa para crear un gráfico usando DFS y BDS se puede encontrar en www.sourcecodesworld.com.

    Este código es creado por Arun Vishnu y está disponible para seleccionar y copiar para que pueda hacer las adaptaciones y cambios para que se adapte a su proyecto. Hay muchos otros códigos y códigos fuente en este sitio web, por lo que es posible encontrar el código exacto que está buscando al visitar este sitio.
    • DFS
    DFS significa búsqueda en profundidad e implica el proceso de utilizar un gráfico para encontrar información. La búsqueda comienza en la raíz y luego retrocede a lo largo de cada rama para encontrar información. La búsqueda en profundidad se conoce como búsqueda desinformada, ya que no se necesita ningún conocimiento antes de la búsqueda, pero la búsqueda es más profunda hasta que se encuentra el objetivo.
    • BFS
    BFS significa Breadth-first search y es un proceso similar, ya que es una búsqueda de gráfico que comienza en la raíz y luego explora la información vecina dentro del gráfico mediante la exploración y el examen de secuencias. En una búsqueda en amplitud, el objetivo no se considera antes de la búsqueda, solo se reconoce una vez que se ha encontrado.
  • Hola, el

    código C ++ para DFS y BFS se puede encontrar aquí. El

     
    código para BFS también se puede encontrar aquí .

    En estos ejemplos, se ha utilizado el bucle para finalizar la búsqueda.
    Puede eliminar fácilmente el bucle correctamente y hacer que la función sea una función recursiva según sea necesario.
     
    ¿Espero eso ayude?
  • #include
    #include
    #include

    void create (); // Para crear un gráfico
    void dfs (); // Para el recorrido de la primera búsqueda profunda (DFS).
    Bfs vacío (); // Para el recorrido transversal de la primera búsqueda en amplitud (BFS).

    Nodo de estructura // Estructura de los elementos del gráfico
    {
       int data, status;
       nodo de estructura * siguiente;
       enlace de estructura * adj;
    };

    enlace de estructura // Estructura de la lista de adyacencia
    {
       nodo de estructura * siguiente;
       enlace de estructura * adj;
    };

    nodo de estructura * inicio, * p, * q;
    enlace de estructura * l, * k;

    int main ()
    {
       elección int;
       clrscr ();
       crear();
       while (1)
       {
      coutadj = NULL;
      si (bandera == 0)
      {
    inicio = p;
    q = p;
    flag ++;
      }
      más
      {
    q-> siguiente = p;
    q = p;
      }
       }
       p = inicio;
       while (p! = NULL)
       {
      coutadj = k;
        l = k;
    }
    q = inicio;
    while (q! = NULL)
    {
        if (q-> data == that)
      k-> next = q;
        q = q-> siguiente;
    }
      }
      p = p-> siguiente;
       }
       coutnext;
       }
       p = inicio;
       qu [0] = p-> datos;
       p-> estado = 1;
       while (1)
       {
      if (qu [j] == 0)
    romper;
      p = inicio;
      while (p! = NULL)
      {
    if (p-> data == qu [j])
         break;
    p = p-> siguiente;
      }
      k = p-> adj;
      while (k! = NULL)
      {
    q = k-> siguiente;
    if (q-> status == 0)
    {
        qu [I] = q-> data;
        q-> estado = 1;
        qu [I + 1] = 0;
        I ++;
    }
    k = k-> adj;
      }
      j ++;
       }
       j = 0;
       cout
  • BFS nulo (recepción vertical *, int conectado con [N] [N] / *, cadena v * /)
    {
    int I = 0;
    cola <cadena> q;
    q.push (recibir [I] .name);
    recibir [0] .visitado = verdadero;
    cout << "n ====== nBREADTH PRIMERA BÚSQUEDA VIAJANDO:";
    cout << "n ====== n";
    while (! q.empty ())
    {
    int j = 0;
    cout << q.front () << "";

    for (int n = 0; n <N; n ++)
    {
    if (recieve [n] .name == q.front ())
    {
    I = n;

    rotura;
    } // FIN DE SI
    } // FIN DE FOR LOOP
    q.pop ();
    para (; j <N; j ++)
    {
    si (j == I)
    Seguir;
    si no (conectado con [I] [j] == 1 && recibir [j] .visitado == falso)
    {
    recibir [j] .visitado = verdadero;
    q.push (recibir [j] .name);

    } // FIN DE ELSE IF
    } // FIN DE FOR LOOP
    } // FIN DE WHILE LOOP
    } // FIN DE FUNCIÓN tecnología
  • #include

    #define MAX 10

    class DFS
    {
    privado: Int n;
      int adj [MAX] [MAX];
      int visitado [MAX];
    public: Void dfs (int);
      vacío readmatrix ();
    };

    anular DFS :: Readmatrix ()
    {
    int I, j;
    cout> n;
    cout

Escribe tu respuesta

Tu respuesta aparecerá después de la moderación