Questão
ID 66344Disciplina: Tecnologia da Informação
Assuntos: Conceitos Básicos de Algoritmos e Estrutura de Dados, Grafos (Estrutura de Dados)
Ano: 2025 Banca: PERFIL - ENADE Órgão: Primeiro Simulado Pnd
Um professor de Algoritmos e Estruturas de Dados está planejando uma aula sobre algoritmos em grafos para estudantes de um curso técnico em informática. Ele quer que os alunos não apenas aprendam os algoritmos de busca em largura (BFS - Breadth-First Search) e busca em profundidade (DFS - Depth-First Search), mas também compreendam em que tipo de problema cada um deles é mais adequado. Para contextualizar, ele propõe um problema baseado em uma rede social simplificada, onde os usuários são os vértices e as amizades são as arestas. Ele apresenta um trecho de um livro-texto: "Tanto a BFS quanto a DFS são algoritmos para percorrer ou buscar em um grafo, mas eles exploram os vizinhos de maneiras fundamentalmente diferentes. A BFS explora o grafo em 'camadas', visitando todos os vizinhos de um nó antes de passar para os vizinhos dos vizinhos. Isso significa que ela sempre encontrará o caminho mais curto em termos de número de arestas em um grafo não ponderado. A DFS, por outro lado, explora o mais profundamente possível ao longo de cada ramo antes de retroceder (backtracking). Ela não garante o caminho mais curto, mas sua natureza recursiva (ou o uso de uma pilha na versão iterativa) a torna útil para problemas como a verificação de ciclos ou a ordenação topológica." O desafio proposto aos alunos é: "Na nossa rede social, queremos desenvolver duas funcionalidades: (1) Encontrar o caminho de conexão mais curto entre dois usuários (o menor número de 'amigos de amigos' que os conectam). (2) Verificar se a rede social está 'fragmentada', ou seja, se existem grupos de usuários completamente isolados uns dos outros (componentes conectados)."
Considerando o problema proposto e as características dos algoritmos BFS e DFS, qual é a aplicação correta de cada algoritmo para resolver as funcionalidades desejadas?