Ed
há 8 meses
Para determinar a complexidade de tempo do algoritmo de Dijkstra quando implementado com uma fila de prioridade usando um heap binário, vamos analisar as opções. O algoritmo de Dijkstra, ao usar um heap binário, realiza as seguintes operações principais: 1. Extração do mínimo: Esta operação tem complexidade O(log V) para cada vértice. 2. Relaxamento das arestas: Para cada aresta, o relaxamento pode ser feito em O(log V) também, já que pode envolver a atualização da prioridade no heap. Assim, a complexidade total do algoritmo de Dijkstra, considerando que temos V vértices e E arestas, é dada por: - O número de extrações do mínimo é V, cada uma custando O(log V). - O número de relaxamentos é E, cada um também custando O(log V). Portanto, a complexidade total é O((V + E) log V). Analisando as alternativas: a) O(V^2) - Não é correta para a implementação com heap. b) O(E + V log V) - Esta é a complexidade correta. c) O(V + E^2) - Não é correta. d) O(log V) - Esta é apenas a complexidade de uma operação, não do algoritmo completo. A alternativa correta é: b) O(E + V log V).
Cadastre-se ou realize login
Mais perguntas desse material