Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tópicos Integradores II (Ads) - 20202.B Avaliação On-Line 5 (AOL 5) - Questionário Avaliação On-Line 5 (AOL 5) - Questionário 9/10 1. Pergunta 1 /1 Uma das formas de navegar no grafo é através da lista de adjacência, que possui dois atributos: o vértice e a lista de vizinhos. Em vez de armazenar as arestas, armazena os vizinhos. Uma das vantagens da lista de adjacência é que ela não utiliza uma matriz como base e, portanto, pode ter tamanho indefinido. Analise a situação a seguir: public ArrayList buscarVizinhos (Vertice noaux) { return new ArrayList <> (arestas [noaux.getIndice () ]); } No código-fonte acima, há uma criação estática, ou seja, com quantidades fixas de vértices. Foi utilizado um vetor de arestas para poder alocar os vizinhos. Com base nessas informações e no conteúdo estudado, podemos dizer que o comando utilizado para buscar o vizinho de um nó é: Ocultar opções de resposta 1. buscarVizinhos (new Vertice ("A",1)); Resposta correta 2. buscarVizinhos (new Aresta (1)); 3. buscarVizinhos (1); 4. buscarVizinhos (new Grafo (1)); 5. buscarVizinhos (new int [1] [1]); 2. Pergunta 2 /1 Uma das principais aplicações de grafos em um problema de logística é achar o menor caminho para várias entregas. No caso, cada ponto de entrega seria um vértice e cada rua, avenida ou caminho, seriam as arestas. Por ser um problema recorrente em grafos, existem diversos algoritmos para isso. Um deles se destaca por ser um dos mais simples para resolver este problema. Trata-se da árvore geradora mínima ou MST (Minimum Spanning Tree), que percorre os vizinhos até o fim e verifica se algum deles possui uma conectividade com os nós do grafo. Com base nessas informações e no conteúdo estudado, podemos dizer que o algoritmo usado no MST como forma de criar uma árvore geradora mínima é: Ocultar opções de resposta 1. DFS ou busca por profundidade. Resposta correta 2. matriz de incidência. 3. matriz de adjacência. 4. BFS ou busca por largura. 5. lista de adjacência. 3. Pergunta 3 /1 A pesquisa de dados é um tópico da estrutura de dados que envolve o estudo dos algoritmos para sequências numéricas, seja ordenada ou desordenada, em ordem crescente ou decrescente. Neste aspecto surge, dentro da pesquisa de dados, uma ferramenta chamada análise assintótica, que recebe um algoritmo e, pelas próprias instruções, nos fornece uma fórmula matemática para analisar graficamente o comportamento deste algoritmo, em seu pior caso, no computador. Com base nessas informações e no conteúdo estudado, podemos dizer que o melhor algoritmo em pesquisa de dados, de acordo com sua fórmula, é: Ocultar opções de resposta 1. O(N). 2. O(1). Resposta correta 3. O(N^3). 4. O(N/2). 5. O(N^2). 4. Pergunta 4 /1 Uma ArrayList é uma estrutura da Api Collection que trabalha com alocação dinâmica, possui aplicação em diversas situações e regras de negócio. No caso dos grafos, sua aplicação pode se dar na representação da lista de adjacência. A lista de adjacência é um formato de representação de grafo, que recebe do grafo um nó e as ligações (ou vizinho) de um nó e os aloca. Quando se trata da alocação de vizinhos, que pode ser fixa ou variável, a lista encadeada ou uma estrutura dinâmica é necessária para poder alocar os vizinhos de um nó. Com base nessas informações e no conteúdo estudado, podemos dizer que o comando usado para adicionar os vizinhos em uma lista de adjacência é: Ocultar opções de resposta 1. setAresta (0, new ArrayList <> (Arrays.asList (new Vertice []{new Vertice ("B",1)}))); Resposta correta 2. setAresta (0, new Vertice <> ({new Vertice ("B",1)})); 3. setAresta (0,1); 4. setAresta (0, new Arrays.asList (ArrayList <> (new Vertice []{new Vertice ("B",1)}))); 5. setAresta (0, new Arrays.asList (ArrayList <> (new Vertice []{new Array("B",1)}))); 5. Pergunta 5 /1 Os vértices ou “nós” são os componentes de um grafo que designam o sentido de uma aresta. Se um grafo não possui vértices, ele não possui arestas. Os vértices, na programação, são classes que não se referenciam, porém possuem algumas propriedades que designam rótulo, focando em alguns algoritmos, no índice ou Ids. Em programação orientada a objetos, temos o encapsulamento que, como o nome diz, encapsula essas propriedades em métodos getters e setters, para cada propriedade, que em classe se torna um atributo. Analise a situação a seguir: class Vertice { private static int indice; private static String nome; boolean static visitado=false; } Com base nessas informações e no conteúdo estudado, podemos dizer que o encapsulamento do atributo índice corresponde a: Ocultar opções de resposta 1. public void getIndice (int aux) {...} public int setIndice () {...} 2. public void getID (int aux) {...} public int setID () {...} 3. public void setIndice (int aux) {...} public int getIndice () {...} Resposta correta 4. public void setID (int aux) {...} public int getID () {...} 5. public void setID (int aux) {...} public void setIndice (int aux) {...} 6. Pergunta 6 /1 O hash é uma estrutura de dados que se fundamenta no conceito de hashing, que, resumindo, trata-se de uma série de cálculos de dados juntamente com a quantidade de espaços disponíveis em memória. Esta técnica é muito utilizada em criptografia de textos, números, dados em geral e até bits. As principais formas de criptografia provêm de uma variação do hashing que carrega não somente o dado, mas a quantidade de bits e constantes (variáveis estáticas), para poder criptografar um dado de forma única. Analise a situação a seguir: public static int getHashCode(int valor, int tamanho){ ---------------- return hashcode; } Com base nessas informações e no conteúdo estudado, podemos dizer que o cálculo do hashing do código acima é: Ocultar opções de resposta 1. int hashcode = valor + tamanho / tamanho; 2. int hashcode = valor % tamanho; Resposta correta 3. int hashcode = Math.random() * (valor / tamanho) * 10; 4. int hash = valor % tamanho; 5. int hashcode = Math.pow(valor,tamanho); 7. Pergunta 7 /1 A busca por profundidade no grafo é uma das principais que podem ser executadas. Ela necessita da matriz de adjacência para poder percorrer os vértices. A busca por profundidade é conhecida por percorrer até o último vizinho de um vértice por vez, ou seja, percorre todo o caminho até o final de um vizinho, vai para o próximo e segue até o fim. Analise a situação a seguir: BQ04 - Tópicos Integradores II(ADS) - Questão 8.PNG Com base nessas informações e no conteúdo estudado, podemos dizer que o comando que retorna o resultado da busca DFS em A é: Ocultar opções de resposta 1. B-C-E Resposta correta 2. B-E-D 3. B-D-E 4. E-C-D 5. B-C-D 8. Pergunta 8 /1 A busca binária, é uma busca que tem por objetivo receber uma estrutura ordenada e fazer uma comparação parcial do dado que é tratado com o tamanho da metade da sua estrutura, caso o dado seja maior que a metade da estrutura o algoritmo faz um loop na segunda metade da estrutura, caso seja menor faz um loop na metade da estrutura, esse formato elimina de um total de valores praticamente metade de comparações, tendo como tamanho O(n/2), pois independente de ter o dado ou não na estrutura somente vai percorrer uma metade. Agora, leia o código-fonte a seguir: public static boolean buscaBinaria(int[] vetor, int pesquisar) { if ( … ) { for (int pos = 0; pos < vetor.length; pos++) { if (pesquisar == vetor[pos]) { System.out.println("Localizado"); return true; } } } else { for (int pos = vetor.length; pos > 0; pos--) { if (pesquisar == vetor[pos]) { System.out.println("Localizado"); return true; } } } return false; } Considerandoessas informações e o conteúdo estudado, a alternativa que corresponde ao comando IF do código acima é: Ocultar opções de resposta 1. Incorreta: pesquisar <= vetor[(int) (vetor.length)]. 2. pesquisar >= vetor[(int) (vetor.length)]. 3. pesquisar != vetor[(int) (vetor.length)]. 4. pesquisar >= vetor[(int) (vetor.length / 2)]. Resposta correta 5. pesquisar == vetor[(int) (vetor.length / 2)]. 9. Pergunta 9 /1 A busca sequencial é uma das formas mais simples de trabalhar a estrutura de dados. Seu algoritmo geralmente é um loop e não possui critérios com relação a busca em si. O que temos é somente uma condição para encontrar o dado dentro do algoritmo. Este formato de busca chama-se sequencial, pois percorre todos os elementos da estrutura de forma estática e pode ser usado em vetores e matrizes de forma dinâmica, percorrendo posições de memória ou retornando endereços de objetos diferentes de nulo. Analise a situação a seguir: for(int i=0;i< 5; i++) for(int j=i+1;j< 10; j++) if( ... ) System.out.println("Dado:"+buscar+" localizado"); Com base nessas informações e no conteúdo estudado, podemos dizer que a alternativa que corresponde ao comando IF acima é: Ocultar opções de resposta 1. buscar = numeros[i][j]. 2. buscar == numeros[j][i]. 3. buscar = numeros[j]. 4. buscar = numeros[i]. 5. buscar == numeros[i][j]. Resposta correta 10. Pergunta 10 /1 As arestas são a principal forma de manipular e modelar o grafo e, dependendo da aresta, até de classificá-lo como um todo. É um modelo que foca mais nas ligações do que nos dados em si. Em resumo, a aresta é a ligação dos vértices ou nós que, em conjunto, formam um caminho e uma estrutura organizada sem topologia ou ordem de dados. Sobre o formato A -> B, B <- C, e D - A, pode-se afirmar que: Ocultar opções de resposta 1. A, C e D são orientadas, enquanto B com A não são orientadas. 2. A, B e C são orientadas ponderadas, enquanto D com A são orientadas. 3. A, B e C não são orientadas, enquanto D com A são orientadas. 4. A, B e C são orientadas, enquanto D com A não são orientadas. Resposta correta 5. A, C e D não são orientadas, enquanto B com A são orientadas.
Compartilhar