ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO

Slides:



Advertisements
Apresentações semelhantes
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Advertisements

Métodos de Pesquisa e Ordenação Estruturas de Dados Melissa Marchiani Palone Zanatta.
Listas de Prioridades Cinéticas Tese de Mestrado de: Guilherme Dias da Fonseca (bolsista CAPES) Orientadora: Celina M. H. de Figueiredo 03/2003.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
ESTRUTURAS DE CONTROLO Estrutura sequencial: é um conjunto de instruções em que são executadas pela ordem em que aparecem escritas no programa. Mas como.
Com isto a variável (que geralmente é o X) terá um único valor!
Introdução à Computação para Engenharia MAC2166
Tópicos Preliminares Algorítmos I.
RODOLFO SOARES TEIXEIRA OBMEP NA ESCOLA
Introdução e Conceitos.
CÁLCULO NUMÉRICO Aula 2 – Introdução ao Programa de Computação Numérica (PCN) e Teoria dos Erros.
Lógica de Programação I
Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .
Fundamentos de Aritmética
Bioestatística e Epidemiologia Aula 3: Medidas de Tendência Central
Márcio Soussa Estrutura de Dados Márcio Soussa
Programação em C Aula 8.
Recursão.
2. Conceitos básicos A complexidade de algoritmos trata do esforço computacional de algoritmos. Além disso, ela fornece subsídios para escolher o melhor.
Algoritmo de Euclides para o cálculo do mdc
RODOLFO SOARES TEIXEIRA OBMEP NA ESCOLA
Métodos de Pesquisa: Seqüencial e Binária
4. Complexidade média Este capítulo considera a complexidade média, examinando casos ilustrativos de análise de algoritmos e de projeto de estruturas.
Capítulo VIII – Técnicas de Ordenação
Prof. Wellington Franco
PROBABILIDADES.
Vantagens e desvantagens da recursão
EGP, CPC, 2004/05 Problema e Algoritmos de Colocação de Professores
Algoritmos e Fluxogramas
Arquitetura de Computadores
PIT – PROGRAMA INTERNO DE TREINAMENTO 2015
Projeto e Análise de Algoritmos
Título: deve ser representativo de seu conteúdo, sem ser longo, devendo conter apenas as palavras essenciais. Autores: O primeiro autor é o principal (aluno),
FUNDAMENTO DE PROGRAMAÇÃO
IP – Repetições Prof. Eduardo Falcão.
Métodos Numéricos de Determinação de Raízes: Bisseção, Secante e Newton-Raphson Professor.: Heron Jr.
INE 5201 – INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
de um número real positivo
Programação.
Análise Sintática Botton Up Diomara M. R. Barros
Estruturas de Dados (Ordenação e Pesquisa)
Binário, Hexadecimal, Decimal
Pesquisa e Ordenação de Vetor
Aulas 17 e 18 Limites, limites laterais, limites infinitos, assíntota vertical e propriedades do limite.
EEEM Profª Salomé Carvalho
Linguagem de Programação I
Cálculo combinatório.
Estruturas de Dados aula 4
Complexidade de Algoritmos
LÓGICA DE PROGRAMAÇÃO Estruturas de Decisão
Linguagem PASCAL Tipos Estruturados
Algorítmos e Técnicas de Programação
Divisibilidade, vamos aprender através dos números primos!
Informática Básica Introdução a informática básica FUNCIONAMENTO
Variância e Desvio padrão
Introdução à lógica de programação utilizando Scratch Aula 3
ALGORITMOS.
Algoritmos de ordenação
O que você deve saber sobre
...semana que vem: laboratório!
Título: deve ser representativo de seu conteúdo, sem ser longo, devendo conter apenas as palavras essenciais. Autores: O primeiro autor é o principal (aluno),
Ordenando Coleções A Classe Collections.
Vetores.
Introdução a progrmação Comandos condicionais: if e switch
Problemas de Transporte (Redes)
Prof. Elisson de Andrade
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
MATEMÁTICA.
MATEMÁTICA.
Transcrição da apresentação:

ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Valdemar W. Setzer Depto. de Ciência da Computação da USP Projeto “Embaixadores da Matemática” Ver artigo e esta apresentação em www.ime.usp.br/~vwsetzer google: valdemar setzer Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise ONE-MINUTE PAPER NO FIM DA PALESTRA, ESCREVER NUM PEDAÇO DE PAPEL: 1. O QUE APRENDI DE MAIS IMPORTANTE? 2. QUAL A MAIOR DÚVIDA QUE FICOU? 3. COMENTÁRIOS Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual dos 3 é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 1. Introdução O que é Ciência da Computação? É o estudo dos fundamentos teóricos do processamento de dados e das técnicas e práticas para a sua implementação em sistemas computacionais e computa-dores. Estudo sistemático de processos algorítmicos que criam, descrevem, transformam, transportam e armazenam dados. Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 1. Introdução (cont.) Algoritmos são usados há milhares de anos Soma armada Algoritmo de Euclides (máximo divisor comum, séc. 3 a.C.) Tornaram-se essenciais na computação Todos os programas que funcionam implementam algoritmos Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 1. Introdução (cont.) Histórico Séc. VII: Matemático hindu Brahmagupta explicou o sistema numérico hindu- arábico, com o 0 Aproximadamente em 825, o matemático persa al-Khwarizmi escreveu o livro Cálculo com numerais hindus Traduzido para o latim ~séc. XII como Algoritmi de numero Indorum Em 1202 Fibonacci introduziu os algarismos indo-arábicos na Europa Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 1. Introdução (cont.) Vamos ver o que são algoritmos Vamos aprender o que é um tipo de sua análise Verificar que essa análise é essencial constituindo portanto uma parte fundamental da ciência da computação Usaremos um problema fundamental da computação: Ordenação de números, palavras, etc. Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

2. O problema a ser resolvido Ordenar n números Material Cartolinas com 8 compartimentos numerados Cada compartimento tem uma tira Em cada tira há um número (Pode ser feito sem cartolinas, com as tiras sobre a mesa) Ordenar esses 8 números em ordem crescente seguindo as seguintes regras Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

2. O problema a ser resolvido (cont.) Regras R1: Pode-se levantar um pouco uma tira de seu compartimento, e ver seu conteúdo R2: Se uma tira estiver abaixada, seu número está invisível (é desconhecido) R3: No máximo 2 tiras podem estar levantadas ao mesmo tempo R4: O conteúdo de 2 tiras pode ser comparado para saber qual o maior R5: Duas tiras podem ser trocadas de compartimento R6: Podem-se anotar números de compartimentos Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução  2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 3. Soluções obtidas Notar algumas dificuldades Seguir estritamente as regras Por exemplo, não memorizar os conteúdos das tiras Descrever o processo Descrever qual o critério de término do processo Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 3.1 Método de seleção (Compara o 1o. com cada um dos outros, troca quando ele for maior; depois compara o 2o. com cada um dos outros, etc. – em cada passada, seleciona o menor) 5 10 3 7 15 2 1 9 1 10 5 7 15 3 2 9 5 10 3 7 15 2 1 9 1 5 10 7 15 3 2 9 3 10 5 7 15 2 1 9 1 3 10 7 15 5 2 9 2 10 5 7 15 3 1 9 1 2 10 7 15 5 3 9 1 10 5 7 15 3 2 9 1 2 10 7 15 5 3 9 1 2 7 10 15 5 3 10 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

3. Soluções obtidas (cont.) 3.1 MÉTODO DE SELEÇÃO (em cada varrida, seleciona-se o menor) 5 10 3 7 15 2 1 9 3 10 5 7 15 2 1 9 2 10 5 7 15 3 1 9 1 10 5 7 15 3 2 9 1 5 10 7 15 3 2 9 1 3 10 7 15 5 2 9 1 2 10 7 15 5 3 9 1 2 7 10 15 5 3 9 1 2 5 10 15 7 3 9 1 2 3 10 15 7 5 9 1 2 3 7 15 10 5 9 1 2 3 5 10 15 7 9 1 2 3 5 7 15 10 9 1 2 3 5 7 10 15 9 1 2 3 5 7 9 15 10 1 2 3 5 7 9 10 15 1 2 3 4 5 6 7 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 3.2. Método da bolha (Compara o 1o com o 2o, troca se o 1o for maior; depois compara o 2o com 3o e troca se for maior etc. – a maior “bolha” fica no fim, “sobe”) 5 10 3 7 15 2 1 9 5 3 7 10 2 1 15 9 5 10 3 7 15 2 1 9 5 3 7 10 2 1 9 15 5 3 10 7 15 2 1 9 3 5 7 10 3 2 9 15 5 3 7 10 15 2 1 9 3 5 7 10 3 2 9 15 5 3 7 10 15 2 1 9 1 5 7 10 3 2 9 15 5 3 7 10 2 15 1 9 1 5 7 3 10 2 9 15 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

3. Soluções obtidas (cont.) 3.2 MÉTODO DA BOLHA (em cada varrida, compara-se e se troca de 2 em 2) 5 10 3 7 15 2 1 9 5 3 10 7 15 2 1 9 5 3 7 10 15 2 1 9 5 3 7 10 2 15 1 9 5 3 7 10 2 1 15 9 5 3 7 10 2 1 9 15 3 5 7 2 10 1 9 15 3 5 7 2 1 10 9 15 3 5 7 2 1 9 10 15 3 5 2 7 1 9 10 15 3 5 2 1 7 9 10 15 3 2 5 1 7 9 10 15 3 2 1 5 7 9 10 15 2 3 1 5 7 9 10 15 2 1 3 5 7 9 10 15 1 2 3 5 7 9 10 15 1 2 5 4 3 6 (só mostra trocas) 7 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 3.3 Método de inserção (Compara cada par consecutivo; quando houver troca, compara para trás e troca se necessário – insere cada número em sua posição definitiva até o momento) 5 10 3 7 15 2 1 9 3 5 7 10 15 2 1 9 5 10 3 7 15 2 1 9 3 5 7 10 2 15 1 9 5 3 10 7 15 2 1 9 3 5 7 2 10 15 1 9 3 5 10 7 15 2 1 9 3 5 2 7 10 15 1 9 3 5 7 10 15 2 1 9 3 2 5 7 10 15 1 9 3 5 7 10 15 2 1 9 2 3 5 7 10 15 1 9 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

3. Soluções obtidas (cont.) 3.3 MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara para trás) 5 10 3 7 15 2 1 9 5 3 10 7 15 2 1 9 3 5 10 7 15 2 1 9 3 5 7 10 15 2 1 9 3 5 7 10 2 15 1 9 3 5 7 2 10 15 1 9 3 5 2 7 10 15 1 9 3 2 5 7 10 15 1 9 2 3 5 7 10 15 1 9 2 3 5 7 10 1 15 9 2 3 5 7 1 10 15 9 2 3 5 1 7 10 15 9 2 3 1 5 7 10 15 9 2 1 3 5 7 10 15 9 1 2 3 5 7 10 15 9 1 2 3 5 7 10 9 15 1 2 3 5 7 9 10 15 3.3 MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara para trás) 5 10 3 7 15 2 1 9 5 3 10 7 15 2 1 9 3 5 10 7 15 2 1 9 3 5 7 10 15 2 1 9 3 5 7 10 2 15 1 9 3 5 7 2 10 15 1 9 3 5 2 7 10 15 1 9 3 2 5 7 10 15 1 9 2 3 5 7 10 15 1 9 2 3 5 7 10 1 15 9 2 3 5 7 1 10 15 9 2 3 5 1 7 10 15 9 2 3 1 5 7 10 15 9 2 1 3 5 7 10 15 9 1 2 3 5 7 10 15 9 1 2 3 5 7 10 9 15 1 2 3 5 7 9 10 15 1 2 3 5 4 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 3.1a Método de seleção melhorado (Compara o 1o. com cada um dos outros, se houver um menor, compara este com os seguintes; no fim de cada passada, troca com o primeiro, selecionando o menor) 5 10 3 7 15 2 1 9 1 10 3 7 15 2 5 9 5 10 3 7 15 2 1 9 1 2 3 7 15 10 5 9 1 10 3 7 15 2 5 9 1 2 3 5 15 10 7 9 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise Método de seleção melhorado (cont.) Ganho: diminui o número de trocas; o número de comparações continua o mesmo Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução  2. O problema a ser resolvido  3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 4. O que é um algoritmo? Uma sequência de passos Cada um, com uma ação matematicamente bem definida Finita Usa conjuntos matematicamente bem definidos de dados de entrada Termina para qualquer conjunto de dados de entrada (isto é, não fica executando algumas ações indefinidamente) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Uma descrição de como trocar um pneu é um algoritmo? E uma descrição do que se deve fazer ao acordar de manhã? Nada disso é um algoritmo! Pois os passos não são matematicamente bem definidos Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) E o problema de ordenar as tiras? NÃO! Ações físicas não são matematicamente bem definidas E ordenar números em um computador? Sim! Computador é uma máquina matemática Dados e as instruções executadas pela máquina são matematicamente bem definidos! As regras R1...R6 foram feitas para se poder processar a ordenação em um computador Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Regras (recordação) R1: Pode-se levantar um pouco uma tira de seu compartimento, e ver seu conteúdo R2: Se uma tira estiver abaixada, seu número está invisível (é desconhecido) R3: No máximo 2 tiras podem estar levantadas ao mesmo tempo R4: O conteúdo de 2 tiras pode ser comparado para saber qual o maior R5: Duas tiras podem ser trocadas de compartimento R6: Podem-se anotar números de compartimentos Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Regras para um computador R1: É possível examinar (abrir) uma posição de ‘memória’ contendo um número R2: Sem examinar uma posição de ‘memória’, o seu conteúdo é desconhecido R3: No máximo 2 posições de ‘memória’ podem ser examinadas ao mesmo tempo R4: Os conteúdos de 2 posições de ‘memória’ podem ser comparados para saber qual o maior R5: Pode-se trocar o conteúdo de duas posições de ‘memória’ R6: podem-se armazenar ‘endereços’ (‘ponteiros’) de posições de ‘memória’ Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Regras para um computador (cont.) Na verdade, nos computadores modernos A comparação é feita entre o conteúdo de um registrador (fora da ‘memória’) e uma posição de ‘memória’, ou entre dois registradores O movimento de dados sempre se dá Da ‘memória’ para um registrador De um registrador para a ‘memória’ Entre registradores Da ‘memória’ para a ‘memória’, em bloco Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Deve-se descrever um algoritmo antes de programá-lo em uma linguagem de programação Algoritmo para o método da bolha Versão 1 (descrição informal). Compare C1 com C2 e troque-os de compartimentos se C1 > C2. Faça o mesmo com C2 e C3, depois C3 e C4, até Cn- 1 e Cn. Com isso, no fim dessa fase o maior elemento da seqüência estará no compartimento n. Fazemos agora uma segunda fase, indo com as comparações até Cn-1, e então teremos o segundo maior elemento da seqüência no compartimento n - 1. Repetimos essas fases indo com as comparações até  Cn-2, depois Cn-3, … e, por último, indo até C2. As tiras terminam ordenadas. Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Algoritmo para o método da bolha (cont.) Versão 2 (formalização inicial) para i variando de n até 2 faça: compare C1 com C2,  C2 com C3, … Ci-1 com Ci, trocando cada par de seus compartimentos se Ci > Ci+1 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Algoritmo para o método da bolha (cont.) Versão 3 (formalização final) para i variando de n até 2     faça: para j variando de 1 até i-1 faça: se Cj > Cj+1, troque-os de compartimentos Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

4. O que é um algoritmo? (cont.) Programa em Pascal Program Bolha; { Dados N e uma seqüência de N números, coloca-os em ordem crescente pelo método da bolha. No final, imprime a seqüência ordenada. } var   N, { Número de elementos da seqüência }    I, J: integer; { Índices }    C: array[1..100] of real; { Compartimentos, máximo 100 elementos }    Aux: real; { Variável auxiliar usada na troca de conteúdo entre 2 compartimentos } begin   {entrada dos dados e colocação no vetor C}    ... { Ordenação }    for I:=N downto 2       do for J:=1 to I-1             do if C[J] > C[J+1]                  then begin { troca C[J] com C[J+1] }                               Aux:=C[J]; C[J]:=C[J+1]; C[J+1]:=Aux                         end;     {Saída do resultado}   ... end. Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução  2. O problema a ser resolvido  3. Soluções obtidas  4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual dos 3 é o melhor algoritmo? Critério de complexidade: Número de comparações em função do número de dados de entrada Indica a eficiência pela rapidez, ou o tempo que leva para ser executado Poderia ser outro critério Por exemplo, num computador, o número de instruções executadas Não vai dar diferença em termos do ‘melhor’ Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) 3.1 MÉTODO DE SELEÇÃO (em cada varrida, seleciona-se o menor) 5 10 3 7 15 2 1 9 3 10 5 7 15 2 1 9 2 10 5 7 15 3 1 9 1 10 5 7 15 3 2 9 1 5 10 7 15 3 2 9 1 3 10 7 15 5 2 9 1 2 10 7 15 5 3 9 1 2 7 10 15 5 3 9 1 2 5 10 15 7 3 9 1 2 3 10 15 7 5 9 1 2 3 7 15 10 5 9 1 2 3 5 10 15 7 9 1 2 3 5 7 15 10 9 1 2 3 5 7 10 15 9 1 2 3 5 7 9 15 10 1 2 3 5 7 9 10 15 1 2 3 4 5 6 7 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) Número total de comparações: 1a. varrida: 7 comparações 2a. varrida: 6 comparações 3a. varrida: 5 comparações ... 7a. Varrida: 1 comparação Resulta, para as 8 tiras, uma P.A. 7 + 6 + 5 + 4 + 3 + 2 + 1 = 7  (7 + 1) / 2 = 8  (8 – 1) / 2 = 28 Para n números: n  (n – 1) / 2 pode ser provado por indução finita Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) 3.2 MÉTODO DA BOLHA (em cada varrida, compara-se e troca-se de 2 em 2) 5 10 3 7 15 2 1 9 5 3 10 7 15 2 1 9 5 3 7 10 15 2 1 9 5 3 7 10 2 15 1 9 5 3 7 10 2 1 15 9 5 3 7 10 2 1 9 15 mostra 5 3 7 10 2 1 9 15 só trocas 3 5 7 10 2 1 9 15 3 5 7 2 10 1 9 15 3 5 7 2 1 10 9 15 3 5 7 2 1 9 10 15 3 5 2 7 1 9 10 15 3 5 2 1 7 9 10 15 3 2 5 1 7 9 10 15 3 2 1 5 7 9 10 15 2 3 1 5 7 9 10 15 2 1 3 5 7 9 10 15 1 2 3 5 7 9 10 15 1 2 5 4 3 6 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) Método da bolha Melhor caso: sequência já ordenada (critério: não houve nenhuma troca) Ex: 1 2 3 5 7 9 10 15 n – 1 comparações Pior caso: ordem contrária 15 10 9 7 5 3 2 1 n  (n – 1) / 2 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) 3.3 MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara para trás) 5 10 3 7 15 2 1 9 5 3 10 7 15 2 1 9 3 5 10 7 15 2 1 9 3 5 7 10 15 2 1 9 3 5 7 10 2 15 1 9 3 5 7 2 10 15 1 9 3 5 2 7 10 15 1 9 3 2 5 7 10 15 1 9 2 3 5 7 10 15 1 9 2 3 5 7 10 1 15 9 2 3 5 7 1 10 15 9 2 3 5 1 7 10 15 9 2 3 1 5 7 10 15 9 2 1 3 5 7 10 15 9 1 2 3 5 7 10 15 9 1 2 3 5 7 10 9 15 1 2 3 5 7 9 10 15 3.3 MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara para trás) 5 10 3 7 15 2 1 9 5 3 10 7 15 2 1 9 3 5 10 7 15 2 1 9 3 5 7 10 15 2 1 9 3 5 7 10 2 15 1 9 3 5 7 2 10 15 1 9 3 5 2 7 10 15 1 9 3 2 5 7 10 15 1 9 2 3 5 7 10 15 1 9 2 3 5 7 10 1 15 9 2 3 5 7 1 10 15 9 2 3 5 1 7 10 15 9 2 3 1 5 7 10 15 9 2 1 3 5 7 10 15 9 1 2 3 5 7 10 15 9 1 2 3 5 7 10 9 15 1 2 3 5 7 9 10 15 1 2 3 5 4 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) Método da inserção Melhor caso: sequência já ordenada Ex: 1 2 3 5 7 9 10 15 n – 1 comparações Pior caso: ordem contrária 15 10 9 7 5 3 2 1 n  (n – 1) / 2 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) Portanto, no pior caso todos dão n  (n – 1) / 2 = (n2 – n ) / 2 Para n muito grande (caso assintótico) n2 >> n Despreza-se o n e tem-se praticamente n2 comparações Notação O: O(n2) “ordem de n2” Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

5. Qual é o melhor algoritmo? (cont.) O(n2) “ordem de n2” Significa que, assintoticamente (n grande), dobrando-se o número de elementos a serem ordenados, o tempo de ordenação quadruplicará Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução  2. O problema a ser resolvido  3. Soluções obtidas  4. O que é um algoritmo?  5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar a eficiência? Vejamos o método Binary merge sort ou Ordenação por intercalação binária Ordenação por gente preguiçosa Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Estrutura de dados em forma de ÁRVORE BINÁRIA Níveis 1 2 3 Raiz Nós Folhas Altura Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Intercalação de 2 grupos de 4 dados já ordenados 1 2 3 4 5 6 7 8 10 15 20 25 11 12 16 27 10 11 12 15 16 20 25 27 sai fica (São necessários 2 ponteiros movendo-se cada um sequencialmente, e uma área auxiliar) área auxiliar Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Intercalação de 2 grupos de 4 dados sem área auxiliar 1 2 3 4 5 6 7 8 10 15 20 25 11 12 16 27 10 11 20 25 15 12 16 27 10 11 20 25 12 15 16 27 10 11 12 25 20 15 16 27 10 11 12 25 15 20 16 27 10 11 12 25 15 16 20 27 10 11 12 15 25 16 20 27 10 11 12 15 16 25 20 27 10 11 12 15 16 20 25 27 (15 entra em seu lugar) (20 entra em seu lugar) (25 entra em seu lugar) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Notar que as regras R1 a R6 podem ser seguidas, se as operações são feitas sequencialmente. R1: Pode-se levantar um pouco uma tira de seu compartimento, e ver seu conteúdo R2: Se uma tira estiver abaixada, seu número está invisível (é desconhecido) R3: No máximo 2 tiras podem estar levantadas ao mesmo tempo R4: O conteúdo de 2 tiras pode ser comparado para saber qual o maior R5: Duas tiras podem ser trocadas de compartimento (no caso, uma é retirada e colocada em uma área auxiliar) R6: Podem-se anotar números de compartimentos Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Número de comparações: Seja um maço inicial com n cartões, n = 2m, m int. Cada pessoa P, em um nível v, recebe e intercala cartões de seus dois ajudantes do nível v+1 Ex. com dois grupos de 4 cartões, total 8 cartões 1. Compara 2 de 8 e tira o menor, sobram 7 2. Compara 2 de 7 e tira o menor, sobram 6 3. Compara 2 de 6 e tira o menor, sobram 5 4. Compara 2 de 5 e tira o menor, sobram 4 5. Compara 2 de 4 e tira o menor, sobram 3 6. Compara 2 de 3 e tira o menor, sobram 2 7. Compara 2 de 2 e tira o menor, sobra 1, o maior Portanto, houve 7 comparações Assim, para um total de n cartões nos dois grupos, haverá n-1 comparações no pior caso Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Número de comparações (cont.): Ex. de melhor caso: P no nível 1, intercalando 2 maços com os números 1, 2, 3, 4 e 5, 6, 7, 8 dá 4 comparações (em lugar de 7, o pior caso) Portanto, o número total de comparações feitas pelo total das pessoas no nível v com os cartões dos ajudantes do nível v+1 é então, no pior caso n – (número de pessoas em v) Quantas pessoas existem e quantas comparações são feitas em cada nível, no pior caso? Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Nível No nós No comp. 20=1 n-1 1 21=2 n-2 2 22=4 n-4 3 23=8 n-8 ... m-1 2m-1 n-n/2 m 2m n-n=0 número de folhas Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Portanto, o número total de comparações é C = (n-1) + (n-2) + (n-4) + (n-8) + ... + (n-n/2) Como são m (0 a m-1) termos a serem somados, onde m é a altura da árvore, C = mn – (1 + 2 + 4 + 8 + ... + n/2) Precisamos calcular o número de nós de uma árvore binária com n/2 folhas Lembremos que no último nível, m, não há comparações No. de nós de uma árvore com n/2 folhas Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Número total de nós de uma árvore binária Com n/2 folhas, a árvore tem 2(n/2) – 1 = n – 1 nós Nível No. nós Total de nós 1 2 3 4 7 8 15 ... m-1 2m-1 2x2m-1-1 m 2m 2x2m-1 número de folhas Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Como tínhamos C = mn – (1 + 2 + 4 + 8 + ... + n/2) então C = mn – (n – 1) = mn – n + 1 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Resta calcular m, a altura da árvore, em função de n, no de elementos a ordenar (número de folhas) Nível No. nós 1 2 4 3 8 ... m-1 2m-1 m 2m número de folhas (n) Portanto, n = 2m, então log2 n = log2 2m, m = log2 n Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Como C = mn – n + 1 e m = log2 n No nosso caso, n = 8; portanto no pior caso C = 8  3 – 8 + 1 = 17 comparações Comparar com o quadrático: 28 comparações Portanto, a ordenação por intercalação binária tem complexidade O(n log n) Será que ela é muito melhor do que a O(n2)? C = n log2n – n + 1 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Notar que ao n ficar muito grande, a tendência ao se dobrar n Nos quadráticos é quadruplicar o número de comparações Na intercalação binária é duplicar esse número Ex.: n quadr. int. bin. Pois log n aumenta cada vez menos com n 4096 8.386.560 45.057 8192 33.550.336 98.305 Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Numa lista telefônica Assinantes Quadrático Intercal. binária 131.072 8.589.869.056 2.097.153 1.048.576 549.755.813.888 19.922.945 Computador que faz 1.000.000 de comparações por segundo: só nas comparações, 6 dias 20 s Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

6. É possível melhorar? (cont.) Espaço requerido Não é preciso usar a árvore Solução simples: usar uma única fileira adicional (mais n posições de ‘memória’) Há métodos n log n que não requerem espaço adicional Um desses é o usado normalmente, Quicksort (mas usa uma pilha de recursão) Ver vários vídeos no youtube, por exemplo vizualization of quicksort Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

7. Algoritmo ótimo (cont.) Ordenadora de cartões IBM-082(1949, 650 cpm) (Ordenação física tipo sort-merge com base 10) Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução  2. O problema a ser resolvido  3. Soluções obtidas  4. O que é um algoritmo?  5. Qual é o melhor algoritmo?  6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 7. Algoritmo ótimo Existem métodos ainda mais rápidos que os n log n? É possível provar formalmente que não existe algoritmo de ordenação por comparação entre os objetos, com complexidade melhor do que n log n. Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise TÓPICOS  1. Introdução  2. O problema a ser resolvido  3. Soluções obtidas  4. O que é um algoritmo?  5. Qual é o melhor algoritmo?  6. É possível melhorar a eficiência?  7. Algoritmo ótimo 8. Conclusão Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise ONE-MINUTE PAPER NO FIM DA PALESTRA, ESCREVER NUM PEDAÇO DE PAPEL: 1. O QUE APRENDI DE MAIS IMPORTANTE? 2. QUAL A MAIOR DÚVIDA QUE FICOU? 3. COMENTÁRIOS Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 8. Conclusão Vimos alguns tópicos da análise de algoritmos uma área fundamental da ciência da computação que visa a descoberta de algoritmos eficientes a comparação de algoritmos quanto à eficiência a prova de que algum algoritmo é ótimo a prova formal de que um algoritmo está correto e muito mais! Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

Valdemar W. Setzer – Algoritmos e sua análise 8. Conclusão (cont.) A computação, do ponto de vista algorítmico, está muito mais para a matemática do que para qualquer outra ciência Portanto, no ensino médio, a disciplina correta para se introduzir noções de ciência da computação e interessar alunos por ela é a matemática Pode-se usar o método que foi aqui descrito Ciência da computação não é saber usar um computador! É resolver problemas por meio de algoritmos!!! Valdemar W. Setzer – Algoritmos e sua análise 11/10/17

ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO F I M ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Valdemar W. Setzer Depto. de Ciência da Computação da USP Projeto “Embaixadores da Matemática” Ver artigo e esta apresentação em www.ime.usp.br/~vwsetzer google: valdemar setzer Valdemar W. Setzer – Algoritmos e sua análise 11/10/17