From 492398627a5e143a545616f66c407e1ea190e042 Mon Sep 17 00:00:00 2001 From: Alejandro de la O Date: Thu, 18 Jan 2024 05:08:51 -0600 Subject: [PATCH 1/2] Feature: Added test file --- test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..0527e6b --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +This is a test From 23212411fe3e73efd950b54e44fb666c976e3ad2 Mon Sep 17 00:00:00 2001 From: Alejandro de la O Date: Wed, 6 Mar 2024 20:41:07 -0600 Subject: [PATCH 2/2] added bfs_dfs_algorithms.py file --- .../MPAL_AOR_ROVR/bfs_dfs_algorithms.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 mpi4py_examples/MPAL_AOR_ROVR/bfs_dfs_algorithms.py diff --git a/mpi4py_examples/MPAL_AOR_ROVR/bfs_dfs_algorithms.py b/mpi4py_examples/MPAL_AOR_ROVR/bfs_dfs_algorithms.py new file mode 100644 index 0000000..36b3ae3 --- /dev/null +++ b/mpi4py_examples/MPAL_AOR_ROVR/bfs_dfs_algorithms.py @@ -0,0 +1,77 @@ +''' +miembros del equipo: +Avalos Lopez Marlene Paola +De la O Ramirez Alejandro +Vazquez Rodriguez Ramon Oswaldo +''' + +import time + + +class Grafo: + def __init__(self): + self.nodos_visitados = set() + self.camino = list() + self.grafo = { + "A": ["B", "C"], + "B": ["D", "E"], + "C": ["G"], + "D": [], + "E": ["F"], + "F": [], + "G": [], + } + + def DFS(self, nodo_actual): + self.nodos_visitados.add(nodo_actual) + self.camino.append(nodo_actual) + + for vecino in self.grafo[nodo_actual]: + if vecino not in self.nodos_visitados: + self.DFS(vecino) + + def BFS(self, nodo_inicial): + nodos_visitados = set() + # Este es un conjunto vacio que almacena los nodos que ya se visitaron. + nodos_faltantes = [nodo_inicial] + # Esta es una cola vacia para almacenar los nodos faltantes. + nodos_visitados.add(nodo_inicial) + # Marcamos el nodo inicial como visitado. + + while nodos_faltantes: + # Creamos un bucle mientras la cola no este vacia. + nodo_inicial = nodos_faltantes.pop(0) + # El .pop(0) elimina el ultimo elemento de los Nodos_faltantes y lo manda al Nodo_actual + + for vecinos in self.grafo[nodo_inicial]: + # Repetimos esto sobre los vecinos del nodo actual en el grafo. + if vecinos not in nodos_visitados: + nodos_faltantes.append(vecinos) + nodos_visitados.add(vecinos) + # Si los vecinos no estan en los nodos visitados entonces: + # si los vecinos no estan faltantes se agregan al final de la lista de los nodos faltantes. + # Si los vecinos no estan en visitados se agregan a los nodos visitados. + + print(f"Nodos totales visitados: {len(nodos_visitados)}") + print( + f"Nodos máximos visitados por cualquier proceso: {max(len(nodos_visitados) for _ in self.grafo)}" + ) + + +# Definición de constantes + + +# Definición de funciones +def execution_time(funcion, *args, **kwargs): + inicio = time.time() + funcion(*args, **kwargs) + fin = time.time() + print(f"Tiempo de ejecución {funcion.__name__}: {(fin - inicio)*1000} milisegundos") + + +if __name__ == "__main__": + nodo_inicial = "A" + instancia = Grafo() + + execution_time(instancia.DFS, "A") + execution_time(instancia.BFS, "A")