def adjacency_list(self): memory_usage, adjacency_list = self.__adjacency_list() filename = create_file_audit('adjacency_list') with open(filename, 'w+') as f: f.write(f'Uso de memória: {memory_usage / 1024 / 1024} MB\n\n') f.write('Lista de adjacência:\n\n') [f.write(f'{key} -> {value}') for key, value in adjacency_list.items()]
def adjacency_matrix(self): memory_usage, matrix = self.__adjacency_matrix() filename = create_file_audit('adjacency_matrix') with open(filename, 'w+') as f: f.write(f'Uso de memória: {memory_usage /1024 / 1024} MB\n\n') f.write('Matriz de adjacência:\n\n') [f.write(f'{line}\n') for line in matrix] print(f'\n\narquivo {filename} criado.')
def report(self): sequences = {title: len(item.relation_titles) for title, item in self.__vertexes.items()} edges_amount = int(sum(sequences.values()) / 2) vertexes_amount = len(self.__vertexes) filename = create_file_audit('report') with open(filename, 'w+') as f: f.write(f'O grafo contém: {vertexes_amount} vértices com {edges_amount} arestas.\n\n') f.write('Sequências:\n') for name, amount in sequences.items(): f.write(f'O vértice {name} contém um grau de {amount}.\n') print(f'\n\narquivo {filename} criado.')
def dfs(self, start_vertex_title=1): start_vertex = self.__vertexes.get(start_vertex_title) if not start_vertex: print("\n\nVértice inexistente.") return start_time = datetime.now() self.__dfs(deque([*self.__vertexes.keys(), start_vertex_title])) end_time = datetime.now() filename = create_file_audit('dfs') self.__create_search_file(start_time, end_time, filename)
def bfs(self, start_vertex=1): if not self.__vertexes.get(start_vertex): print("\n\nVértice inexistente.") return search_queue = Queue() self.__vertexes[start_vertex].discovery_time = 0 search_queue.put(start_vertex) start_time = datetime.now() self.__bfs(search_queue) end_time = datetime.now() filename = create_file_audit('bfs') self.__create_search_file(start_time, end_time, filename)
def search(self, beginning_vertex, end_vertex, heuristic): self.tree = Tree(Node(self.vertexes[beginning_vertex])) found_vertex = self.__search(end_vertex, heuristic) item = found_vertex path = '' while item is not None: path = f'\n{item.value} {path}' item = item.parent output = f"Arvore de busca:\n\n{self.tree}\n\nCaminho percorrido:\n{path}" print(output) filename = create_file_audit('A_Star') open(filename, 'w+').write(output) print(f'\n\nArquivo {filename} criado.')