Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade 1 1. Entender o melhor e o pior caso de algoritmos é fundamental para escolher os algoritmos mais eficientes para determinado conjunto de entradas e, assim, eleger qual utilizar em soluções propostas, uma vez que um mesmo algoritmo pode ser muito veloz para determinado conjunto de casos, mas muito lento para outro grande conjunto de entradas. Entre as opções elencadas a seguir, marque aquela que apresenta a complexidade do pior caso e do melhor caso para um algoritmo que busca um valor em um vetor de forma sequencial, ou seja, percorre todo o vetor do início ao fim buscando pelo elemento desejado. A. Pior caso: N; melhor caso: 1. 2. Ao longo do tempo, diversas soluções para problemas conhecidos foram propostas, cada uma com suas particularidades que envolvem desde a eficiência até a qualidade do resultado. Sabendo que todas as soluções para um problema têm a mesma qualidade de resultado, qual das complexidades elencadas a seguir indica a solução com melhor eficiência de tempo? A. log N. 3. A ordenação de vetores é um dos problemas mais estudados em computação, sendo que diferentes soluções foram propostas ao longo do tempo. Diversas dessas soluções têm complexidade de tempo semelhante, e o que as diferencia é, principalmente, a complexidade de espaço. Sabendo que existe limitação de espaço para sua execução, qual das complexidades de espaço elencadas a seguir é a mais eficiente? D. 1. 4. A operação de multiplicação de matrizes é base de muitos solucionadores de equações diferenciais e também simuladores de fenômenos físicos. Geralmente, essa operação é implementada por um algoritmo que tem três laços alinhados de execução. Sabendo que, dentro desses laços, existem apenas operações de tempo constante, qual é a complexidade de tempo da multiplicação de matrizes implementada dessa maneira? D. N³. 5. Existe uma solução para a busca de elementos em um vetor que assume que existe um vetor já ordenado e realiza uma busca guiada nele, de maneira que, a cada iteração, metade do vetor restante é ignorada, buscando o elemento desejado apenas na outra metade. Qual é a complexidade de tempo de soluções desse tipo, ou seja, que em cada iteração diminuem o tamanho do problema pela metade, de maneira similar à busca mencionada? E. log N. Unidade 2 1. Um método utilizado para a pesquisa de dados em vetores utiliza a inserção do valor pesquisado (chave) em sua última posição, restringindo a quantidade de buscas que serão realizadas para encontrar a chave dentro do vetor. Com isso, o método o objetivo de reduzir o número de comparações no momento da pesquisa, tornando mais rápida a pesquisa de dados no algoritmo. Como exemplo, podemos descrever a situação de uma empresa que deseja pesquisar os ramais de todos os seus telefones internos. Para isso, utiliza uma estrutura de vetor para armazenar os ramais, conforme é mostrado abaixo. Ramais: Todos os ramais estão armazenados no vetor e desejamos pesquisar um determinado ramal, como o 65. O método em questão colocaria a chave 65 na última posição (ou também poderia ser na primeira posição) do vetor, como demonstrado abaixo. A pesquisa termina quando encontra o ramal desejado. Caso ele não exista, chegará ao final do vetor e encontrará no último elemento a chave 65; assim, saberá que está na última posição e não encontrou o elemento procurado. Selecione a alternativa que representa o método descrito acima. C. Pesquisa sequencial com sentinela . 2. Considerando os métodos de pesquisa de dados sequencial e binária, analise as afirmativas abaixo e determine se são verdadeiras (V) ou falsas (F). I - O método de pesquisa binário é menos eficiente que o método de pesquisa sequencial. II - O método de pesquisa sequencial com sentinela é mais eficiente que o método de pesquisa sequencial linear. III - O método de pesquisa sequencial procura registro a registro pela chave. IV - O método de pesquisa binário, para ser eficiente, não deve ter seus dados ordenados antes da busca. E. F, V, V, F. 3. Uma universidade realizou vestibular para os cursos superiores e armazenou em um vetor o código dos alunos inscritos que tiveram aprovação. Essa pesquisa foi inserida no site da instituição e os candidatos poderão realizar a pesquisa pelo site para verificar se obtiveram a aprovação para o curso desejado. Para a realização da pesquisa, é necessário digitar o código de inscrição do aluno. Como retorno, a mensagem para os candidatos que tiveram aprovação será “Candidato aprovado no vestibular”; para os que não obtiveram aprovação, a mensagem será “Candidato não aprovado no vestibular”. Como exemplo para demonstrar a situação:, Dados os códigos dos candidatos aprovados no vestibular armazenados no vetor candidato[12], que utilizaremos para demonstração e para simplificar a atividade, somente de 12 posições: candidato = {6,5,3,23,12,34,56,43,31,20,86,29} Observe: i: representa o índice que controla a posição do vetor candidato. X: representa a chave/valor que deseja procurar no vetor A, ou seja, o candidato procurado. candidato: representa o vetor onde será procurada a chave X (local onde será procurado o candidato do vestibular). Realize um teste de mesa para a pesquisa do candidato 86 no vetor candidato. Para a pesquisa, utilize o trecho do algoritmo abaixo identificado pelos valores das suas linhas de 1 a 9. Quantas serão as execuções realizadas da linha 3, para que o algoritmo encontre o valor 86 através da pesquisa sequencial? D. 10. 4. São dados os seguintes trechos de algoritmos de pesquisa de dados para a pesquisa de um elemento em um vetor H de 8 posições. Observe: i: representa o índice que controla a posição do vetor H. ini: representa a posição inicial de pesquisa do vetor H. fim: representa a posição final de pesquisa do vetor H. meio: representa a posição central de pesquisa do vetor H a ser pesquisada a chave. valor: representa a chave/elemento que deseja procurar no vetor H. H: representa o vetor onde será procurada a chave valor. O módulo de leitura dos elementos do vetor e da leitura do valor da chave (valor a ser procurado) não estão implementados, somente o método de pesquisa. Os algoritmos de pesquisa apresentados abaixo retornam para a função chamadora o valor lógico Verdadeiro, se encontrar a chave procurada, ou Falso, se não encontrar. I ordena ini <- 1 fim <- 8 procurado <- falso enquanto (ini <= fim) e não procurado faca meio <- (ini+fim) div 2 se H[meio]= valor entao procurado <-verdadeiro fimse se H[meio] > valor entao fim <- meio – 1 senao ini <- meio +1 fimse fimenquanto se (procurado = verdadeiro) entao retorne(verdadeiro) senao retorne (falso) fimse II i <-1 enquanto (i < 8) e (valor < > H[i]) faca i <- i+1 fimenquanto se (valor = H[i]) entao retorne(verdadeiro) senao retorne (falso) fimse III i <- 1 H[8] <- valor enquanto (valor < > H[i] ) faca i <- i+1 fimenquanto se (i < 8) entao retorne(verdadeiro) senao retorne(falso) fimse Analise cada um dos métodos descritos nas alternativas acima e identifique qual o método representado nas alternativas I, II e III, respectivamente. A. Pesquisa binária, sequencial e sequencial com sentinela. 5. Considere o seguinte algoritmo em pseudocódigo: ,algoritmo "Pesquisa_altera_Dados" var f: vetor[1..10] de inteiro c, i: inteiro procedimento lerCliente inicio para i de 1 ate 10 passo 1 faca escreva("Valor(",i,"): ") leia(f[i]) fimpara fimprocedimento procedimento pesquisa (var conta:inteiro) inicio para i de 1 ate 10 passo 1 faca se (f[i]<0) entao f[i]<- 1 conta <- conta+1 fimse fimpara fimprocedimento procedimento imprimir inicio escreval() escreval("Relatório do Vetor : ") para i de 1 ate 10 passo 1 faca escreval("Valor (" , i,"): ",f[i]) fimpara fimprocedimento // Corpo principal do algoritmo inicio lercliente imprimir pesquisa(c) escreval(" Total = ", c) imprimir fimalgoritmo Analise as alternativas a seguir e, com base no algoritmo apresentado acima, selecione a alternativa INCORRETA. C. O método de pesquisa de dados sequencial com sentinelaseria mais eficiente na solução do problema apresentado. Unidade 3 - REVISAR 1. Os algoritmos de ordenação de dados, além de terem o mesmo objetivo, possuem um ponto em comum em nível de implementação: o fato de se basearem em trocas e comparações. Em relação a essas trocas, o algoritmo que divide a estrutura em blocos, fazendo comparações entre os elementos intervalados por um heap, é o: C. Shellsort. 2. O algoritmo de Heapsort utiliza a estrutura de árvore binária. Contudo, a árvore tem uma estrutura bem específica, que, inclusive, dá nome ao algoritmo. Sobre essa estrutura, assinale a afirmativa correta: E. Em uma árvore binária do tipo heap, o maior elemento fica na raiz da árvore. 3. Depois de uma estrutura ser distribuída em formato de árvore binária e a árvore ter sido configurada para a estrutura de um heap, são realizadas trocas de posições para que a estrutura seja ordenada. Sobre essas trocas de posições, assinale a afirmativa correta: A. A primeira troca que acontece é o elemento que está na raiz da árvore, que troca de lugar com o que está ao final do vetor. 4. Os algoritmos de ordenação de dados são problemas clássicos da Ciência da Computação, cuja implementação já foi feita em diversas linguagens, as quais dispõem de bibliotecas que auxiliam na criação do algoritmo. Sobre os algoritmos de ordenação de dados, analise as afirmativas a seguir e assinale a correta: E. O algoritmo Shellsort realiza a comparação entre dois elementos em um intervalo específico, por exempo, se o intervalo é 2, irá comparar 1 e 4. 5. Com relação aos algoritmos de ordenação de dados, analise as afirmativas. I. Heapsort utiliza árvores binárias para realizar a ordenação. II. Insertionsort seleciona um valor de intervalo entre valores e, então, faz a ordenação de dados comparando valores que estão nesse intervalo. Por exemplo, intervalo 2, compara 0 e 3. III. Para estruturas pequenas, os algoritmos de ordenação por inserção têm tempo de execução mais rápido que os de ordenação por intercalação (Mergesort). IV. Uma estrutura 3-6-7-5-8, ao comparar o elemento 7 com o 5, será feita uma troca e a estrutura será 3-6-5-7-8, sendo que o próximo processo é comparar o elemento 7 com o 8, segundo Insertionsort. V. Para transformar uma árvore binária em heap, quando um filho tem valor maior que o pai, é realizada uma troca de lugares. Se os dois filhos forem maiores do que o pai, a troca seré feita com o maior filho. Agora, assinale a alternativa que contém as afirmativas corretas: B. I, III e V. Unidade 4 1. O que é uma árvore binária? C. É um caso especial de árvore em que nenhum nodo tem grau superior a 2, isto é, nenhum nodo tem mais que 2 filhos. 2. Que tipos de dados podem ser armazenados no nó de uma árvore binária? D. Qualquer tipo de dado, desde que esse dado esteja definido na estrutura que será usada para representar o nó. 3. Qual a altura da árvore a seguir? A. 4. 4. Qual o nó raiz e os nós folha desta árvore binária? C. O nó raiz é A, e os nós folha são D, E e F. 5. Qual a diferença entre uma árvore e uma árvore binária? C. Uma árvore é uma estrutura hierárquica que não limita a quantidade de filhos que os nós pais podem ter, e em uma árvore binária os nós pais podem ter 2, 1 ou 0 filhos. Unidade 5 1. O algoritmo de substituição de páginas FIFO, utilizando o conceito de filas, é simples de implementar e não requer uso excessivo de memória ou processamento. Seu resultado final é, no entanto, limitado por essa simplicidade, visto que o algoritmo não utiliza o padrão de acesso a páginas que já estão na memória para definir qual página será substituída quando ocorre falta de página. Considere que há espaço na memória principal para manter 4 páginas em dado instante de tempo. As páginas são solicitadas na seguinte ordem: 9, 5, 9, 7, 6, 9, 6, 9, 1. Usando-se o algoritmo FIFO puro, assinale a alternativa que contém as páginas que estão na memória principal após essa sequência de solicitações. A. 5, 7, 6, 1. 2. O algoritmo da segunda chance é uma evolução do algoritmo FIFO puro para seleção de página a ser substituída, usando pelo menos a informação de que a página foi ou não usada desde a última rodada de substituição. Sua implementação é ineficiente devido à necessidade de mover a página do início para o final da fila, caso a página tenha sido usada. O algoritmo do relógio tem o mesmo resultado do algoritmo da segunda chance, mas com uma performance melhor, por meio do uso de um ponteiro em vez da movimentação das páginas. Assinale a alternativa que explica o uso do ponteiro no algoritmo do relógio. C. Considerando a memória como uma lista circular, o ponteiro aponta para o início da lista. Ao iterar na lista devido ao uso das páginas, apenas o ponteiro se move para indicar qual é o novo início da lista. 3. O algoritmo LRU usa a informação de qual página foi menos recentemente utilizada para poder efetuar a decisão da página que será substituída. Dessa forma, espera-se que páginas que recentemente foram lidas sejam mantidas, pois provavelmente serão lidas outra vez em breve. O algoritmo utiliza uma estrutura de dados auxiliar que mantém a informação da ordem em que as páginas atualmente em memória foram utilizadas. Assinale a alternativa que explica corretamente o motivo do algoritmo LRU geralmente selecionar páginas mais adequadas do que o algoritmo da segunda chance. A. O algoritmo LRU mantém a ordem de uso de todas as páginas atualmente em memória, enquanto os algoritmos da segunda chance ou do relógio perdem a informação de leitura de uma página quando movem a página para o fim da fila. 4. O algoritmo de substituição de página ótimo seleciona a página que irá demorar mais a ser usada novamente para ser substituída, garantindo o menor número possível de faltas de página durante a execução. Esse algoritmo, no entanto, não é utilizado em nenhuma situação. Assinale a alternativa que explica o motivo de esse algoritmo não ser usado. D. É impossível saber exatamente quando todas as páginas serão usadas novamente. 5. O algoritmo NRU é simples de entender e implementar, não precisando de armazenamento extra relevante; em várias situações, tem um desempenho de escolha das páginas aceitável. Ele leva em consideração, separadamente, as marcações de leitura e escrita das páginas que estão em memória, podendo ser justo ao selecionar a página a ser substituída. Escolha a alternativa correta sobre a ordem de escolha usada pelo algoritmo NRU. E. Páginas não recentemente lidas, mas recentemente escritas, serão selecionadas para substituição antes das páginas recentemente lidas, mas não recentemente escritas. Unidade 6 1. String, ou cadeia de caracteres, é um tipo de dado. Diante dessa afirmação, analise as alternativas a seguir e assinale a falsa. D. Todas as operações realizadas com números são aplicáveis ao tipo string. 2. Observe o seguinte algoritmo em pseudocódigo: algoritmo “cidades” var cidade: caractere inicio escreva(“Digite - cidade”) leia (cidade) escolha cidade caso “Caxias do Sul”, “Farroupilha”, “Porto Alegre”, “Bage” escreval(“Cidade do Rio Grande do Sul”) caso “Florianopolis”, “Blumenal”, “Rio do Sil”, “Lages” escreval(“Cidade de Santa Catarina”) outrocaso escreval(“É de outro estado ou não cadastrada”) fimescolha fimalgoritmo Analise as alternativas a seguir e selecione a falsa. E. O algoritmo apresenta diversos erros de sintaxe e de lógica, portanto, não compilaria no VisuAlg 3. Observe o seguinte algoritmo em pseudocódigo: algoritmo “testes” var //parte 1 palavra: vetor[1..20] de caracte X: caracter K, T, N, L : inteiro inicio escreva(“Digite o tamanho da palavra (Caracteres)”) leia (T) escreva(“Digite - letra (enter): ”) //parte 2 para K de 1 ate T passo 1 faca leia (palavra[K]) fimpara //parte 3 N <- T L <- div 2 para K de 1 ate L passo 1 faca X<- palavra[K] palavra[K] <- palavra [N] palavra [N]<- X N <- N-1 fimpara //parte 4 para K de 1 ate T passo 1 faca escreva(palavra[K]) fimpara fimalgoritmo C. Na //parte3, realiza-se o processo para inverter os caracteres da string. 4. Observe o seguinte algoritmo em pseudocódigo: algoritmo “cripto” var palavra: vetor[1..10] de caracter X: caracter K, T, N, L : inteiro inicio escreva(“Digite o tamanho da palavra (Caracteres)”) leia (T) escreva(“Digite - letra (enter): ”) para K de 1 ate T passo 1 faca leia (palavra [K]) fimpara para K de 1 ate passo 1 faca escolha palavra [K] caso “z” palavra[K] <- “A” caso “y” palavra[K] <- “R” caso “w” palavra[K] <- “O” caso “k” palavra[K] <- “T” caso “x” palavra[K] <- “G” caso “t” palavra[K] <- “L” caso “b” palavra[K] <- “I” caso “d” palavra[K] <- “M” fimescolha fimpara para K de 1 ate T passo 1 faca escreva (palavra[K]) fimpara fimalgoritmo Assinale a alternativa que contém a sequência correta de caracteres de entrada de dados para que o programa escreva, ao final, a palavra ALGORITMO. C. ztxwybkdw. 5. As linguagens de programação disponibilizam diversas funções para manipulação de strings. Selecione a alternativa a seguir que não representa uma dessas funções. C. Corrigir(texto): função que verifica a ortografia e corrige o conteúdo da variável. Unidade 7 1. Baseando-se no conceito de lista dinâmica encadeada, marque a alternativa correta em relação à inclusão de elementos: C. A inclusão de elementos deve ocorrer em qualquer posição da lista. 2. Em relação às listas simplesmente encadeadas, leia as alternativas a seguir e indique a correta: D. Alocam apenas a memória necessária para armazenar os elementos da lista. 3. Marque a alternativa correta em relação às vantagens de uma lista dinâmica: A. Permitem aumento e redução do tamanho da lista em tempo de execução. 4. Analise o seguinte código baseado na linguagem C e marque a alternativa que representa o seu significado: nodo *item= (nodo *) malloc(sizeof(nodo)); nodo *no= L->prox; while(no->prox != NULL) { no= no->prox; } no->prox = item; B. Adiciona um novo elemento no final da lista. 5. Levando em consideração os conceitos de uma lista simplesmente encadeada, assinale a alternativa que melhor representa a sua utilização: C. Listas grandes, com muitas inserções e em qualquer posição. Unidade 7 1. Classificação de dados é o processo de encontrar um modelo que descreva as diferentes classes presentes em um conjunto de dados, ou seja, extrair informações de um conjunto de dados por meio de categorização. Os métodos elencados a seguir são usados na classificação em ciência dos dados. Associe-os corretamente à sua definição: I. Classificação por regras. II. Árvore de decisão. III. SVM (Suport Vector Machine). IV. Algoritmos genéticos. ( ) Representação do conhecimento a partir de um número finito de classes. Caracteriza-se pelo uso de algoritmo com complexidade polinomial, mas, à medida que o aprofundamento cresce, ele passa a ser considerado um problema NP-completo. ( ) Similar à associação, visto que tem o seguinte formato: SE condição ENTÃO conclusão, cujo objetivo é criar pares de registros que têm similaridade. A complexidade dos seus algoritmos é determinada pelo tamanho do banco de dados de entrada. ( ) Técnica baseada na teoria da evolução, que considera que a população inicial é aleatória e a seguinte é originada a partir da evolução da anterior. A complexidade de algoritmos usados para sua implementação se refere ao espaço de memória e ao tempo de máquina. ( ) Inclui algoritmos utilizados para classificação de dados em duas classes — cujos resultados apresentados com experimentos contêm altos índices de assertividade — e considerados uma aplicação do problema de busca e da classe NP-completo, pois têm a característica de tratar grande número de variáveis. Assinale a alternativa que apresenta a ordem correta de preenchimento das lacunas, de cima para baixo: B. II – I – IV – III. 2. O aprendizado de máquina (ou learning machine) é aplicado no processo de indução, que consiste em um conjunto de treinamento de um classificador para previsão das classes do domínio para o qual foi treinado. As técnicas de aprendizado de máquina podem ser classificadas em dois tipos de paradigmas: aprendizado supervisionado e aprendizado não supervisionado. Com base na utilização de aprendizado de máquinas para problemas de classificação, analise as seguintes asserções e a relação proposta entre elas: I. O aprendizado supervisionado consiste no treinamento a partir de uma pré-categorização dos dados, ou seja, exemplos que são compostos pelo objeto de entrada e o valor de saída esperado. PORQUE II. O treinamento do algoritmo acontece a partir da análise dos dados de treinamento para produção de uma saída inferida, podendo, posteriormente, ser aplicado para classificação de outros dados de entrada do mesmo domínio. A respeito dessas asserções, assinale a alternativa correta: B. As asserções I e II são proposições verdadeiras, e a II justifica a I. 3. Entre os modelos de regressão, os modelos de regressão linear são considerados os mais importantes e os mais difundidos, com aplicações nas mais diversas áreas. Sobre essa temática, analise as afirmativas a seguir e classifique-as em verdadeiras (V) ou falsas (F): ( ) Os modelos de regressão linear podem ser empregados para vários tipos de predição, porém, por terem complexidade exponencial, sua solução deve ser reduzida a um problema de complexidade NP-completo. ( ) Os modelos de regressão linear podem ser empregados na predição, mas seus algoritmos têm tempo de execução polinomial de ordem O(3n). Para problemas de estimação com vários dados, eles não se aplicam. ( ) Os modelos de regressão linear têm uma abordagem que busca adaptar todos os dados de treinamento a uma única função paramétrica. Eles geralmente usam algoritmos de complexidade muito simples, sendo considerados problemas de classe P. ( ) Nos modelos de regressão linear, ao implementar um algoritmo, é necessário identificar que o algoritmo demanda maior complexidade computacional para instâncias esparsas. Assinale a alternativa que apresenta a ordem correta de preenchimento das lacunas, de cima para baixo: B. F – F – V – V. 4. Em Big Data, os dados aparecem em várias formas, estando geralmente depositados na forma de textos, imagens, vídeos, sons, tabelas, listas, sequências e séries, por exemplo. São muitos os dados que hoje são obtidos por meio de redes sociais, sistemas de sensoriamento e de outras diferentes fontes, tendo ainda uma grande forma de organizá-los e armazená-los. Uma dessas formas, talvez a mais conhecida e importante delas, são os dados estruturados. Sobre os dados estruturados, analise as seguintes afirmativas: I. Os dados estruturados são encontrados em banco de dados relacionais (que contém dados como vídeos, comentários em redes sociais, e-mails, entre outros), são eficientes quanto à recuperação e não têm componentes de identificação de processamento. II. Dados estruturados são dados que têm estrutura regular e repetitiva, seguindo um padrão comum adotado pelas ciências da computação, estatística e ciência dos dados. Qualquer outro dado, para ser inserido, deve se adequar aos critérios estabelecidos. III. A forma de organização dos dados preferida na ciência dos dados é a forma tabular, na qual as variáveis são dispostas nas linhas e as observações são dispostas nas colunas; isso facilita a leitura dos dados pelos algoritmos, diminuindo a complexidade computacional. IV. A forma de organização dos dados estruturados em ciência de dados possibilita otimização na capacidade de produção e nos algoritmos utilizados, sendo um processo rápido quando se trabalha somente com imagens ou vídeos. Está correto o que se afirma em: C. II e III. 5. Segundo empresários e gestores de grandes corporações, a maioria das organizações é muito tolerante com dados incorretos. Resolvendo ou tratando os dados, o problema geralmente não é difícil, mas é preciso coragem e persistência para alterar essa situação. Uma melhor qualidade dos dados depende de mais eficácia dos métodos usadosna ciência dos dados para armazenar, explorar e tratar os dados, a fim de se obter uma solução para determinado problema. A classificação dos problemas é uma etapa crucial para que não haja obstáculos na observação dos dados e na obtenção dos resultados. No que tange aos modelos de aprendizado de máquinas aplicados à ciência de dados, leia o excerto a seguir: Quando a variável a ser predita é __________, o problema é considerado de classificação, pois se deseja __________ um valor que não é __________, já que a classificação utiliza aprendizagem supervisionada, e seu algoritmo tem o objetivo de aprender uma regra que consiga __________ as entradas nas saídas corretamente. Assinale a alternativa que preenche corretamente as lacunas: A. qualitativa – predizer – quantitativo – mapear.
Compartilhar