Pular para o conteúdo principal

Exercícios Estrutura de Dados - Resolvidos


Lista de Exercícios




  1. Dê o conceito de:
    1. Algoritmo
      R:
      É uma sequencia de ações executáveis para obtenção de uma solução para um determinado problema.
    2. Tipo de dados
      R:
      Conjunto de valores a que uma constante pertence, ou podem ser assumidos por uma variável ou expressão a que podem ser gerados por uma função.
    3. Tipo abstrato de dados
      R:
      Pode ser visto como um modelo matemático, acompanhado das operações definidas sobre um modelo.

  2. Qual a descrição de algoritmos segundo Dijkstra?
    R:
    descreve como uma descrição de um padrão de comportamento, expresso em termos de um conjunto finito de ações.

  3. Descreva o conceito de programar para estrutura de dados.
    R:
    consiste em estruturar dados e construir algoritmos, sendo formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados, representando uma classe especial de algoritmos capazes de serem seguidos por computadores

  4. Cite os tipos de operações que podem ser definidas sobre uma lista.
    R:
    Criar lista, Retirar, inserir, alterar.

  5. Comente sobre os tipos de problemas distintos apresentado por Knuth.
    R:
    Análise de um algoritmo particular: custo ao usar um dado algoritmo para resolver um problema específico, investigar características importantes do algoritmo em questão devem ser investigadas.
Análise de uma classe de algoritmos: qual o algoritmo de menor custo possível para resolver um problema particular? Neste caso, deve ser investigado toda família de algoritmos para resolver um problema específico com a finalidade de identificar o melhor possível, colocando limites à complexidade computacional dos algoritmos pertencentes à classe
  1. Comente sobre as formas de medir os custos de utilização de um algoritmo e levando em consideração que os resultados não devem ser generalizados.
    R:
    Obtendo as medidas desta forma são inadequadas e seus resultados não devem ser generalizados, devido as seguintes objeções: (i) Os resultados dependem do compilador que pode favorecer algumas construções em detrimento de outras; (ii) os resultados dependem do hardware; (iii) quando grandes memória são utilizados, as medidas de tempo dependem deste aspecto.

  2. Cite e comente os três cenários distintos relacionados ao tempo de execução de um algoritmo.
    R:
    Melhor caso(Encontrar o registro rapidamente)
    médio caso(o mais difícil de se precisar) e pior caso(Percorrer todo o arquivo em busca de um registro.

  3. Cite as principais classes de problemas e suas funções de complexidade.
    R:
    As principais classes de problemas possuem as funções de complexidade são descritas abaixo.
f(n) = O(1). Algoritmos de complexidade O(1) são ditos complexidade constante.
  • f(n) = O(log n). Um algoritmo de complexidade O(log n) é dito ter complexidade logarítmica, onde a execução ocorre tipicamente em algoritmos que resolvem um problema transformando-o em problema menores.f(n) = O(n). Algoritmo de complexidade O(n) é dito ter complexidade linear, realizando um pequeno trabalho sobre cada elemento de entrada.
  • f(n) = O(n log n). Este tempo de execução ocorre tipicamente em algoritmos que resolver um problema quebrando–o em problema menores, resolvendo cada um deles independentemente e depois ajuntando as soluções.
  • f(n) = O(n2). Algoritmo de complexidade O(n2) é dito ter complexidade quadrática, são processados aos pares, sendo muitas vezes um anel dentro do outro.f(n) = O(n3). Algoritmo de complexidade O(n3) é dito ter complexidade cúbica e são úteis para resolver pequenos problemas.
f(n) = O(2n). Algoritmo de complexidade O(2n) é dito ter complexidade exponencial e geralmente não são úteis sob ponto de vista prático. São usados em algoritmos de força bruta.
  1. O que caracteriza programas considerados resolvidos e os não resolvidos?
    R:
    são os que existe um função polinomial para solucioná-los, enquanto problemas que não existem uma função polinomial para resolvê-lo é considerado intratável.

  1. Descreva sobre o problema do caixeiro viajante e apresente uma solução para o mesmo.
    R:
    Considere visitar as cidades de forma que sua viagem inicie e termine em uma mesma cidade e cada cidade seja vizitada uma única vez.

  2. Descreva sobre as técnicas de análise de algoritmos.
    R:
    Utiliza matemática discreta, envolvendo contagens ou enumerações dos elementos, envolvendo manipulações de operações.

  3. Cite os princípios a serem seguidos utilizando propriedade sobre notação O.
    R
    : O tempo de execução de um comando / O tempo de execução de uma seqüência de comandos / O tempo de execução de um comando de decisão/ O tempo para executar um anel /Quando o programa possui procedimentos não recursivos .
  1. Suponha dois algoritmos A e B, com funções de complexidade de tempo a(n) = n2 – n + 549 e b(n) = 49n + 49 respectivamente. Determine quais valores de n pertencentes ao conjunto de números naturais para os quais A leva menos tempo para executar do que B.
    R:
    Não exixte valores de n que satisfaça a condição.

Comentários

  1. Bom dia, Marcelo! Porque no exercício 13 não existe valores que satisfaçam a condição?

    Desde já, obrigado!

    ResponderExcluir
    Respostas
    1. Boa tarde mestre, e obrigado pelo acesso.
      Observe que pra qualquer valor que você atribuir a "n" ele nunca irá fazer A ser mais rápido, pelo fato de a função a(n) = n2 - n + 549. A sempre será maior que B, faça um teste pra você conferir.
      Abraço.

      Excluir
    2. Está errado.
      A entre 14 e 36.
      n^2 - n + 549 < 49n + 49
      n^2 - 50n + 500 < 0
      As raízes da equação correspondente, por Baskara:
      n = (50 +/- sqrt(502 - 4*1*500) )/2 =(50 +/- sqrt(2500-2000))/2 = (50 +/- 22.3)/2 . n1 =13.8
      e n2=36.1. Logo, a(n) < b(n) para 13 < n <37, considerando n, números naturais.

      Excluir
  2. para n de 14 a 36, A é mais rápido..

    ResponderExcluir
  3. Parabéns ao blog, muito interessante!!

    ResponderExcluir
  4. Lista 1 de Exercícios - Estrutura de Dados
    1. Construa um programa para ler Código, Descrição, Quantidade e Posição (Corredor, Quadra, Prateleira) de um produto. Use o conceito de estrutura.
    2. Faça uma cópia do programa anterior e altere-o para que possa ler e armazenar em memória 15 fichas de produtos.
    3. Construa uma rotina para receber como parâmetro o Código de um produto e retornar a sua localização quanto ao coredor(C), Quadra(Q) ou Prateleira(P).
    Ex: Localize("001","P") ===> 3 Significa Prateleira 3
    Localize("010","Q") ===> 2 Significa Quadra 2
    4. Construa somente uma rotina que receba o vetor de produtos acima e exiba-o com o seguinte formato:
    CÓDIGO - DESCRIÇÃO----------CORREDOR/QUADRA/PRATELEIRA
    XXXXXX - XXXXXXXXXXXXXX --9/9/9
    XXXXXX - XXXXXXXXXXXXXX --9/9/9
    XXXXXX - XXXXXXXXXXXXXX --9/9/9
    XXXXXX - XXXXXXXXXXXXXX --9/9/9

    5. Construa somente um procedimento que receba o vetor de produtos acima e devolva-o ordenado pelo Código.
    6. Construa rotinas para responder as seguintes questões após a leitura do vetor criado na questão 2:
    a. Quantos produtos tenho na prateleira X?
    b. Qual o total de produtos em Estoque?
    c. Que produto está presente na posição C,Q,P ?
    7. Construa uma rotina que receba o vetor de produtos já ordenado e o Código de um produto. A rotina deverá retornar o numero que indique em que posição o produto está localizado OU ZERO, caso o produto não seja encontrado. (usar o método de pesquisa BINÁRIA).

    ResponderExcluir

Postar um comentário

+ Vistas

Mais uma inovação da Google.

Sabe aqueles filmes em que um cientista possui um laboratório secreto onde faz seus experimentos mais malucos? O Google tem algo parecido, chamado "Google X". A operação foi descoberta e mostrada ao mundo neste domingo (13/11) em uma matéria do New York Times. E é de lá que podem sair duas tecnologias com potencial de mudar a forma como conhecemos os carros atualmente. De acordo com o site Electronista, uma fonte que não quis se identificar afirmou que a empresa planeja construir carros que dispensam a necessidade de motoristas. O Google os fabricaria nos EUA e os venderia para empresas locais que queiram eliminar a figura do condutor de seu quadro de funcionários. A outra invenção do Google X é relacionada à robótica. Máquinas poderiam, por exemplo, substituir os motoristas do Google Street View, encarregados de dirigir pelas cidades enquanto o sistema fotografa as ruas. Na equipe do Google X estão Sebastian Thrun, um dos maiores experts em robótica e inteligência a...

Existe uma fórmula padrão de Calculo de Estoque Mínimo e Máximo?

  Na verdade, não existe uma fórmula única e universal para calcular o estoque mínimo e máximo ideal para uma empresa de varejo, pois diversos fatores influenciam esses valores. No entanto, existem algumas fórmulas e métodos básicos que podem te ajudar a estimar esses níveis de forma eficiente, considerando as características específicas do seu negócio. Fórmula básica para o estoque mínimo: Estoque mínimo = Consumo médio diário x Tempo de reposição Essa fórmula leva em conta a quantidade média de produtos que você vende por dia e o tempo que leva para receber novos produtos do seu fornecedor. O objetivo é garantir que você tenha estoque suficiente para atender à demanda durante esse período de reposição, mesmo que haja imprevistos. Fórmula básica para o estoque máximo: Estoque máximo = Estoque médio + Lote de compra Essa fórmula considera o seu estoque médio, que é a quantidade média de produtos que você costuma ter em estoque, e o tamanho do lote de compra que você costuma fazer. ...

Instalando o novo Gnome 3 no Debian 6

Instalando o novo Gnome 3 no Debian 6 (Atualizado) Vi essa dica em um comentário no site  Br-Linux , e como eu testei e deu muito certo, decidi repassar a dica... Atenção: Faça por sua conta e risco, comigo a instalação ocorreu muito bem, mais isso não impede que em outras situações a instalação não ocorra como esperado.  Para instalar o Gnome 3 no Debian 6, vamos usar os repositórios  unstable e experimental, para isso abra um terminal e como root digite: #nano /etc/apt/sources.list  Adicione as linhas a seguir: #Instavel deb http://sft.if.usp.br/debian/ sid main non-free contrib deb-src http://sft.if.usp.br/debian/ sid main non-free contrib #Experimental deb http://sft.if.usp.br/debian/ experimental main non-free contrib deb-src http://sft.if.usp.br/debian/ experimental main non-free contrib  Agora digite ctrl+o e enter para salvar a configuração, e depois digite: #apt-get update    e para instalar: #apt-get install -t ...