Lista de
Exercícios
- Dê o conceito de:
- Algoritmo
R: É uma sequencia de ações executáveis para obtenção de uma solução para um determinado problema. - 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. - Tipo abstrato de dados
R: Pode ser visto como um modelo matemático, acompanhado das operações definidas sobre um modelo.
- 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. - 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 - Cite os tipos de operações que podem ser definidas sobre uma lista.
R: Criar lista, Retirar, inserir, alterar. - 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
- 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. - 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. - 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.
- 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.
- 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. - 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. - 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 .
- 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.
Bom dia, Marcelo! Porque no exercício 13 não existe valores que satisfaçam a condição?
ResponderExcluirDesde já, obrigado!
Boa tarde mestre, e obrigado pelo acesso.
ExcluirObserve 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.
Está errado.
ExcluirA 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.
para n de 14 a 36, A é mais rápido..
ResponderExcluirParabéns ao blog, muito interessante!!
ResponderExcluirLista 1 de Exercícios - Estrutura de Dados
ResponderExcluir1. 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).