TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3

Documentos relacionados
Estruturas de Dados 2

Projeto e Análise de Algoritmos

Algoritmos de Ordenação

Projeto e Análise de Algoritmos

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

ALGORITMOS DE ORDENAÇÃO

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

Algoritmos de Ordenação

O mais leve e o mais pesado Algoritmos de Ordenação

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

BCC202 - Estrutura de Dados I

Quicksort Letícia Rodrigues Bueno

Algoritmos de Ordenação

Análise e Complexidade de Algoritmos

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

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Análise e Complexidade de Algoritmos

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

Solução de Recorrências

Projeto e Análise de Algoritmos

Estruturas de Dados 2

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Estrutura de Dados II

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II

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

Aula 19: Métodos eficientes de ordenação

Métodos de Ordenação

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

FACULDADE DE TECNOLOGIA DE TAQUARITINGA 13 ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

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

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

Paradigmas de Projetos de Algoritmos

DISCIPLINA: Computação e Algoritmo I. PROFESSOR: Léo M. Lopes da Silva Garcia FORMAÇÃO:

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

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

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Projeto e Análise de Algoritmos. Prof. Ruy Luiz Milidiú

Métodos de Ordenação Parte 4

Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

SUBGERÊNCIA DE GESTÃO EDUCACIONAL PLANO DE CURSO

Lógica de Programação II

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia. 23 de Março de 2018

Linguagem C: Ordenação

Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet

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;

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

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

O PROFESSOR ADVERTE: SLIDES NÃO DEVEM SER UTILIZADOS COMO ÚNICA FONTE PARA ESTUDAR OS CONTEÚDOS MINISTRADOS. PROCURE CONSULTAR, PELO MENOS, A

Estrutura de Dados e Arquivos Ementa Objetivo Geral Conteúdo Avaliação

MINISTÉRIO DA EDUCAÇÃO FUNDAÇÃO UNIVERSIDADE FEDERAL DO PAMPA PRÓ-REITORIA DE GRADUAÇÃO COORDENADORIA DE REGISTROS ACADÊMICOS

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

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Projeto e Análise de Algoritmos

Estrutura de Dados. Plano de Ensino. Vilson Heck Junior. Campus Lages. Instituto Federal de Santa Catarina

O Problema da Ordenação Métodos de Ordenação Parte 1

Estrutura de Dados. Diego Silveira Costa Nascimento

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

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Algoritmos de ordenação Quicksort

Algoritmos de ordenação

Bubble Sort. Tempo total O(n 2 )

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

Introdução Paradigmas

Algoritmos de Ordenação

ALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort

Métodos Estatísticos Básicos

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

Classificação de Dados

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

AED2 - Aula 11 Problema da separação e quicksort

Ordenação e Pesquisa

Ordenação de Dados (IV) MergeSort

Algoritmos de ordenação em forma paralela.

Carlos Eduardo Batista. Centro de Informática - UFPB

Estruturas de Dados Algoritmos de Ordenação

Algoritmos de Ordenação: MergeSort

5. Algoritmos de Ordenação

Algoritmos de ordenação Ordenação rápida ( Quicksort )

Projeto e Análise de Algoritmos

DISCIPLINA: Programação de Computadores I

Projeto e Análise de Algoritmos

Estrutura de Dados Conceitos Iniciais

Heapsort ordenação por árvore de seleção

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

Tópicos Avançados em Algoritmos

Algoritimos e Estruturas de Dados III CIC210

PLANO DE ENSINO E APRENDIZAGEM CURSO: Tecnologia em Análise e Desenvolvimento de Sistemas

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

Algoritmos de Ordenação: QuickSort

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

Transcrição:

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula 3 1

Agenda Estrategias de Projeto Algoritmos Refinamentos Sucessivos Força Bruta Dividir e conquistar Bibliografia 2

Força Bruta Éa mais simples das estratégias/ténicas de projeto de algoritmo, uma solução direta para resolver um problema, geralmente baseada diretamenteno enunciado do problema e nas definições dos conceitos envolvidos A força éde um computador e não do intelecto de alguém. Somente faça Geralmente, a estratégia de força bruta é uma das mais fáceis de aplicar 3

Força Bruta Exemplos: Calculando a soma de n números (a > 0, n sendo um inteiro não negativo), Multiplicação de duas matrizes n por n Ordenação por seleção, Busca seqüencial Apesar de ser raramente uma fonte de algoritmos eficientes ou brilhantes, a técnica força bruta é uma importante estratégia de projeto de algoritmos Força bruta é aplicável a uma ampla variedade de problemas (Soma de N numeros, det. Maior elemento da lista) 4

Força Bruta Para alguns problemas importantes (ordenação, busca, multiplicação de matrizes, string matching, etc), A técnica de força bruta fornece: Algoritmos razoáveis Algoritmos de valor prático Algoritmos sem limitações quanto ao tamanho da instância. 5

Força Bruta por que usar? O esforço para projetar um algoritmo mais eficiente pode não ser justificável se: Somente algumas poucas instâncias de um problema Necessitarem ser resolvidas (velocidade aceitável) Mesmo ineficiente em geral, pode ser útil para Resolver problemas com instâncias pequenas Propósito teórico e educacional 6

Força Bruta Aplicação da técnica força bruta em problemas de ordenação. Dada uma lista de n elementos ordenáveis (números, caracteres, strings), rearranjá los em ordem crescente. Qual seria o método mais direto para resolver o problema da ordenação? 7

Força Bruta Exemplo de Busca rotina BuscaPadrao(texto[0... n-1], padrao[0... m-1]) para i 0 atén m faça j 0 enquanto j < m e padrao[j] = texto[i + j] faça j j + 1 se j = m então retorne i retorne -1 8

Tipos de Algorimos em que se aplica essa tecnica Selection sort (Ordenação por seleção ) Baseadoemse passarsempreo menorvalor do vetorparaa primeira posição(ouo maiordependendoda ordemrequeridadepoiso de segundomenorvalor paraa segundaposição, e assiméfeito sucessivamente com os(n-1) elementos restantes, até os últimos dois elementos. 9

Selection sort (Ordenação por seleção ) Exemplo 934651278 193465278 129346578 123946578 123496578 123459678 123456978 123456798 123456789 10

Bubble Sort Comparar elementos adjacentes de uma lista e permutá los se eles estiverem fora de ordem. Fazendo isso repetidamente, acabamos empurrando (bubbling up) o maior elemento para a última posição da lista. A próxima passagem empurra o segundo maior e assim por diante, atéapós n 1 passos, a lista ser ordenada. 11

Busca Sequencial Compara elementos sucessivos de uma dada lista com um dada chave de busca até: Encontrar um elemento similar (busca bem sucedida) ou A lista ser exaurida sem encontrar um elemento similar (busca mal sucedida) 12

Prós FB Ampla aplicabilidade Simplicidade Fornece algoritmos razoáveis para alguns Problemas importantes Fornece algoritmos padrão para tarefas computacionais simples. 13

Considerações finais FB Os principais méritos de uma estratégia força bruta são a ampla aplicabilidade e simplicidade O principal demérito é uma baixa eficiência da maioria dos algoritmos força bruta. 14

Dividir e conquistar. Provavelmente a tecnica mais conhecida. Divide a instancia do problema em duas ou mais instancias menores. Resolver as instâncias menores recursivamente Obtem a solução para as instâncias originais (maiores) através da combinação destas soluções. 15

Dividir e conquistar. O paradigma de dividir e conquistar envolve 3 passos: Dividir Conquistar Combinar 16

Dividir e conquistar. 17

Exemplo dividir e conquistar Computar a soma de n números ao,..., an 1 Se n>1, podemos dividir o problema em duas instâncias do mesmo problema: Soma dos primeiros n/2 números Soma dos n/2 números restantes. Uma vez estas duas somas computadas, adicionamos seus valores para obter o resultado final: 18

Exemplo dividir e conquistar continuação Esta éuma maneira eficiente de computar a soma de n números? Émais eficiente do que uma adição força bruta? 19

Porém, freqüentemente, o tempo gasto na execução das três etapas do algoritmo dividir & conquistar, é menor do que a resolução por outros métodos. A estratégia dividir & conquistar produz os algoritmos mais importantes e eficientes em ciência da computação Importante: A estratégia dividir & conquistar é idealmente adaptada a computação paralela. 20

Tipos de Algorimos em que se aplica tecnica D&C: Mergesort (Sort Ordenar, Merge Unir) 21

Quicksort Escolha um elemento da lista, denominado pivô; Rearranje a lista de forma que todos os elementos anteriores ao pivô sejam menores que ele, e todos os elementos posteriores ao pivô sejam maiores que ele. Ao fim do processo o pivô estaráem sua posição final e haverá duas sublistas não ordenadas. Essa operação é denominada partição; Recursivamente ordene a sublista dos elementos menores e a sublista dos elementos maiores; 22

Quicksort - Exemplo Ordenar o arranjo 0 5 3 1 9 8 2 4 7 Determina pivo 5 Rearranja lista 03124 59 8 7 (partição) Ordena recursivamente sublistas (03124 e 987): 01234 5789 23

Considerações : Dividir e Conquistar éuma técnica geral de projeto de algoritmos que Resolve uma instância do problema dividindo a em diversas instância menores (idealmente de tamanhos similares) Resolvendo cada uma delas recursivamente Combinando suas soluções para obter a solução para a instância original do problema Muitos algoritmos eficientes são baseados nesta técnica. Contudo, ela pode ser inaplicável e inferior a soluções algorítmicas mais simples. 24

Bibliografia BIBLIOGRAFIA BÁSICA AZEREDO, Paulo A. Métodos de Classificação de Dados. Rio de Janeiro: Ed. 1 Campus, 1996. LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Ed. São Paulo: Brasport, 2 2008. PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais Conceitos e 3 Aplicações. 7.ed. São Paulo: Érica, 2008. BIBLIOGRAFIA COMPLEMENTAR KOFFMANN, E.B. Objetos, Abstração, Estrutura de Dados e Projetos. 1ª Ed. Rio de 4 Janeiro: LTC, 2008. MORAES, Celso Roberto. Estruturas de Dados e Algoritmos.Uma abordagem didática. 5 Edição revista e Ampliada. São Paulo: Editora Futura, 2003. WIRTH, Niklaus. Algoritmos e estruturas de dados. Rio de Janeiro: Prentice Hall do 6 Brasil, 1989. ZIVIANI, N. Projeto de Algoritmos com implementações em Pascal e C, Editora 7 Pioneira, 1999. 25