Universidade de São Paulo - USP. Instituto de Física de São Carlos - IFSC. Programação de Alto Desempenho. Prática 1. André de Freitas Smaira

Tamanho: px
Começar a partir da página:

Download "Universidade de São Paulo - USP. Instituto de Física de São Carlos - IFSC. Programação de Alto Desempenho. Prática 1. André de Freitas Smaira"

Transcrição

1 Universidade de São Paulo - USP Instituto de Física de São Carlos - IFSC Programação de Alto Desempenho Prática 1 Aluno: André de Freitas Smaira

2 1 Otimização pelo Compilador Atualmente, os compiladores tem otimização própria, ajudando os programadores a melhorar consideravelmente o tempo de execução e o gasto de memória de seus programas sem se preocuparem, necessariamente, muito com isso. O compilador utilizado nesse curso (g++) tem várias opções de otimização [1], sendo que a mais simples delas é a opção -O, em que o compilador tenta reduzir o tamanho e o tempo de execução do programa sem utilizar nenhuma otimização que faça com que a compilação demore muito mais que o normal. Abaixo estão as linhas de comando que compilam o arquivo prog.cpp no programa prog sem e com otimização respectivamente: g++ prog.cpp -o prog g++ -O prog.cpp -o prog Os objetivos dessa primeira parte da prática são: Complexidade de Algoritmos: Mostrar a diferença de desempenho entre algoritmos de complexidades diferentes, exemplicados aqui pelos algoritmos de ordenação conhecidos como Bubble Sort, que está entre os algoritmos de mais fácil compreensão mas de maior tempo de execução, com complexidade O (n 2 ) no pior caso e no caso médio e O (n) no melhor caso, e Quicksort, que é mais difícil de se compreender, mas é o algoritmo de ordenação de menor tempo de execução possível para o caso médio e o melhor caso, com complexidade O (n log n), apesar de o pior caso ter complexidade O (n 2 ). Existem algoritmos de ordenação em que a complexidade de todos os casos são Θ (n log n), mas esse não é o objetivo desse trabalho. Otimização de Algoritmos: Mostrar a diferença de desempenho entre dois executáveis provenientes de um mesmo algoritmo diferenciados pela presença ou ausência da otimização explicada acima. Aqui serão comparados em relação ao tempo de execução cada um dos algoritmos com e sem a otimização. Apesar do gasto de memória também ser otimizado por essa opção, esse não é o objetivo desse trabalho. 1

3 Antes de começarmos, vale explicitar que a sessão 3 exibe as congurações do computador utilizado na execução desse trabalho, em que durante a execução dos programas nada mais era executado pelo usuário do computador e que cada programa foi executado para 15 vetores, ou, em termos das variáveis do programa, M = 15. Vamos iniciar nosso estudo comparando os tempos de execução dos dois algoritmos tratados sem a utilização da otimização descrita (gura 1). No primeiro gráco, percebemos claramente a melhor eciência do Quicksort em relação ao Bubble sort, sendo que a razão entre os tempos de execução do primeiro e do segundo, ou seja, a razão entre as velocidades de execução dos dois algoritmos para o maior valor de N é r = T BS T QS = v QS v BS = 2509,6623. Podemos agora fazer algumas contas para comprovar a complexidade teórica desses algoritmos: T BS = α BS n 2 e T QS = α QS n log n. Se igualarmos a razão entre essas duas expressões à razão obtida no gráco, obtemos n = , que é aproximadamente igual aos elementos reais no programa, o que mostra claramente que a complexidade de um programa para altos valores de N indica muito bem como esse programa se comporta em relação a outros. Essa diferença de 1% é referente a aproximações nas contas e à inclusão dos pontos de menores valores de N na determinação dos parâmetros do ajuste dos grácos. Figura 1: Comparação entre os tempos de execução dos algoritmos de ordenação Bubble sort e Quicksort sem otimização. Sendo T BS = (8, ) n 2 e T QS = (3, ) n log n. O primeiro gráco é exibido na escala linear e segundo na escala logarítmica 2

4 Analisando agora o gráco em escala logarítmica e deixando claro que o ajuste foi feito para todos os dados obtidos pelo programa (o que justica 3 dos 5 pontos do gráco estarem acima da curva), podemos adicionar que esses pontos fora da curva mostram que para pequenos valores de N (até 10000), o Quicksort, apesar de ainda ser cerca de 15 vezes mais rápido que o Bubble sort, tem eciência menor que o ajuste dos pontos para N bem maiores. Isso vai car claro, quando o gráco que exibe todos os pontos for utilizado para a demonstração da otimização. Esse é o comportamento normal da Quicksort para poucos elementos e, por isso, as implementações utilizadas para o Quicksort costumam utilizar outros métodos de ordenação, como o Insertion sort, que para pequenos vetores passa a ser mais eciente que o Quicksort. Mesmo o Bubble sort se torna mais eciente que o Quicksort para pequenos valores de N. Executando novamente os algoritmos para valores de N menores que 20, podemos encontrar o limite para o qual isso passa a ocorrer: N lim 8 (gura 2). Figura 2: Demonstração de que para certos valores de N, a eciência do Quicksort é menor até que o Bubble sort. Para essa experiência foram utilizados 1 N 19 e M = Podemos agora estudar como a otimização inuencia cada um dos métodos separadamente. Primeiro vamos ver na gura 3 essa inuência em relação ao algoritmo Bubble sort. Pelo resultado do programa e pelo gráco, podemos obter uma melhora média de desempenho do Bubble sort de 4,7 vezes. Além disso, percebemos no segundo gráco que a otimização desse algoritmo faz com que ele se torne mais eciente que a curva de ajuste do restante dos pontos para pequenos valores de N, em que a otimização o torna 5,8 vezes mais rápido. Podemos agora fazer o mesmo para o algoritmo de Quicksort, cuja comparação é indicada 3

5 Figura 3: Comparação entre o algoritmo Bubble sort otimizado e não otimizado. Sendo T n opt = (8, ) n 2 e T opt = (1, ) n 2. O primeiro gráco é exibido na escala linear e segundo na escala logarítmica na gura 4. Pelo resultado do programa e pelo gráco, podemos obter uma melhora média de desempenho do Quicksort de 3,7 vezes. Além disso, percebemos no segundo gráco que a otimização desse algoritmo faz com que ele se torne menos eciente que a curva de ajuste do restante dos pontos para pequenos valores de N, em que a otimização o torna 2,9 vezes mais rápido. Para essas duas últimas comparações, percebemos que o Bubble sort é melhor otimizado que o Quicksort. Isso ocorre pois o Quicksort está mais próximo do limite de desempenho para um algoritmo de ordenação, O (n log n), fazendo com que que mais difícil a melhora de desempenho através de qualquer tipo de otimização. Mesmo no Quicksort há uma melhora signicativa (de meia ordem de grandeza), mostrando a importância da otimização, mesmo que simples, como a otimização padrão do compilador, para um programa que se deseja rodar mais ecientemente. Passemos agora para a mesma comparação inicial (entre os dois algoritmos), mas para as versões otimizadas (gura 5). No primeiro gráco, novamente, percebemos a melhor eciência do Quicksort em relação ao Bubble sort, sendo que a razão entre os tempos de execução do primeiro e do segundo para o maior valor de N é r = T BS T QS 4 = v QS v BS = 1985,2863. Essa diminuição

6 Figura 4: Comparação entre o algoritmo Quicksort otimizado e não otimizado. Sendo T n opt = (3, ) n log n e T opt = (8, ) log n. O primeiro gráco é exibido na escala linear e segundo na escala logarítmica de eciência relativa se deve ao que já foi discutido sobre ser mais complicado otimizar um algoritmo que já esteja próximo do limiar de eciência, como é o caso do Quicksort. Figura 5: Comparação entre os tempos de execução dos algoritmos de ordenação Bubble sort e Quicksort com otimização. Sendo T BS = (1, ) n 2 e T QS = (8, ) n log n. O primeiro gráco é exibido na escala linear e segundo na escala logarítmica 5

7 Como na primeira vez, vamos analisar o gráco em escala logarítmica. Como já explicado, o Bubble sort se torna mais eciente que o Quicksort para pequenos valores de N. Podemos ver melhor essa tendência nesse gráo, já que a otimização aproxima essas duas curvas mais do que o normal nessa região. Executando novamente os algoritmos para valores de N menores que 20, podemos encontrar o limite para o qual isso passa a ocorrer: N lim 10,5 (gura 6). Podemos perceber que para o algoritmo otimizado, esse cruzamento ocorre para N lim um pouco maior, já que a otimização aproxima a eciência dos dois algoritmos para pequenos valores de N. Figura 6: Demonstração de que para certos valores de N, a eciência do Quicksort é menor até que o Bubble sort e que no caso otimizado esse valor de N é maior que no caso normal. Para essa experiência foram utilizados 1 N 19 e M = Finalmente podemos chegar à conclusão de que para altos valores de N, a complexidade de um algoritmo inuencia muito mais na eciência de um programa que uma possível otimização. Portanto, quanto quisermos um programa eciente, antes de tudo devemos pensar muito bem em como vamos tratar o problema para que a complexidade seja a menor possível e só depois procurar possíveis otimizações (caso seja necessário). Para pequenos valores de N (ordem de unidades), no entanto, podemos nos preocupar mais com otimizações, pois as complexidades não inuenciarão mais que um fator de algumas unidades. 2 Proles O termo inglês proling se refere a uma forma de análise de software dinâmica capaz de determinar o quanto de recurso computacional é consumido por cada parte do código [2], com 6

8 o objetivo de facilitar a otimização do programa por parte do programador. O objetivo dessa segunda parte da prática é justamente esse: analisar o consumo de recursos de um determinado programa. Para isso usaremos o aplicativo gprof da GNU. O programa que utilizaremos tem por objetivo calcular as trajetórias de um cavalo de jogo de xadrez em um tabuleiro quadrado, o que é uma tarefa bem custosa. Primeiro temos que compilar o programa com informações de depuração: g++ -g -pg cavalo1.cpp -o cavalo Em seguida, executamos o programa com seus três argumentos:./cavalo sendo estes, respectivamente, o tamanho do tabuleiro, a autorização de exibição das soluções possíveis e a profundidade do cálculo executado e das mensagens mostradas. Depois, basta-nos utilizar o gprof. Vamos fazer essa análise separando o programa de duas formas diferentes: por função e por linha. Para cada um deles, serão estudados os três maiores gastos de recursos. As duas linhas abaixo mostram as chamadas do gprof para os dois objetivos anteriores na ordem em que foram citados: gprof cavalo gprof -l cavalo Por função A tabela abaixo mostra quais as funções que mais tomam tempo, qual é esse tempo, qual a porcentagem desse tempo em relação ao total do programa e qual o número de vezes que cada uma delas é chamada. 7

9 Função Tempo (s) Porcentagem Número de Chamadas vizinhos(casa, Casa*, int&) const 4,32 32, Casa(int, int) 3,28 24, posicionacavalo(tabuleiro&, Casa, int) 1,65 12,56 25 Para resumir a tabela, em seguida é dito a que classe pertence cada função. Em negrito estão indicadas as classes e em seguida estão listados os componentes da mesma. Tabuleiro: vizinhos() Tabuleiro::Casa: Casa() Observamos na tabela que a terceira função, apesar de ter um percentual de consumo de tempo da mesma ordem de grandeza das outras, é chamada um número de vezes 7 ( sete) ordens de grandeza menor que a segunda. Isso indica que para ter um ganho de desempenho deste programa em relação a essas 3 funções deve-se diminuir o número de chamadas das duas primeiras ou diminuir a complexidade da terceira, já que dessas três a que gasta mais tempo por chamada à função é a terceira com 66,02ms/chamada contra um tempo desprezível por chamada das outras duas. Essa complexidade é relativamente tão alta pois essa é a função principal do programa, executando todos os possíveis movimentos dos cavalos, além de ser recursiva, o que acarreta em um aumento considerável de tempo de execução. As outras são apenas função auxiliar (vizinhos) e função construtora de uma classe auxiliar (Casa), que são inclusive chamadas inúmeras vezes dentro da própria posicionacavalo. Uma possibilidade de diminuição de tempo de execução para essa função é torná-la iterativa, já que toda função recursiva pode ser transformada em uma função iterativa. O problema dessa implementação é a diculdade. Geralmente a implementação recursiva de uma função é muito mais fácil de se entender e de se implementar que uma equivalente no formato iterativo. Por linha Analogamente à analise por funções, abaixo é mostrada a tabela indicando a linha, o tempo total de execução e a porcentagem em relação ao tempo total de execução do programa. Em 8

10 seguida vamos analisar cada uma delas. Linha Tempo (s) Porcentagem 24 2,76 21, ,55 19, ,23 9,33 Agora vamos analisar cada uma dessas linhas: 24: // Abaixo: classe auxiliar para representar os indicies de uma casa. class Casa { public: Casa(int const a=0, int const b=0) : i(a), j(b) {} int i, j; }; A linha 24 é a : i(a), j(b) {} Ela tem tanto gasto de tempo pois está dentro da função construtora da classe Casa, que como já visto na análise por função é a função que segundo gasta mais tempo e a função que é chamada mais vezes no programa. A função que gasta mais tempo tem muito mais linhas que esta. Por isto é que, apesar de a função ser a segunda função que mais gasta, tem a linha que mais gasta em seu interior. 119 e 121: // Metodo para calcular as vizinhas de uma casa dada no tabuleiro // Devolve apenas as vizinhas validas. 9

11 // Vizinhas sao as casas que podem ser alcancadas por um pulo de // cavalo da casa de partida. void Tabuleiro::vizinhos(Casa const c, Casa v[], int &M) const { // Array padrao guarda as posicoes relativas de todos os vizinhos static int padrao[maxviz][2] = { { -1, -2}, { -1, 2}, { 1, -2}, { 1, 2}, { -2, -1}, { -2, 1}, { 2, -1}, { 2, 1} }; Casa vizinha; M = 0; for (int i = 0; i < MAXVIZ; i++) { // Calcula vizinho de acordo com padrao vizinha = Casa(c.i + padrao[i][0], c.j + padrao[i][1]); // Se casa valida, aceita. Senao o proximo escreve sobre este. if (valida(vizinha)) { v[m] = vizinha; M++; } } } As linhas abaixo indicam as linhas descritas na tabela: vizinha = Casa(c.i + padrao[i][0], c.j + padrao[i][1]); if (valida(vizinha)) { v[m] = vizinha; M++; } Além de essas duas linhas estarem dentro da função que mais gasta tempo, elas estão dentro de um for de 8 elementos, o que faz elas serem acessadas 8 vezes dentro de cada chamada à função. A linha 119 gasta mais tempo pois a chamada à função Casa() gasta mais tempo que a chamada à função valida(), além de a primeira ter que fazer várias 10

12 contas para obter os parâmetros que serão enviados à função Casa(). 3 Especicações do Computador Para essa prática, foi utilizado um notebook da marca Toshiba com o sistema operacional Ubuntu 12.04, com as seguintes congurações: Processador Memória RAM Intel R Core TM i5-2410m CPU 2,30Ghz 2,30Ghz 6,00 GB 11

13 Referências [1] Optimize Options - Using the GNU Compiler Collection (GCC) Disponível em: Acessado em: 02/08/2012 [2] Gprof - Wikipedia Disponível em: Acessado em: 03/08/2012 [3] Proling (computer programming) - Wikipedia Disponível em: Acessado em: 03/08/

Distâncias entre vértces em um grafo. Implementação sequencial

Distâncias entre vértces em um grafo. Implementação sequencial Distâncias entre vértces em um grafo Implementação sequencial André de Freitas Smaira 16 de outubro de 2013 1 1 Introdução Nesse projeto, temos por objetivo a determinação das distâncias mínimas entre

Leia mais

Análise empírica de algoritmos de ordenação

Análise empírica de algoritmos de ordenação Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:

Leia mais

Análise e Projeto de Algoritmos

Análise e Projeto de Algoritmos Análise e Projeto de Algoritmos Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Análise e Projeto de Algoritmos junho - 2018 1 / 40 Este material é preparado

Leia mais

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI O QUE SÃO ALGORITMOS DE ORDENAÇÃO? São algoritmos que organizam

Leia mais

Análise de Algoritmos Estrutura de Dados II

Análise de Algoritmos Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES Euzébio da Costa Silva 1, Victor Pereira Ribeiro 2, Susana Brunoro Costa de Oliveira 3 1 29520-000, euzebioprogramacao@gmail.com 2 29520-000, victor3ifes@gmail.com

Leia mais

AULA 23. Prof. Coelho

AULA 23. Prof. Coelho AULA 23 Prof. Coelho Ordenação: algoritmo Quicksort PF 11 http://www.ime.usp.br/ pf/algoritmos/aulas/quick.html Problema da separação Problema: Rearranjar um dado vetor v[p.. r] e devolver um índice q,

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material baseado em

Leia mais

Construção de Algoritmos II Aula 06

Construção de Algoritmos II Aula 06 exatasfepi.com.br Construção de Algoritmos II Aula 06 André Luís Duarte Porque mil anos são aos teus olhos como o dia de ontem que passou, e como a vigília da noite. Salmos 90:4 Recursividade e complexidade

Leia mais

Complexidade de Tempo e Espaço

Complexidade de Tempo e Espaço Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando

Leia mais

Técnicas de Projeto de Algoritmos

Técnicas de Projeto de Algoritmos UNIVERSIDADE NOVE DE JULHO - UNINOVE Pesquisa e Ordenação Técnicas de Projeto de Algoritmos Material disponível para download em: www.profvaniacristina.com Profa. Vânia Cristina de Souza Pereira 03 _ Material

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo

Leia mais

ALGORITMOS AVANÇADOS Lista de Exercícios 01. Luiz Leão

ALGORITMOS AVANÇADOS Lista de Exercícios 01. Luiz Leão Lista de Exercícios 01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Exercício 01 Qual a importância de estudarmos a complexidade dos algoritmos? Exercício 01 Resposta Qual a importância de estudarmos

Leia mais

ALGORITMOS DE ORDENAÇÃO

ALGORITMOS DE ORDENAÇÃO ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

Leia mais

Disciplina de Algoritmos e Programação

Disciplina de Algoritmos e Programação Disciplina de Algoritmos e Programação Aula Passada 1º Programa: olamundo.c #include // biblioteca padrão de E/S /* Programa Olá Mundo */ int main(void) { printf( Olá mundo\n ); //exibe Olá mundo

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo

Leia mais

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática

Leia mais

4 O conceito de variável

4 O conceito de variável 4 O conceito de variável Para resolver problemas no computador é necessário manipular dados, sejam números ou caracteres. Se alguém precisa calcular o resultado de uma única conta provavelmente o melhor

Leia mais

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo

Leia mais

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - Algoritmo 1.2 - Estrutura de Dados 1.2.1 - Revisão de Programas em C++ envolvendo Vetores, Matrizes, Ponteiros, Registros

Leia mais

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort) Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort) Hebert Coelho e Nádia Félix Ordenação É a operação de rearranjar os dados em uma determinada ordem. Problema da ordenação - Definição formal

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Lab. de Programação Concorrente em Física Primeira Prática

Lab. de Programação Concorrente em Física Primeira Prática Lab. de Programação Concorrente em Física Primeira Prática Paulo Matias 5626309 24 de agosto de 2009 1 Introdução Nesta prática, avaliaremos a importância de se utilizar bons algoritmos e de otimizar o

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Complexidade de algoritmos Notação Big-O

Complexidade de algoritmos Notação Big-O Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema

Leia mais

Variáveis Compostas. Vanessa Braganholo

Variáveis Compostas. Vanessa Braganholo Variáveis Compostas Vanessa Braganholo vanessa@ic.uff.br Aula de hoje } Veremos os diferentes tipos de variáveis compostas (arrays) } Com uma dimensão (vetores) } Com duas ou mais dimensões (matrizes)

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 09 Algoritmos de Ordenação Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída: conjunto de itens

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

Ordenação: HeapSort. Prof. Túlio Toffolo   BCC202 Aula 17 Algoritmos e Estruturas de Dados I 2014-01 Aula 16 Fila de Prioridade / HeapSort Adaptado por Reinaldo Fortes para o curso de 2014-01 Arquivo original: Aula 17: HeapSort Ordenação: HeapSort Prof. Túlio Toffolo http://www.toffolo.com.br

Leia mais

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras. Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica

Leia mais

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: ssvenske@unicentro.br

Leia mais

AULA 19 AULA 20. Ordenação: algoritmo Quicksort. Resumo. Melhores momentos

AULA 19 AULA 20. Ordenação: algoritmo Quicksort. Resumo. Melhores momentos Melhores momentos Resumo AULA 19 função consumo de observação tempo bubble O(n 2 ) todos os casos insercao O(n 2 ) pior caso O(n) melhor caso insercaobinaria O(n 2 ) pior caso O(n lg n) melhor caso selecao

Leia mais

Simulador didático de testes de algoritmos de ordenação

Simulador didático de testes de algoritmos de ordenação UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Simulador didático de testes de algoritmos de ordenação Nomes: Bruno Silva Guedes (159033) Matheus de Carvalho Proença (160184) Turma:

Leia mais

Informática Parte 17 Prof. Márcio Hunecke

Informática Parte 17 Prof. Márcio Hunecke Escriturário Informática Parte 17 Prof. Márcio Hunecke Informática BUSCA SEQUENCIAL E BUSCA BINÁRIA SOBRE ARRAYS Busca sequencial em vetores não ordenados O termo busca sequencial (ou busca linear) expressa

Leia mais

Infraestrutura de Hardware. Desempenho

Infraestrutura de Hardware. Desempenho Infraestrutura de Hardware Desempenho Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface entre

Leia mais

Métodos de Ordenação Parte 3

Métodos de Ordenação Parte 3 Estrutura de Dados II Métodos de Ordenação Parte 3 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais do Prof. Robson Lins Classificação em Memória Primária

Leia mais

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) 5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto

Leia mais

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER COMPARAÇÃO DE DESEMPENHO NA PROGRAMAÇÃO PARALELA HÍBRIDA (MPI + OPENMP) NA BUSCA DE TEXTO EM ARQUIVOS 1 COMPARISON OF PERFORMANCE IN HYBRID PARALLEL PROGRAMMING (MPI + OPENMP) IN SEARCH OF TEXT IN FILES

Leia mais

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M. Quick Sort Considerações Sobre Algoritmos de Ordenação Estagiário PAE: Jesimar da S. Arantes Professor: Claudio F. M. Toledo 27 de Setembro de 2017 Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

Leia mais

Benchmarks. 1. Introdução

Benchmarks. 1. Introdução Benchmarks 1. Introdução Um Benchmark é um programa de teste de desempenho que analisa as características de processamento e de movimentação de dados de um sistema de computação com o objetivo de medir

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo

Leia mais

Técnicas de Programação III Análise de Algoritmos (Continuação)

Técnicas de Programação III Análise de Algoritmos (Continuação) Técnicas de Programação III Análise de Algoritmos (Continuação) Aula ministrada em: 23/08/2007 Prof. Mauro L. C. Silva 1/10 Objetivos da Aula Entender a Análise e a Complexidade de Algoritmos 2/10 Avaliação

Leia mais

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M. Quick Sort Considerações Sobre Algoritmos de Ordenação Professor: Claudio F. M. Toledo 26 de Outubro de 2016 Professor: Claudio Quick F. M. Sort Toledo 26 de Outubro de 2016 1 / 14 Quicksort: Escolha do

Leia mais

AULA 13. Algoritmos p.526/582

AULA 13. Algoritmos p.526/582 AULA 13 Algoritmos p.526/582 Ordenação em tempo linear CLRS 8.2 8.3 Algoritmos p.527/582 Ordenação por contagem Recebe vetores A[1.. n] e B[1.. n] e devolve no vetor B[1.. n] os elementos de A[1.. n] em

Leia mais

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 3Q-2017 1 0 A = n-1... 2 0 A = n-1... - O programa funciona (está correto)? - Como medir/mensurar

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são

Leia mais

Ordenação. Prof. Jonas Potros

Ordenação. Prof. Jonas Potros Ordenação Prof. Jonas Potros Conceitos Básicos Ordenar: processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. A ordenação visa facilitar a recuperação posterior de itens

Leia mais

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:

Leia mais

DGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014

DGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014 DGPAPP Tutorial Daniel Centeno Einloft Vinicius Meirelles Pereira 20 May 2014 Qualquer um tem o direito de copiar, modicar e distribuir cópias deste documento, sob os termos da GNU Free Documentation License

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter

Leia mais

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão. O uso do computador Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão. Exemplos: Modelos meteorológicos. Cálculo estrutural.

Leia mais

4 Testes e experimentos realizados 4.1. Implementação e banco de dados

4 Testes e experimentos realizados 4.1. Implementação e banco de dados 32 4 Testes e experimentos realizados 4.1. Implementação e banco de dados Devido à própria natureza dos sites de redes sociais, é normal que a maior parte deles possua uma grande quantidade de usuários

Leia mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. Profa. Sheila Morais de Almeida. agosto Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa

Leia mais

Algoritmos e Estruturas de Dados II. Trabalho Prático 3

Algoritmos e Estruturas de Dados II. Trabalho Prático 3 Algoritmos e Estruturas de Dados II Trabalho Prático 3 Entrega: 03/11/09 Devolução: 24/11/09 O trabalho pode ser feito em grupo de dois alunos. Este trabalho consiste em analisar o desempenho de diferentes

Leia mais

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo.

CES-11. Noções de complexidade de algoritmos. Complexidade de algoritmos. Avaliação do tempo de execução. Razão de crescimento desse tempo. CES-11 Noções de complexidade de algoritmos Complexidade de algoritmos Avaliação do tempo de execução Razão de crescimento desse tempo Notação O Exercícios COMPLEXIDADE DE ALGORITMOS Importância de análise

Leia mais

ESTRUTURA DE DADOS I AULA I

ESTRUTURA DE DADOS I AULA I ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO O que é um dado? Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta). o que é a informação A

Leia mais

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2; heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i0 && x[f]

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

Projeto e Análise de Algoritmos Estruturas de Dados Básicas em C

Projeto e Análise de Algoritmos Estruturas de Dados Básicas em C Universidade Federal de Ouro Preto Departamento de Computação Projeto e Análise de Algoritmos Estruturas de Dados Básicas em C Prof. Haroldo Gambini Santos Por que C? Baixo nível: força contato com detalhes

Leia mais

Classificação por Seleção - selection sort

Classificação por Seleção - selection sort Classificação por Seleção - selection sort Outro método também simples de ordenação é a ordenação por seleção. Princípio de funcionamento: 1. Selecione o menor item do vetor (ou o maior). 2. Troque-o com

Leia mais

Variáveis Compostas. Leonardo Gresta Paulino Murta.

Variáveis Compostas. Leonardo Gresta Paulino Murta. Variáveis Compostas Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Veremos os diferentes tipos de variáveis compostas (arrays) Com uma dimensão (vetores) Com duas ou mais dimensões (matrizes)

Leia mais

CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES

CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES CRIVO QUADRÁTICO: IMPLEMENTAÇÃO DA OBTENÇÃO DE UM CONJUNTO DE NÚMEROS COMPLETAMENTE FATORADOS SOBRE UMA BASE DE FATORES Alex Zanella Zaccaron1; Adriana Betânia de Paula Molgora2 1Estudante do Curso de

Leia mais

Refinamentos sucessivos

Refinamentos sucessivos Refinamentos sucessivos Objetivos: Estudar a técnica de refinamentos sucessivos Jogo: 2048 Implementaremos o jogo 2048, com o objetivo de estudar a manipulação dos elementos de uma matriz Utilizaremos

Leia mais

Recursividade. Objetivos do módulo. O que é recursividade

Recursividade. Objetivos do módulo. O que é recursividade Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade

Leia mais

Anatomia do motor de um programa de xadrez. Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina

Anatomia do motor de um programa de xadrez. Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina Anatomia do motor de um programa de xadrez Hugo Vinicius M. D. Santana Orientador: José Coelho de Pina Conteúdo Objetivo O que é um motor de xadrez? Arquitetura Entrada e saída Representação do tabuleiro

Leia mais

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II 03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir

Leia mais

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido

Leia mais

Gprof Avaliação de desempenho. Prof: Paulo Maciel Instrutor: Jamilson Dantas

Gprof Avaliação de desempenho. Prof: Paulo Maciel Instrutor: Jamilson Dantas Gprof Avaliação de desempenho Prof: Paulo Maciel prmm@cin.ufpe.br Instrutor: Jamilson Dantas jrd@cin.ufpe.br Agenda Porque medir a eficiência de um Algoritmo? Como Medir O que é o Gprof? Por que usar um

Leia mais

Estruturas de Dados Algoritmos

Estruturas de Dados Algoritmos Estruturas de Dados Algoritmos Prof. Eduardo Alchieri Algoritmos (definição) Sequência finita de instruções para executar uma tarefa Bem definidas e não ambíguas Executáveis com uma quantidade de esforço

Leia mais

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho Ciência da Computação Arq. e Org. de Computadores Avaliando e Compreendendo o Desempenho O Que Veremos Avaliando e compreendendo o desempenho: Introdução Definindo desempenho Medindo o desempenho e seus

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 09 Ordenação de Vetores Edirlei Soares de Lima Ordenação de Vetores Problema: Entrada: vetor com os elementos a serem ordenados; Saída: mesmo vetor com

Leia mais

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos

Leia mais

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias - Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções 1 Um algoritmo pode ser visto como uma sequência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema.

Leia mais

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick

Leia mais

Algoritmos Avançados Análise de Complexidade

Algoritmos Avançados Análise de Complexidade CCAE Centro de Ciências Aplicadas e Educação UFPB - Campus IV - Litoral Norte Algoritmos Avançados Análise de Complexidade COMPLEXIDADE DE ALGORITMOS Definição: A Complexidade de um Algoritmo consiste

Leia mais

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais

Leia mais

Trabalho de Análise de Algoritmos. Problema da Mochila

Trabalho de Análise de Algoritmos. Problema da Mochila Trabalho de Análise de Algoritmos Problema da Mochila Felipe R. S. Barbosa, Flávio R. J. de Sousa, Leonardo dos Reis Vilela Faculdade de Ciência da Computação Universidade Federal de Uberlândia (UFU) Uberlândia

Leia mais

Aula 3: Algoritmos: Formalização e Construção

Aula 3: Algoritmos: Formalização e Construção Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Apresentação Professor Professor Ariel Dias Apresentação Disciplina O que veremos? www.arieldias.com BlackBoard Apresentação

Leia mais

Métodos de Ordenação

Métodos de Ordenação Métodos de Ordenação Conceitos básicos sobre ordenação Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem específica. Objetivo da ordenação: facilitar a recuperação posterior

Leia mais

Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache

Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache Um estudo computacional de dois algoritmos de programação dinâmica com utilização eficiente de cache Guilherme S. Ribeiro 1, Marcus Ritt 1, Luciana S. Buriol 1 1 Instituto de Informática Universidade Federal

Leia mais

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6

Leia mais

Limite assintótico para a ordenação, Ordenação em tempo linear

Limite assintótico para a ordenação, Ordenação em tempo linear Algoritmos e Estruturas de Dados I Limite assintótico para a ordenação, Ordenação em tempo linear Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2017 1 Ordenação Ordenar corresponde ao processo

Leia mais

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Indique na linha seguinte quatro das cinco questões abaixo que devem

Leia mais

Equação de Poisson. Paulo Matias. f (x, y) =

Equação de Poisson. Paulo Matias. f (x, y) = Equação de Poisson Paulo Matias 12 de outubro de 2011 1 Introdução Foi desenvolvido, em linguagem C++, um programa sequencial de alto desempenho para resolver a equação de Poisson: 2 u (x, y) x 2 + 2 u

Leia mais

Pesquisa e Ordenação

Pesquisa e Ordenação Pesquisa e Ordenação SC121 - Introdução à Programação ICMC - USP - São Carlos Maio de 2009 Algoritmo de Procura Algoritmo de Procura O problema de procurar, pesquisar alguma informação numa tabela ou num

Leia mais

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação Algoritmos e Introdução à Programação Lógica e Linguagem de Programação Prof. José Honorato Ferreira Nunes honoratonunes@softwarelivre.org http://softwarelivre.org/zenorato/honoratonunes Linguagem C Prof.

Leia mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of

Leia mais

Informática I. Aula 14. Aula 14-10/10/2007 1

Informática I. Aula 14.  Aula 14-10/10/2007 1 Informática I Aula 14 http://www.ic.uff.br/~bianca/informatica1/ Aula 14-10/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 Eldair F. Dornelles 2, Henrique A. Richter 3, Miquéias F. M. Trennepohl 4, Taís T. Siqueira

Leia mais

Trabalho: Algoritmos de Busca e Ordenação. 1 Introdução. Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos. 31 de outubro de 2012

Trabalho: Algoritmos de Busca e Ordenação. 1 Introdução. Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos. 31 de outubro de 2012 Trabalho: Algoritmos de Busca e Ordenação Prof. Bruno Emerson Gurgel Gomes IFRN - Câmpus Currais Novos 31 de outubro de 2012 1 Introdução Os algoritmos de busca e de ordenação compreendem um conjunto de

Leia mais

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias: ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros

Leia mais

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Apresentação da Disciplina Edirlei Soares de Lima Por que Estudar Algoritmos? Razões Práticas e Teóricas: Devemos conhecer um conjunto de algoritmos

Leia mais

Teoria da Computação Aula 8 Noções de Complexidade

Teoria da Computação Aula 8 Noções de Complexidade Teoria da Computação Aula 8 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Motivação: Por que estudar algoritmos? Perguntas: - Por que estudar algoritmos se os computadores

Leia mais

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO

Leia mais