**Caminar en Python** Caminar es un algoritmo de búsqueda en un grafo o una matriz que se utiliza para encontrar el camino más corto entre dos nodos. A continuación, te presento una implementación básica de Caminar en Python: ### Implementación ```python from collections import deque def caminar(matriz, inicio, fin): """ Busca el camino más corto entre dos nodos en una matriz. Args: matriz (list): La matriz de adyacencia. inicio (int): El nodo de inicio. fin (int): El nodo de fin. Returns: list: El camino más corto entre los nodos de inicio y fin. """ # Verifica si el nodo de inicio y fin son válidos if inicio < 0 or fin < 0 or inicio >= len(matriz) or fin >= len(matriz): return None # Crea una cola para almacenar los nodos a visitar cola = deque([(inicio, [inicio])]) # Crea un conjunto para almacenar los nodos visitados visitados = set() while cola: # Obtiene el nodo actual y su camino nodo, camino = cola.popleft() # Verifica si el nodo actual es el nodo de fin if nodo == fin: return camino # Marca el nodo actual como visitado visitados.add(nodo) # Obtiene los nodos adyacentes al nodo actual adyacentes = [i for i, valor in enumerate(matriz[nodo]) if valor == 1] # Agrega los nodos adyacentes a la cola for adyacente in adyacentes: if adyacente not in visitados: cola.append((adyacente, camino + [adyacente])) # Si no se encuentra un camino entre los nodos de inicio y fin, devuelve None return None # Ejemplo de uso matriz = [ [0, 1, 0, 0], [1, 0, 1, 1], [0, 1, 0, 1], [0, 1, 1, 0] ] inicio = 0 fin = 3 camino = caminar(matriz, inicio, fin) if camino: print("El camino más corto entre los nodos de inicio y fin es:", camino) else: print("No se encuentra un camino entre los nodos de inicio y fin.") ``` ### Explicación La función `caminar` toma como entrada una matriz de adyacencia, un nodo de inicio y un nodo de fin. La función utiliza una cola para almacenar los nodos a visitar y un conjunto para almacenar los nodos visitados. La función busca el camino más corto entre los nodos de inicio y fin utilizando un algoritmo de búsqueda en profundidad (BFS). La función devuelve el camino más corto entre los nodos de inicio y fin como una lista de nodos. Si no se encuentra un camino entre los nodos de inicio y fin, la función devuelve `None`. ### Ejemplo de uso El ejemplo de uso muestra cómo utilizar la función `caminar` con una matriz de adyacencia y nodos de inicio y fin. La función devuelve el camino más corto entre los nodos de inicio y fin como una lista de nodos.
Please keep input under 1000 characters