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

A Importância do Controle de Estoques para o Sucesso do Seu Negócio

O controle de estoques é um processo crucial para qualquer empresa que lida com produtos físicos, independentemente do seu porte ou segmento de atuação. Ele garante a visibilidade completa sobre a movimentação de itens, desde a entrada no armazém até a venda para o cliente final. Mas qual a real importância desse processo? 1. Otimização do Capital de Giro: Estoque excessivo: Capital parado, sem gerar retorno financeiro, além de custos extras com armazenagem e depreciação dos produtos. Estoque insuficiente: Perda de vendas, insatisfação dos clientes e possíveis danos à reputação da marca. O controle de estoques eficaz encontra o equilíbrio ideal, evitando esses problemas e liberando recursos para investimentos mais estratégicos. 2. Redução de Custos: Combate à obsolescência: Identificação e descarte de produtos com baixa rotatividade, evitando prejuízos. Negociação com Fornecedores: Poder de barganha para obter melhores preços e prazos de pagamento, otimizando o custo das compr

Porque Utilizar Gateway de Pagamentos em Sua Empresa

    Qualquer loja online ou física, independente do ramo de atuação, precisa oferecer ao cliente diversas formas de pagamento. E, claro, com um sistema de segurança altamente eficiente para a proteção de informações dos consumidores para que eles façam suas compras sem se preocupar com crimes eletrônicos ou vazamento de informações.     Para atender essa demanda com estabilidade, a melhor alternativa para qualquer empresa certamente é o   gateway de pagamento . Neste post você vai entender o por quê.  O que é um gateway de pagamento? Um gateway nada mais é do que o sistema utilizado pelos e-commerces (e lojas físicas) para efetuar a transmissão de dados entre os lojistas, bancos e clientes. Os gateways são usados pelas companhias para o processamento de pagamentos do cartão de crédito e Boletos Bancários. É como se fosse um terminal de cartão de crédito que pode ser facilmente encontrado em lojas de varejo e de comércio. Para que você compreenda melhor como funcionam os gateway

Derrubar usuários Linux (Debian Servidores) Ociosos

Derrubar um Usuário no servidor Linux pela linha de comando: Logue como root ou use "sudo" se tiver configurado no arquivo sudoers do linux. Use o "W" para ver os usuários online no servidor. # w Para ver qual processo quer derrubar utilize o seguinte comando: # ps -u <nome_usuario> Encontre o PID no resultado do comando acima e utilize o seguinte comando: # kill -9 <PID> Agora se você é um administrador de ERP na empresa, e quer deixar esse processo automatizado, utilize o scrypt abaixo fornecido por nosso amigo, "Guilherme Moura de Souza": Baixe aqui :  mataUsuarioOcioso.sh Até a Próxima.