Algoritmos Flashcards

1
Q

Qual a ideia principal da busca binária?

A

Controlar a faixa atual de suposições razoáveis, diminuindo as suposições para resolver o problema de maneira mais eficiente por utilizar de menos processos.
A cada vez, você faz uma suposição que divide o conjunto de suposições razoáveis em duas faixas de tamanho aproximadamente iguais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Como adivinhar o ponto do meio inicial de uma busca binária?

A

A média do primeiro índice pelo último índice arredondada para baixo.
Exemplo: chute = arredonda_para_baixo((min+max)/2);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que fazer se o palpite for muito baixo? e muito alto? (no algoritmo de busca binária)

A

Se muito baixo: min = chute + 1
Se muito alto: max = chute - 1;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

O que fazer se o alvo não estiver no array em busca binária? Explique o processo que deve acontecer.

A

Verá que se o alvo não estiver no array, max vai se tornar menor que min pelo laço por muitas vezes ter adicionado + 1 à variável min e por isso retornará um erro, geralmente -1.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qual a função matemática que significa o mesmo que o número de vezes que reduzimos pela metade de forma repetida até chegarmos ao valor de 1?

A

O logaritmo de n na base 2, ou log2(n), que também pode ser encontrado como lg n em textos de ciência da computação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Se n for 128, a busca vai precisar de no máximo quantas tentativas em busca binária? (log2(128)+1)

A

Nesse caso ocorre a divisão de 128 por 2 até resultar em 1, chegando em 1 conta-se quantas divisões por 2 foram efetuadas mais um (+1) e esse é o resultado de quantas tentativas no máximo seriam efetuadas para ser o alvo ser encontrado, o mais um (+1) é para o caso de o valor não estar no array, ou seja, o pior caso.
Nesse caso a busca precisou de no máximo 8 suposições razoáveis.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Para um algoritmo ser considerado bom, o que é preciso?

A

É preciso que resolva o problema de maneira correta e de maneira eficiente (baseada em operações feitas que impactam diretamente o tempo de execução).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Para saber entre dois códigos qual o mais eficiente, independente da máquina ou linguagem de programação utilizada, utiliza-se qual método?

A

Análise assintótica.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Existem algoritmos para solucionar problemas de localização, de rotas ou caminhos de busca, um dos principais algoritmos é uma variação do Greedy Best-First Search. Qual a meta dele? Qual a metáfora por trás dele?

A

A meta dele é encontrar o melhor caminho entre duas informações cuja posição possa ser estimada.
“A cada passo que você caminha a mais, menos um passo no caminho que você precisa percorrer.”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Se a posição do objetivo estiver desordenada, quais são os principais algoritmos para encontrar o objetivo?

A

Busca em largura (Breadth First Search - BFS) e busca em profundidade (Depth First Search - DFS).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Em notação assintótica, o que chamamos de taxa de crescimento do tempo de execução?

A

Taxa de crescimento do tempo de execução é o enfoque no quão rápido uma função cresce com o tamanho da(s) entrada(s).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Suponha que um algoritmo, sendo executado com uma entrada de tamanho n, leve 6n² + 100n + 300 instruções de máquina. Este algoritmo cresce a qual taxa?

A

Este algoritmo cresce a uma taxa n², deixando de fora o coeficiente 6 e os termos restantes 100n + 300.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quando usamos notação assintótica? Como usamos nessa situação?

A

Quando queremos analisar o comportamento de um código diante de uma quantidade arbitrariamente grande de entradas, descartamos os coeficientes constantes e os termos menos significativos, considerando apenas o que importa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O pior tempo de execução possível da busca linear aumenta de acordo com o que? Qual a notação que usamos para esse tipo de execução?

A

Com o tamanho do array n. A notação que usamos para esse tipo de execução é Θ(n).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Suponha que o tempo de execução de um algoritmo leve 6n² + 100n + 300 microssegundos, sendo n o tamanho da entrada. Este algoritmo tem qual tempo de execução?

A

Θ(n²).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quando usamos a notação big-Θ, estamos dizendo o que? Porquê?

A

Que temos um limite assintoticamente restrito no tempo de execução. Pois apenas vale para valores grandes de n.