OBSERVAÇÕES: EXERCÍCIOS



Documentos relacionados
Estruturas de Repetição

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Complexidade de Algoritmos

Primeira Prova de Análise e otimização de Código - DCC888 -

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

a) 2 b) 3 c) 4 d) 5 e) 6

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Análise de algoritmos. Parte II

MOQ-14 PROJETO E ANÁLISE DE EXPERIMENTOS LISTA DE EXERCÍCIOS 3

Linguagens de Programação:

Avaliação e Desempenho Aula 1 - Simulação

Resolução de sistemas de equações lineares: Método de eliminação de Gauss

1. Noção de algoritmo

CAPÍTULO O Método Simplex Pesquisa Operacional

7. Funções de Lógica Combinacional. 7. Funções de Lógica Combinacional 1. Somadores Básicos. Objetivos. Objetivos. Circuitos Digitais 03/11/2014

Metodologias de Programação

ATIVIDADE DE MATEMÁTICA (PARA CASA) Data de entrega 18/04/2012

PUC-Rio Desafio em Matemática 15 de novembro de 2008

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Algoritmo e Pseudo-código

2 Limites e Derivadas. Copyright Cengage Learning. Todos os direitos reservados.

Unidade 10 Análise combinatória. Introdução Princípio Fundamental da contagem Fatorial

=...= 1,0 = 1,00 = 1,000...

Programação de Aulas 1º Ano 3º Bimestre De 07/08 a 20/09

OpenPDV: Sistema aberto para gerenciamento de restaurantes

Exercícios de Fixação Aulas 05 e 06

Lista 4 Introdução à Programação Entregar até 07/05/2012

MÉTODO SIMPLEX QUADRO SIMPLEX

Professor: André Rabelo Curso: Engenharia da Computação Disciplina: Lógica Digital Período: 3º Data Entrega: 21/03/2012 Valor: 15 pts Objetivos:

Árvores de Decisão Matemática Discreta

Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo

Calculando seno(x)/x com o interpretador Hall.

Um pouco da História dos Logaritmos

Prof. Adilson Gonzaga. Interface com Displays

Bases Matemáticas. Daniel Miranda de maio de sala Bloco B página: daniel.miranda

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Vírgula flutuante Aula 6

Teste de Hipótese e Intervalo de Confiança. Parte 2

Exercícios: comandos de repetição

Algoritmos. Prof. Jonatas Bastos

A Dança do Embaralhamento. Série Matemática na Escola. Objetivos 1. Introduzir a noção de grupo de permutação; 2. Mostrar uma aplicação de MMC.

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

Aritmética Computacional. Prof. Leonardo Barreto Campos 1

Prática. Exercícios didáticos ( I)

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Universidade do Estado do Rio de Janeiro Faculdade de Engenharia Departamento de Engenharia Eletrônica e de Telecomunicações

Exercícios: Vetores e Matrizes

O PENSAMENTO ALGÉBRICO

Interface com Displays de 7 Segmentos. Interface com Displays

Introdução à Algoritmos. Aula 11

1. Escreva um programa em Pascal que leia três valores inteiros e mostre-os em ordem crescente. Utilize seleção encadeada.

Menino ou menina? Exercício 1 Vamos lembrar então o que são genes e cromossomos. Volte à Aula 20 e dê as definições: a) Gene... b) Cromossomo...

INF1005: Programação I. Algoritmos e Pseudocódigo

Semana 7 Resolução de Sistemas Lineares

Introdução a Ciência da Computação Sistemas Numéricos Conversão entre Bases PROFESSORA CINTIA CAETANO

EXERCÍCIOS PREPARATÓRIOS PARA AS DISCIPLINAS INTRODUTÓRIAS DA MATEMÁTICA

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Apostila de Matemática 16 Polinômios

Algoritmos APRENDENDO A PROGRAMAR COM C#

Lista de Exercícios - Adição

Industrial e Comercial Eletroservice LTDA.

Circuito Decodificador BCD para Display de Sete Segmentos

Comandos de Desvio 1

Capítulo 4 Inferência Estatística

MAE116 - Noções de Estatística

Lista de Exercícios Critérios de Divisibilidade

Algoritmos e Estruturas de Dados II. Introdução

BCC202 - Estrutura de Dados I

Lista de Exercícios - Subtração

Matemática - Módulo 1

Arquitetura de Computadores EL66C 1a. Prova - Gabarito 26/04/10

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Gabarito de Matemática do 6º ano do E.F.

MC Teste de Mesa e Comandos Repetitivos

Aula 1 Conjuntos Numéricos

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

Ordenação e Pesquisa de Dados. Aula 07 Insertion Sort e Bubble Sort

Prova Modelo. Nome: Número:

Maio de P Servidor de Impressão FreeFlow Estimativa de toner

Equação e Inequação do 2 Grau Teoria

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

Medidas de Tendência Central. Introdução Média Aritmética Moda Mediana

Determinantes. Matemática Prof. Mauricio José

Histórico e Evolução da Computação

Erros e Incertezas. Rafael Alves Batista Instituto de Física Gleb Wataghin Universidade Estadual de Campinas (Dated: 10 de Julho de 2011.

Enviar fotos e vídeos entre duas câmeras da marca Canon (PowerShot SX60 HS)

Introdução a Programação Aula 01

Usando potências de 10

números decimais Inicialmente, as frações são apresentadas como partes de um todo. Por exemplo, teremos 2 de um bolo se dividirmos esse bolo

A. Equações não lineares

Pagamento de complemento de salário-maternidade, considerando que este valor deve ser deduzido da guia de INSS, pois é pago pelo INSS.

Oficina: Jogar para gostar e aprender matemática. Profa. Dra. Adriana M. Corder Molinari dri.molinari@uol.com.br

Plano de Ensino PROBABILIDADE E ESTATÍSTICA APLICADA À ENGENHARIA - CCE0292

ANOVA. (Analysis of Variance) Prof. Dr. Guanis de Barros Vilela Junior

Definição de determinantes de primeira e segunda ordens. Seja A uma matriz quadrada. Representa-se o determinante de A por det(a) ou A.

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

Transcrição:

OBSERVAÇÕES: 1. Esta lista de exercícios poderá ser resolvida individualmente ou em grupos de 2 pessoas. 2. A lista possui 25 exercícios, destes você deve responder os 5 primeiros exercícios e os outros 10 podem ser escolhidos livremente entre os exercícios de número 6 ao 25. 3. Caso você ache que falta algum detalhe nas especificações, você deverá fazer as suposições que julgar necessárias e escrevê-las com as suas respostas. Pode acontecer também de algum enunciado conter dados e/ou especificações supérfluas para a solução de alguma pergunta específica. Utilize sua capacidade de julgamento para separar o supérfluo do necessário. 4. A data final para entrega desta lista de exercícios é o dia 11/07/2013, no início da aula. 5. A solução dessa lista de exercícios deverá ser manuscrita e não digital. 6. Listas plagiadas serão desconsideradas, sendo atribuída nota 0 (zero) a todos os envolvidos. 7. O valor dessa lista de exercícios é 2 pontos. EXERCÍCIOS 1) Para cada uma das afirmações abaixo, justifique formalmente (usando definições, manipulações algébricas e implicações) se for verdade ou dê um contraexemplo se for falso. a) 2 n + 1 = O (2 n ) b) 2 2n = O (2 n ) c) Se f(n) = O (u(n)) e g(n) = O (v(n)), então f(n) - g(n) = O (u(n)) - O (v(n)) d) Se f(n) = O (g(n)) e g(n) = O (h(n)), então f(n) = O (h(n)) e) Se f(n) = O (h(n)) e g(n) = O (h(n)), então f(n) = g(n) As questões das letras a, b, c foram retiradas do livro do Nívio Ziviani [ZIV]. 2) Demonstre as seguintes propriedades da notação Big O. a) f(n) = O (f(n)) b) c * O (f(n)) = O (f(n)), onde c é uma constante c) O (f(n)) + O (f(n)) = O (f(n)) d) O (f(n)) * O (g(n)) = O (f(n) * g(n)) e) f (n) * O(g(n)) = O (f(n) * g(n)) 3) Analise a complexidade dos códigos abaixo. Para cada código calcule: 1. a quantidade total de operações executadas 2. identifique a operação elementar/básica. Justifique sua escolha.

3. estabeleça uma soma que indique quantas vezes a operação elementar/básica foi executada. Considere o pior caso. 4. defina uma função de complexidade e expresse sua ordem de complexidade. Justifique sua resposta. a) soma <- 0; para j de 1 ate n faça soma <- soma + 1; b) soma1 <- 0; para j de 1 ate i faça soma1 <- soma1 + 1; c) soma2 <- 0; para j de 1 até n faça para i de 1 ate j faça soma2 <- soma2 + 1; d) para i de 1 até n-1 faça para j de i+1 ate n faça para k de 1 ate j faça alguma instrução executa com complexidade O(1) e) x <- 0; para j de 1 até i faça para k de 1 até j faça x <- x + 1; 4) [CLRS- Exercício 2.2-4] Como podemos modificar praticamente qualquer algoritmo para ter um bom tempo de execução no melhor caso? Você acha que analisar um algoritmo pelo seu melhor caso é uma boa escolha? Justifique sua resposta. 5) [CLRS- Exercício 3.1-3] Explique por que a afirmação: O consumo de tempo do algoritmo A é pelo menos O(n²) não faz sentido.

6) Suponha que estamos estudando o desempenho de um algoritmo em função do tamanho n das instâncias de um problema. Considere as seguintes afirmações: 1. o consumo de tempo do algoritmo é O(n²) no pior caso; 2. o consumo de tempo do algoritmo é O(n²) para toda instância do problema. Qual a diferença entre as afirmações 1 e 2? 7) [CLRS- Exercício 1.2-3] Qual é o menor valor de n tal que um algoritmo A cujo tempo de execução é 100 n² é mais rápido que um algoritmo B com tempo de execução igual a 2 n numa mesma máquina? 8) Suponha um algoritmo com complexidade O(n*lg n) para todas as instâncias do problema. Considere que para N = 10.000.000, o tempo necessário para executar o programa equivalente a este algoritmo é de 8 segundos. Assuma que exista memória suficiente para executá-lo quando N = 1.000.000.000. Qual o tempo de execução desse programa para N = 1.000.000.000? Dê sua resposta em segundos e em horas. Obs: lg representa o logaritmo na base 2. 9) Suponha que um processador possa executar 10 15 operações por segundo. Assuma a existência de dois algoritmos, denominado A e B, para testar se um número é primo. O algoritmo A executa 100*n 2 operações para testar se um número de n dígitos decimais é primo. O algoritmo B executa 2 n operações para testar se um número de n dígitos decimais é primo. Usando o algoritmo A, quanto tempo, em segundos, esse processador gastará para determinar se um número de 1.000 dígitos decimais é primo? Usando o algoritmo B, quanto tempo, em segundos, esse processador gastará para determinar se um número de 1.000 dígitos decimais é primo? 10) [ZIV- Exercício 1.5] Qual algoritmo você prefere: um algoritmo que requer n 5 passos ou um que requer 2 n passos. Justifique sua resposta. 11) [ZIV- Exercício 1.2] O que significa dizer que g(n) é O (f(n)). 12) Uma métrica para avaliar algoritmos é a métrica empírica. Ela consiste em escolher um critério de análise e um conjunto de entradas variadas. Após tais decisões implementa-se o algoritmo numa linguagem de programação. Finalmente executa-se o programa com as entradas e faz-se uma análise dos resultados. Esse procedimento pode ser utilizado para comparar dois algoritmos ou mais programas. Critique essa métrica. 13) Por muitas vezes damos atenção apenas à análise do pior caso dos algoritmos. Explique o porquê. 14) Um algoritmo A com tempo de execução O(n*lg n), onde n é o tamanho da sequencia de entrada, é sempre mais rápido que um algoritmo B com tempo de execução O(n²)?

15) Faça um algoritmo que verifique se os elementos de um vetor estão ordenados de forma ascendente. Qual a complexidade de pior, melhor e caso médio do seu algoritmo? 16) Considere um algoritmo para percorrer uma lista não ordenada para encontrar um número inteiro. a) Qual é o melhor caso desse algoritmo? b) Qual é o pior caso desse algoritmo? c) O que deve ser levado em conta no cálculo do caso médio? d) Os cálculos realizadas nas alternativas a, b, c seriam diferentes se o número procurado não estivesse presente na lista? Justifique sua resposta. 17) Considere o problema de percorrer um vetor não ordenado para encontrar um determinado elemento. Calcule a complexidade assintótica do caso médio nas seguintes condições: a) o elemento procurado encontra-se no vetor e a probabilidade de encontrá-lo em quaisquer posição do vetor é a mesma e igual 1/n; b) o elemento procurado encontra-se no vetor e a probabilidade de encontrá-lo na primeira posição do vetor é ½, a probabilidade de encontrá-lo na segunda posição é ¼ e a probabilidade de encontrá-lo em quaisquer das outras posições é a mesma e igual a 1/(4n-8); c) o elemento procurado encontra-se no vetor em 50% das vezes e a probabilidade de encontrá-lo em quaisquer posições vetor é a mesma e igual 1/n; 18) [ZIV- Exercício 1.1] Dê o conceito de: a) algoritmo; b) tipos de dados; c) tipo abstrato de dados; 19) Conceitue estrutura de dados. 20) [ZIV- Exercício 1.3] O que significa dizer que um algoritmo executa em tempo proporcional a n? 21) [ZIV- Exercício 1.4] Explique a diferença entre O(1) e O(2). 22) [ZIV- Exercício 1.6] Prove que 1 2 + 2 2 + 3 2 + + n 2 = n 3 /3 + O(n 2 ). 23) [CLRS- Exercício 1.1-2] Além da velocidade, que outras medidas de eficiência poderiam ser usadas em uma configuração real? 24) [CLRS- Exercício 1.1-3] Selecione uma estrutura de dados que você já tenha visto e discuta seus pontos fortes e suas limitações.

25) Considere que existam dois algoritmos, denominados A e B, para resolver um determinado problema. O algoritmo A exige 10 8 *n operações e o algoritmo B exige 10*n 2. a) Calcule a complexidade assintótica de cada um desses algoritmos b) Pode-se afirmar que o algoritmo A é sempre melhor que o algoritmo B? c) Que conclusões este exemplo lhe permite tirar a respeito do uso da complexidade assintótica e da notação Big O na análise da complexidade de algoritmos. Bibliografia: [ZIV] ZIVIANI, Nivio. Projeto de Algoritmos Com implementação em Pascal e C. 3. ed. Revisada e Ampliada. São Paulo: Cengage Learning, 2011. [CLRS] CORMEN, T. et al. Algoritmos: Teoria e Prática. Editora Campus, 2002.