Baixe o app para aproveitar ainda mais
Prévia do material em texto
Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 • ••••• Pergunta 1 1 em 1 pontos Conhecer detalhes funcionamento algoritmos mais tradicionais é importante, para que os de dos as por na ideias implementadas eles possam ser aproveitadas solução problemas correlatos. de Esse é o caso das estratégias empregadas ordenação linear dados memória.na de em Considerando esse contexto, analise asserções a seguir e a relação proposta entre elas.as I. Dado um conjunto de n inteiros intervalo 0 a k, é possível construir algoritmo no de um que aprimore a entrada em um tempo Θ(n + k) e que responda quantos númer existem intervalo os no [a ... b] em um tempo O(1). Porque: II. O aprimoramento da entrada, pré-processamento, pode ser feito com base ou no algoritmo counting sort e a obtenção da quantidade de números no intervalo informado acontece por de meio uma operação computacional elementar. Resposta Selecionada: As asserções I e são proposições verdadeiras, e a é uma justificativa II II correta da I. Resposta Correta: As asserções I e são proposições verdadeiras, e a é uma justificativa II II correta da I. Comentário da resposta: Resposta certa. O algoritmo pode começar com os primeiros passos executados pelo counting sort. Nesse caso, três primeiros laços atuarão os no aprimoramento entrada, o demandará custo + k), assim como o da que um Θ(n algoritmo counting sort. Logo, o vetor auxiliar utilizado pelo algoritmo, C, conterá cada posição i ] o número elementos menores iguais a i em C[ de ou no vetor original. Para obter a quantidade números presentes intervalo de no [a ... b], uma operação elementar subtração a - 1 ] pode ser executada. de C[ b ] - C[ Nesse caso, ela demandará tempo O(1).um ••••• Pergunta 2 1 em 1 pontos A ordenação memória é uma operações mais comuns executadas por de dados em das algoritmos computacionais. Embora existam diferentes estratégias para esse tipo de operação, poucas delas conseguem alcançar tempo computacional linear.um Algoritmo Ordenação Linear Simplificada Entrada: Um vetor A n inteiros cujos valores são 1 de ou 2. Saída: Vetor A com valores ordenados forma não-decrescenteos de 1. Defina k 0← 2. para para para para para i 1 n ← até façafaçafaçafaçafaça 3. sesesesese A[ i ] = k 1, entãoentãoentãoentãoentão ← k + 1 Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 4. para ipara ipara ipara ipara i ← 1 k até façafaçafaçafaçafaça 5. A[ i ] ← 1 6. k + 1 para para para para para i ← até n façafaçafaçafaçafaça 7. A[ i ] ← 2 8. Aretornaretornaretornaretornaretorna Nesse contexto, considerando o algoritmo apresentado, analise as afirmativas a seguir e assinale V para a(s) verdadeira(s) e F para a(s) falsa(s). I. ( ) Para vetor A contendo m posições com valor 1 e n posições com valor o algoritmo um 2, realiza m + n operações atribuições vetor de ao A. II. ( ) O algoritmo é estável. III. ( ) Para qualquer sequência valores aceitos pelo algoritmo, primeiras posições vetor de as do A serão ocupadas pelo valor 2. IV. ( ) O maior valor possível para k é n. Agora, assinale a alternativa apresenta a sequência correta:que Resposta Selecionada: V, V, V. F, Resposta Correta: V, V, V. F, Comentário da resposta: Resposta certa. Para uma entrada composta m valores 1 e n valores o de 2, primeiro laço algoritmo vai finalizar com o valor do de k = m e, portanto, o segundo laço vai realizar m atribuições vetor O último laço realiza tantas ao A. atribuições vetor A quanto o número valores 2 presentes entrada, ao de na ou seja, n atribuições. Portanto, serão realizadas m + n atribuições a Como A. os elementos c mesmo valor têm sua ordem alterada vetor saída, o om não no de algoritmo é dito estável. O segundo laço algoritmo é responsável pela do atribuição das primeiras posições do vetor com valor 1. Finalmente, como o valor k é incrementado para cada valor 1 encontrado vetor, o seu maior valor no possível acontece quando a entrada é composta apenas valores Neste de 1. caso, k = n. ••••• Pergunta 3 0 em 1 pontos O algoritmo counting sort tem larga aplicabilidade pelo seu desempenho linear na ordenação de dados em memória. No entanto, o maior consumo de espaço em memória pode restringir seu uso em de determinados cenários. Outra característica é sua estabilidade quanto posicionamento ao elementos com o mesmo valor. Considerando que vetor A n posições é passado como parâmetro para o um de algoritmo counting sort e dois elementos posições i e j têm o mesmo valor k (A[ i ] = que nas A[ j ] = k), assinale a alternativa correta quanto funcionamento algoritmo. Assuma ao do que um vetor B é retornado pelo algoritmo. Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 Resposta Selecionada: Como A[ i ] = A[ j ] vetor no de origem, então as posições relativas entre esses elementos podem ser alteradas vetor saída no de B. Resposta Correta: O algoritmo é estável, porque a posição C[ k ] do vetor auxiliar C é decrementada após a alocação e é mais incrementada.de k em B, não Comentário da resposta: Resposta incorreta. Analise como o algoritmo counting sort executa a ordenação vetor A qualquer contendo dois mais valores iguais. de um ou Observe como o vetor auxiliar C é usado para posicionar elementos os em B. ••••• Pergunta 4 1 em 1 pontos Uma estratégia muito utilizada desenvolvimento algoritmos recursivos é aplicar a técnica no de de divisão e conquista. Nesse caso, o problema original é dividido problemas menores, em os quais são solucionados e, posteriormente, combinados para formar a solução do problema inicial. Um exemplo é o problema multiplicação matrizes quadradas (mesmo número linhas e de de de colunas), cujo algoritmo iterativo é apresentado a seguir: Algoritmo MultiplicaMatrizQuadrada Entrada: Duas matrizes A e B quadradas manho nde ta Saída: Matriz C = A × B 1. Defina uma matriz C quadrada de tamanho n 2. paraparaparaparapara i 1 até n ← faça 3. j 1 até n para para para para para ← faça 4. cij ← 0 5. k 1 até n paraparaparaparapara ← faça 6. cij ← cij + a × bik kj 7. Cretornaretornaretornaretornaretorna Suponha, então, uma versão recursiva desse algoritmo, chamada , pode ser MultiplicaRecursivoMultiplicaRecursivoMultiplicaRecursivoMultiplicaRecursivoMultiplicaRecursivo obtida por meio divisão matrizes B e C 4 matrizes tamanho n/2 (assuma n da das A, em de que é potência exata 2), conforme imagem a seguir:de Considerando essas informações e conteúdos estudados, analise seguintes afirmativas.os as I. O algoritmo MultiplicaRecursivo terá desempenho superior que a versão iterativa apresentada. II. O caso base do algoritmo será sesesesese n = 1, então retornaentão retornaentão retornaentão retornaentão retorna c11 = a × b11 11. Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 III. Serão necessárias 8 chamadas recursivas ao algoritmo MultiplicaRecursivo, para a construção de as todas submatrizes Cij. IV. A etapade divisão das matrizes A, B e C em submatrizes pode impactar no desempenho geral do algoritmo. Está correto apenas o afirma em:que se Resposta Selecionada: II e III. Resposta Correta: II e III. Comentário da resposta: Resposta certa. Considerando a estratégia divisão matrizes originais de das em 4 submatrizes, o algoritmo recursivo pode ser descrito como a seguir: Algoritmo MultiplicaRecursivo Entrada: Duas matrizes A e B quadradas tamanho nde Saída: Matriz C = A × B 01. de Defina uma matriz C quadrada tamanho n 02. n = 1 sesesesese entãoentãoentãoentãoentão 03. c = a × bretornaretornaretornaretornaretorna 11 11 11 04. sesesesese não não não não não 05. as em Particionar matrizes B e C A, 4 submatrizes 06. C = MultiplicaRecursivo(A ) + MultiplicaRecursivo(A11 11, B11 12, B21) 07. C = MultiplicaRecursivo(A ) + MultiplicaRecursivo(A12 11, B12 12, B22) 08. C = MultiplicaRecursivo(A ) + MultiplicaRecursivo(A21 21, B11 22, B21) 09. C = MultiplicaRecursivo(A ) + MultiplicaRecursivo(A22 21, B12 22, B22) 10. Cretornaretornaretornaretornaretorna Como cada uma das submatrizes tem n entradas, cada uma das 4 adições 2/4 de submatrizes demanda tempo Logo, a equação recorrência um Θ(n2). de que descreve o algoritmo é dada por: • T(1) = se n = 1Θ(1), • T(n) = 8T(n/2) + se n > 1Θ(n2), Pela aplicação teorema mestre, a solução fechada recorrência é T(n) = do da Θ(n3), ou seja, não diferença desempenho entre ambas versões há de do algoritmo. Além disso, como a etapa divisão matrizes é pior de das Θ(n2), no caso, ela não tem impacto sobre a complexidade geral algoritmo.do ••••• Pergunta 5 1 em 1 pontos O conceito recursão é antigo e era explorado muito antes desenvolvimento de já do da computação. entanto, até hoje, vários problemas são modelados com funções recorrência No de e estas dão subsídio desenvolvimento várias soluções computacionais. Uma das ao de recorrências antigas, usadas pela civilização egípcia, é conhecida como multiplicação por duplicação. A equação recorrência a define é descrita a seguir:de que • x · y = x = 00, se • x · y = + y), se x é par⌊x/2⌋ · (y • x · y = se x é ímpar⌊x/2⌋ · + y) + y, (y Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 Considerando essa equação recorrência, assinale a alternativa que indica o algoritmo de recursivo implementa corretamente a multiplicação por duplicação. O algoritmo que Multiplicador recebe como entra dois inteiros x e y a serem multiplicados, e retorna o valor da de x · y. Resposta Selecionada: Algoritmo Multiplicador 1. 0, x = sesesesese entãoentãoentãoentãoentão 2. 0retornaretornaretornaretornaretorna 3. sesesesese não não não não não 4. x’ ← ⌊ ⌋x/2 5. y’ ← y + y 6. prod Multiplicador ← (x’, y’) 7. x é ímpar, sesesesese entãoentãoentãoentãoentão 8. prod prod + y← 9. prodretornaretornaretornaretornaretorna Resposta Correta: Algoritmo Multiplicador 1. 0, x = sesesesese entãoentãoentãoentãoentão 2. 0retornaretornaretornaretornaretorna 3. sesesesese não não não não não 4. x’ ← ⌊ ⌋x/2 5. y’ ← y + y 6. prod Multiplicador ← (x’, y’) 7. x é ímpar, sesesesese entãoentãoentãoentãoentão 8. prod prod + y← 9. prodretornaretornaretornaretornaretorna Comentário da resposta: Resposta certa. O pseudocódigo algoritmo recursivo implementa a do que recorrência é descrito a seguir: Algoritmo Multiplicador 1. 0, x = sesesesese entãoentãoentãoentãoentão 2. 0retornaretornaretornaretornaretorna 3. sesesesese não não não não não 4. x’ ← ⌊ ⌋x/2 5. y’ ← y + y 6. prod Multiplicador ← (x’, y’) 7. x é ímpar, sesesesese entãoentãoentãoentãoentão 8. prod prod + y← 9. prodretornaretornaretornaretornaretorna ••••• Pergunta 6 1 em 1 pontos Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 Os conceitos fundamentam a construção que de estratégias gulosas são importantes para que uma modelagem precisa possa ser empregada durante a proposição soluções. Essa análise de deve preceder, inclusive, a etapa projeto algoritmo guloso.de de um Nesse contexto, dado conjunto { x , x , x } pontos reta números reais, analise um 1 2 …, n de na dos as asserções a seguir e a relação proposta entre elas. I. É possível projetar uma estratégia gulosa para encontrar o menor conjunto de intervalos fechados comprimento 1 (um) contendo todos pontos.de os Porque: II. A cada etapa da estratégia gulosa uma escolha local ótima pode ser feita de modo a garantir a tenção uma solução final ótima.ob de Resposta Selecionada: As asserções I e são proposições verdadeiras, e a é uma justificativa II II correta da I. Resposta Correta: As asserções I e são proposições verdadeiras, e a é uma justificativa II II correta da I. Comentário da resposta: Resposta certa. Considere o intervalo mais à esquerda. Sabemos que esse intervalo deve conter o ponto mais à esquerda. Então, sabemos que seu lado esquerdo é exatamente o ponto mais à esquerda. Portanto, simplesmente removemos qualquer ponto n pertença conjunto informado e que ão ao que esteja a uma unidade distância ponto, uma vez que eles estão contidos de do neste único intervalo. Em seguida, nós apenas repetimos esse processo até que todos pontos sejam cobertos. Como cada etapa uma escolha os em há claramente ótima onde colocar o intervalo mais à esquerda, essa solução de final é ótima. Portanto, ambas afirmativas são verdadeiras e a justifica a as II primeira. ••••• Pergunta 7 1 em 1 pontos O algoritmo counting sort constitui uma alternativa eficiente para a ordenação dados de em memória, que ele demanda tempo computacional ordem entanto, ele faz já um da de Θ(n). No maior uso do espaço em memória, por precisar que vetores auxiliares sejam criados durante sua execução. Considerando a execução algoritmo sobre vetor A = {4, do um 1, 5, 0, 1, 6, 5, 1, 5, 3}, em que todos valores são menores os que k = 7, analise afirmativas a seguir.as I. Após o primeiro laço que inicializa cada posição do vetor auxiliar C com zero, o segundo laço finaliza com o vetor C = { 1, 3, 0, 1, 1, 3, 1 }. II. Ao término terceiro laço, o vetor auxiliar C definido corpo do no do algoritmo terá os seguintes valores armazenados {0, 3, 3, 4, 5, 8, 9}. III. A primeira iteração último laço algoritmo faz com que o valor 3 seja atribuído à posição do do 4 vetor do A. Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 IV. A posição 4 corresponde à última posição vetor A a ser preenchida pelo laço final do do algoritmo. Está correto apenas o afirma em:que se Resposta Selecionada: I, II e III. Resposta Correta: I, II e III. Comentário da resposta: Resposta certa. O segundo laço do algoritmo é responsável por contabilizar a frequência cada valor vetor Então, como existem: 1 ocorrência 3 de do A. de 0; ocorrências 0 ocorrências 1 ocorrência 1 ocorrência 3 de 1; de 2; de 3; de 4; ocorrências 5 e 1 ocorrência o vetor C terá seguintes valores, de de 6, os ao término segundo laço {1, 1}. O terceiro laço realiza uma soma do 3, 0, 1, 1, 3, acumulada cada posição. Porém, como o primeiro índice vetor é de do 0, as somas devem ser decrementadas Neste caso, término desse laço,o de 1. ao valor C será {0, de 3, 3, 4, 5, 8, 9}. A primeira iteração último laço posiciona do o elemento 3 quarta posição que na de A, já C[ 3 ] = 4. O último valor a ser posicionado vetor A é o elemento Mas como no 4. C[ 4 ] = 5, ele é ocado al na posição 5 vetor.do ••••• Pergunta 8 0 em 1 pontos Um típico problema que algoritmos gulosos são aplicados é conhecido como em agendamento para minimizar o tempo médio finalizaçãode . Várias estratégias têm sido propostas para oferecer uma solução tempo computacionalmente viável. Suponha conjunto S = { a , a , em um 1 2 …, a } n de tarefas, cada tarefa a demanda p unidades em que i i de tempo para ser concluída a partir do momento em que é iniciada. As tarefas podem ser executadas apenas uma por vez. Seja ci o tempo finalização tarefa a , isto o tempo que a tarefa a completa seu de da i é, em i processamento. Considerando o objetivo é minimizar o tempo médio para finalização todas tarefas, que de as ou seja, minimizar , analise afirmativas a seguir e assinale V para a(s) verdadeira(s) e F para a(s) as falsa(s). I. ( ) Se as tarefas forem ordenadas pela quantidade de unidades de tempo para serem finalizadas (p ),i então a complexidade algoritmo será O(n log n).do II. ( ) Um algoritmo guloso que processa as tarefas em ordem crescente p obtém a solução de i ótima para qualquer conjunto tarefas.de III. ( ) Considerando S composto apenas s tarefas a e ade dua 1 2 com p = 3 e p = o tempo 1 2 5, médio finalização S é independente ordem execução das tarefas.de de da de IV. ( ) Uma solução gulosa, baseada no tempo de processamento cada tarefa, apresenta uma de estrutura local ótima cada iteração.em Agora, assinale a alternativa apresenta a sequência correta.que Resposta Selecionada: Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 F, F, V, V. Resposta Correta: V, V, V. F, Comentário da resposta: Resposta incorreta. Observe como a estratégia gulosa proposta nas afirmativas funciona e verifique ela conduz a uma solução ótima para se qualquer valor informado. Além disso, a estratégia gulosa ordenar tarefas de as por do tempo processamento, de menor para o maior, e executá-las nessa ordem conduz a uma solução ótima para qualquer entrada. fato, é preciso De observar o problema exibe uma subestrutura local ótima: se executarmos que a primeira tarefa uma solução ótima, obteremos uma solução ótima, em executando tarefas restantes uma forma que minimize o tempo médio as de de conclusão. ••••• Pergunta 9 1 em 1 pontos Algoritmos gulosos constituem uma poderosa ferramenta para a solução de problemas em um tempo computacionalmente viável. entanto, dependendo características problema, No das do estratégias gulosas não são capazes alcançar soluções ótimas. de Um exemplo é o problema de devolver valor (troco) com o uso menor quantidade moedas possível.um da de Algoritmo Troco Moedasem Entrada: Um inteiro n e conjunto moedas c ) comum de (c1, c2, …, r c .1 > c > > c2 … r Saída: Conjunto moedas , d d ) tal e k é mínimode (d1 2, …, r que 1. C ← ∅ 2. paraparaparaparapara i = 1, …, r façafaçafaçafaçafaça 3. n cenquantoenquantoenquantoenquantoenquanto ≥ i façafaçafaçafaçafaça 4. C C { c }← ∪ i 5. n n - c← i 6. retorna retorna retorna retorna retorna C Considerando o algoritmo guloso apresentado para esse problema, analise afirmativas a as seguir. I. A execução algoritmo com do os parâmetros (c1 = 20, c = 15, c = 2 3 7, c = 4 1) e n = 22 produz uma solução ótima. II. Para n = e 48 (c1 = 25, c = 10, c = 2 3 5, c = 1), nenhuma moeda c4 3 comporá a solução final. III. A complexidade O(n) algoritmo constitui o melhor desempenho conseguido para esse tipo do de problema. IV. O algoritmo sempre obtém a solução ótima para o conjunto moeda de (c1 = 25, c = 10, c = 2 3 5, c4 = 1). Está correto o que se afirma em: Resposta Selecionada: II e IV. Impresso por davilinares.tlp, E-mail davilinares.tlp@gmail.com para uso pessoal e privado. Este material pode ser protegido por direitos autorais e não pode ser reproduzido ou repassado para terceiros. 07/06/2023, 12:48:05 Resposta Correta: II e IV. Comentário da resposta: Resposta certa. Para entradas = c = c = c = e n = 22, o as (c1 20, 2 15, 3 7, 4 1) algoritmo não produz a solução ótima, já que ele vai retornar o conjunto C = { c1, c4, c } 3 moedas, enquanto a solução ótima é C = { c , c } 2 moedas. 4 de 2 3 de Para entradas n = as 48 e (c1 = 25, c = 10, c = c = 1), a solução produzi 2 3 5, 4 da pelo algoritmo é C = { c , c , c , c , c , c } e contém a moeda c . Embora o 1 2 2 1 1 1 não 3 algoritmo tenha complexidade O(n), uma versão dele com desempenho O(1) pode ser obtida com seguintes operações:as • a1 = ⌊n/c1⌋ e n = n mod cq 1 • a n2 = ⌊ q/c2⌋ e n = n mod cd q 2 • a n3 = ⌊ d/c3⌋ e nk = nq 2 mod c • a4 = nk O conjunto final C será { a × d , a × d , a × d , a × d Finalmente, para o 1 1 2 2 3 3 4 4 }. conjunto moedas = de (c1 25, c = 2 10, c = c3 5, 4 = o algoritmo sempre obtém a 1) solução ótima. ••••• Pergunta 10 1 em 1 pontos Os problemas que precisam ser resolvidos computacionalmente podem ser classificados de acordo com a sua computabilidade. Essa classificação é importante, considerando que ela tem efeito direto sobre a viabilidade construção algoritmo útil cenários práticos.de de um em Considerando essas informações e conteúdos estudados, assinale a alternativa correta a os respeito dessa classificação problemas.de Resposta Selecionada: A descoberta de um algoritmo polinomial para problema -completo um NP pode tornar a igualdade P = verdadeira.NP Resposta Correta: A descoberta de um algoritmo polinomial para problema -completo um NP pode tornar a igualdade P = verdadeira.NP Comentário da resposta: Resposta certa. O problema encontrar uma rota ótima visitando pontos de específicos uma única vez é uma aplicação problema Caixeiro Viajante, do do que é da classe NP. Problemas da classe -difícil satisfazem apenas uma NP condição problemas classe (problemas -completo satisfazem dos da NP NP às duas ou condições e são -difíceis), NP seja, se algoritmo polinomial for um encontrado para ele, então todos problemas poderão ser reduzidos a os NP esse problema, o possibilitará que estes sejam resolvidos tempo que em polinomial.
Compartilhar