*ERRATA* A partir del minuto 11:17 el pseudocodigo correcto del DFS es: DFS(grafo G, Nat u){ marco al vertice u como descubierto (verde); for(cada vertice v adayacente a u){ if(el vertice v no fue visitado){ padre[v] = u; DFS(G,v); } } marco al vertice u como visitado (negro); } Al hacer el video se me olvido agregar la linea: *marco al vertice u como visitado (negro);* Disculpen el error!
es lo que iba a preguntar... solo que el if, pregunta si el vértice adyacente (no es negro), aunque en el segmento de DFS la pizarra preguntas si (no es verde)
Espero que haya servido la corrección Dario, gracias por el comentario! Ya que lo mencionas la condicion en concreto seria algo asi: estado[u] = NO_VISITADO, donde siempre verificamos que el estado del vertice al que vamos este NO_VISITADO Saludos!
Excelente, la mejor explicación que he visto hasta el momento, espero puedas seguir con este formato de videos que la verdad ayudan bastante. Gracias por compartir tus conocimientos.
Función DFS(grafo G, vértice u): // Marcar el vértice u como "descubierto" (puedes usar un arreglo de visitados) Marcar u como "descubierto" (verde) // Iterar sobre los vértices adyacentes a u Para cada vértice v adyacente a u: Si v no ha sido visitado: // Establecer a u como el padre de v (opcional) padre[v] = u // Realizar una llamada recursiva para explorar v DFS(G, v) // Marcar el vértice u como "visitado" (puedes usar un arreglo de visitados) Marcar u como "visitado" (negro) dejo el codigo mas claro