A este punto sería bueno hacer un ejemplo práctica para entender mejor el tema.
Introducción
¿Qué es un grafo?
¿Qué es un árbol?
¿Qué es recursión?
Aplicaciones reales de grafos y árboles
Formas de representar un grafo
DFS
Análisis de DFS: algoritmo de búsqueda en profundidad
Programando DFS de forma recursiva
Otras formas de programar DFS
Recorridos y profundidad de un Árbol
Sum Root to Leaf Numbers: análisis del problema
Solución de Sum Root to Leaf Numbers
Playground: Sum Root to Leaf Numbers
Programando Sum Root to Leaf Numbers en Golang
Number of Islands: análisis del problema
Solución de Number of Islands
Playground: Number of Islands
Programando Number of Islands en Python
Ejercicios recomendados de DFS
Ejercicios resueltos de DFS
BFS
Análisis de BFS: algoritmo de búsqueda en anchura
Programando BFS con Python
Minimum Knights Moves (movimientos de caballo en ajedrez): análisis del problema
Solución de Minimum Knights Moves
Playground: Minimum Knights Moves
Programando Minimum Knights Moves con Python
Rotting Oranges: análisis del problema
Solución de Rotting Oranges
Playground: Rotting Oranges
Rotting Oranges con Java
Shortest Bridge Between Islands: análisis del problema
Solución de Shortest Bridge Between Islands
Playground: Shortest Bridge Between Islands
Programando Shortest Bridge Between Islands con Python
Ejercicios recomendados de BFS
Ejercicios resueltos de BFS
Backtrack
Algoritmo de Backtrack
Letter Combinations of a Phone Number: análisis del problema
Solución de Letter Combinations of a Phone Number
Programando Letter Combinations of a Phone Number con C++
Playground: Letter Combinations of a Phone Number
Restore IP Addresses: análisis del problema
Programando Restore IP Addresses con C++
Playground: Restore IP Addresses
Word Search: análisis del problema
Solución de Word Search
Playgrund: Word Search
Programando Word Search JavaScript
Reto: N Queens Puzzle
Ejercicios recomendados de Backtrack
Ejercicios resueltos de Backtrack
Próximos pasos
¿Qué otros algoritmos y tipos de grafos puedes aprender?
¿Quieres más cursos avanzados de algoritmos?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Camila Londoño
Aportes 11
Preguntas 1
A este punto sería bueno hacer un ejemplo práctica para entender mejor el tema.
Hola 😄, pueden probar el código con el siguiente árbol de ejemplo.
.
.
dfsBin.js:
const dfs = function (raiz, valorAEncontrar) {
if (!raiz) {
// si raiz es null o undefined, termina la función
return null;
}
console.log("En este momento estoy en el nodo, el valor " + raiz.valor);
if (raiz.valor === valorAEncontrar) {
console.log("Econtré el valor!!! ");
return raiz;
}
var izquierda = dfs(raiz.izquierda, valorAEncontrar);
var derecha = dfs(raiz.derecha, valorAEncontrar);
if (izquierda != null) {
return izquierda;
}
if (derecha != null) {
return derecha;
}
return null;
};
//Creación del árbol como objeto
let nodos = {
valor: 25,
izquierda: {
valor: 10,
izquierda: {
valor: 8,
izquierda: {
valor: 6,
izquierda: {
valor: 1,
izquierda: null,
derecha: null,
},
derecha: {
valor: 7,
izquierda: null,
derecha: null,
},
},
derecha: null,
},
derecha: {
valor: 13,
izquierda: null,
derecha: {
valor: 15,
izquierda: null,
derecha: null,
},
},
},
derecha: {
valor: 40,
izquierda: {
valor: 30,
izquierda: {
valor: 26,
izquierda: null,
derecha: null,
},
derecha: null,
},
derecha: {
valor: 42,
izquierda: null,
derecha: {
valor: 49,
izquierda: {
valor: 45,
izquierda: null,
derecha: null,
},
derecha: {
valor: 51,
izquierda: null,
derecha: null,
},
},
},
},
};
// Probar la función dfs
let nodoEncontrado = dfs(nodos, 30);
console.log("\nEl valor encontrado es:\n");
console.log(nodoEncontrado);
.
Pueden ejecutarlo por la terminal, desde el directorio donde tienen guardado el archivo, ejecutando:
node dfsBin.js
Seria bueno en este caso, mostrar como es el objeto que se va a recorrer con eso queda un poco ilulstrado
Estaria bueno primero tener un video de como es la estructura de una grafo, como se implementa, que propiedades y metodos tiene para entender mejor el algoritmo
# Función para realizar DFS en un grafo dado
def dfs(graph, node, visited):
# Marcar el nodo actual como visitado
visited[node] = True
print("Visitando nodo:", node)
# Recorrer todos los nodos adyacentes al nodo actual
for neighbor in graph[node]:
if not visited[neighbor]:
# Si el vecino no ha sido visitado, realizar DFS en él
dfs(graph, neighbor, visited)
# Ejemplo de uso
if __name__ == "__main__":
# Grafo representado como listas de adyacencia
graph = {
0: [1, 2],
1: [0, 3, 4],
2: [0, 5],
3: [1],
4: [1],
5: [2]
}
# Inicializar un arreglo para llevar un seguimiento de los nodos visitados
visited = [False] * len(graph)
# Realizar DFS desde el nodo 0
dfs(graph, 0, visited)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?