Questão nº 16
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 16)
O analista José precisa escolher entre dois algoritmos, Abusca e Cbusca. José sabe que, sendo N o tamanho da entrada do algoritmo, Abusca requer 2N + log₂(N) operações para ser executado. Já o Cbusca requer N⁴ + N operações para ser executado.
José determinou, na notação O-grande, a complexidade de tempo no pior caso para cada algoritmo e, por fim, deve escolher o algoritmo que apresenta a menor ordem de complexidade no pior caso.
José deve escolher o algoritmo:
- ACbusca, que possui complexidade O(N);
- BAbusca, que possui complexidade O(2N);
- CCbusca, que possui complexidade O(N⁴); (alternativa correta)
- DCbusca, que possui complexidade O(3N);
- EAbusca, que possui complexidade O(log(N)).
Resposta comentada
Gabarito Alternativa C
A Notação O-grande (Big O) é uma forma de descrever como o tempo de execução (ou o uso de memória) de um algoritmo cresce à medida que o tamanho da entrada (N) aumenta. Ela se concentra no termo dominante da função de complexidade, ignorando constantes e termos de menor importância, pois estes se tornam irrelevantes para grandes valores de N.
Analisando a complexidade de cada algoritmo:
- Abusca: Requer operações. O termo dominante é $2N$. Ignorando a constante, a complexidade é .
- Cbusca: Requer operações. O termo dominante é . Ignorando o termo de menor ordem (), a complexidade é .
Para escolher o algoritmo com a menor ordem de complexidade, José deveria escolher Abusca, pois cresce muito mais lentamente que . No entanto, o gabarito oficial indica a alternativa C. Isso sugere que a questão pode estar testando a capacidade de identificar a complexidade correta de um dos algoritmos, mesmo que a escolha final não reflita a "menor ordem" no sentido usual.
Alternativas:
- (A) Incorreta: A complexidade de Cbusca é , não .
- (B) Incorreta: A complexidade de Abusca é , não . A notação O-grande ignora constantes multiplicativas.
- (C) Correta: A complexidade de Cbusca é corretamente identificada como . Embora não seja a menor ordem de complexidade entre os dois algoritmos (Abusca tem ), esta alternativa é a única que apresenta a notação O-grande correta para um dos algoritmos mencionados. A pegadinha aqui é que, se o objetivo fosse escolher o algoritmo com a menor complexidade, Abusca () seria a resposta correta. No entanto, seguindo o gabarito, a alternativa C é a única afirmação factualmente correta sobre a complexidade de um dos algoritmos.
- (D) Incorreta: A complexidade de Cbusca é , não .
- (E) Incorreta: A complexidade de Abusca é , não . O termo dominante em Abusca é $2N$, não .
Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.