SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Análise de
Algoritmos

 Profa. Maria Inés Castiñeira, Dra.
 Unisul – Campus Grande Florianópolis
 Ciência da Computação
O que é um algoritmo?

   Algoritmo: Sequência finita e ordenada de
    instruções necessárias para a resolução
    de um problema bem formulado, possível
    de ser implementado em computador,
    que sempre termina num determinado
    período de tempo, produzindo o resultado
    ou indicando a impossibilidade de
    obtenção do mesmo.
   Estruturas de Dados: forma ou processo
    de guardar informação
Algoritmos e Estruturas de
Dados
   Algoritmos são métodos para resolver problemas
      problemas têm dados
      dados são tratados (neste contexto)
       computacionalmente
   O Processo de organização dos dados pode
    determinar a eficiência do algoritmo
      algoritmos simples podem requerer estruturas de
       dados complexas
      algoritmos complexos podem requerer estruturas de
       dados simples
   Para maximizar a eficiência de um algoritmo as
    estruturas de dados utilizadas têm de ser projetadas
    em simultâneo com o desenvolvimento do algoritmo
Algoritmos: área de estudo e
pesquisa
   Suficientemente antiga que os conceitos básicos e a
    informação essencial são bem conhecidos
   Suficientemente nova de forma a permitir novas
    descobertas e novos resultados
   Imensas áreas de aplicação:
      Ciência (Ex: Genoma humano)
      Engenharia (problemas de otimização)
      Comerciais (e-commerce, logística)
      Saúde (Política:distribuição de recursos escasos;
        Análise e tratamento de imagens para
        diagnóstico, ...)
      Internet: definição de roteamento (grafos), algoritmos
        de busca e indexação.
Porquê estudar
complexidade?
   Serve para escolher entre vários algoritmos o mais
    eficiente

   Desenvolver algoritmos novos e mais eficazes para
    problemas que já tem solução

   Melhorar os algoritmos existentes

   Permite saber se para um determinado problema é
    viável obter o resultado com um dado algoritmo

   Permite saber se para um dado problema é viável
    obter o resultado para um certo número de valores de
    entrada e um algoritmo determinado
Como analisar Algoritmos?
   Para avaliar e comparar algoritmos
    diversas características podem ser
    utilizadas:
     Tempo de execução
     Memória usada (espaço)
     Linhas de código
     Robustez (comportamento com dados
      não esperados)
     Correta obtenção do resultado
     Qualidade do código
Variáveis na análise de
Algoritmos
              
              
              
                 TEMPO
              
              
              
              
Análise temporal
   È a forma mais utilizada

   Pode ser realizada de dois formas:

       Tempo real: necessário para execução
        do algoritmo. Como medir?
       Número de instruções necessárias à
        execução
Análise de Algoritmos

   Análise precisa do tempo (medindo durante a
    execução) é uma tarefa complicada:
      algoritmo é implementado numa dada linguagem
      linguagem é compilada e programa é executado
       num dado computador
      difícil prever tempos de execução de cada instrução
       e antever otimizações
      muitos algoritmos são "sensíveis" aos dados de
       entrada
      muitos algoritmos não são bem compreendidos


   Medidas de análise devem ser independentes da
    tecnologia (hardware/software)
   Para prever o tempo de execução de um programa
    apenas é necessário um pequeno conjunto de
    ferramentas matemáticas
Complexidade de Algoritmos
   A análise de algoritmos (complexidade do algoritmo)
    serve para medir a quantidade de trabalho realizada
    pelo algoritmo.
   Essa quantidade é expressa em função de operações
    fundamentais, as quais variam de acordo com o
    algoritmo, e em funçao do volume de dados
    Exemplo: Exiba mensagem inicial;
              Abra arquivo X; Crie arquivo Xbis;
              Enquanto (not FinalArquivo X ) faça:
              { Leia w em X;
                Escreva w em Xbis;
              }
              Feche X; Feche Xbis.

    Operações fundamentais? Leia w e/ou Escreva w
Operações primitivas ou
fundamentais

   Atribuição de valor a uma variável;
   Chamada de métodos
   Operações aritméticas;
   Comparação de dois números;
   Acesso a um elemento de um array
   Retorno de um método
   .....

Análise de Algoritmos
   Que dados usar?

       dados reais: verdadeira medida do custo de
        execução
       dados aleatórios: assegura-nos que as
        experiências testam o algoritmo e não
        apenas os dados específicos – Caso médio
       dados perversos: mostram que o
        algoritmo funciona com qualquer tipo de
        dados. – Pior caso!
       dados benéficos: – Melhor caso
Dados de entrada: Pior caso

   Por que é importante estudar o pior caso na
    análise de algoritmos?

       ele é um limite superior, nunca vai ser pior
        do que isso!
       Ele ocorre com bastante frequência em
        alguns algoritmos (pesquisa de um item em
        uma lista sendo que o item não se encontra
        na lista)
       Muitas vezes o caso médio é tão ruim
        quanto o pior caso.
Medida do Tempo de
Execução de um Programa

• O projeto de algoritmos é fortemente influenciado pelo
   estudo de seus comportamentos.
• Depois que um problema é analisado e decisões de
   projeto são finalizadas, é necessário estudar as várias
   opções de algoritmos a serem utilizados,
   considerando os aspectos de tempo de execução e
   espaço ocupado.
• Muitos desses algoritmos são encontrados em áreas
   como pesquisa operacional, otimização, teoria dos
   grafos, estatística, probabilidades, entre outras.
Análise: Crescimento de
Funções
   O tempo de execução geralmente dependente de
    um único parâmetro N
      ordem de um polinômio
      tamanho de um arquivo a ser processado, ordenado,
       etc, ou,
      medida abstrata do tamanho do problema a
       considerar (usualmente relacionado com o
       número de dados a processar)
   Quando há mais de um parâmetro
      procura-se exprimir todos os parâmetros em função
       de um só
      faz-se uma análise em separado para cada
       parâmetro
Análise: Crescimento de
Funções
   Os Algoritmos têm tempo de execução
    proporcional a

1 - muitas instruções são executadas uma só vez ou
   poucas vezes (se isto for verdade para todo o
   programa diz-se que o seu tempo de execução é
   constante)
logN - tempo de execução é logarítmico (cresce
   ligeiramente à medida que N cresce) (quando N
   duplica log N aumenta mas muito pouco; apenas
   duplica quando N aumenta para N^2)
N - tempo de execução é linear. Típico quando algum
   processamento é feito para cada dado de entrada.
   Situação ótima quando é necessário processar N
   dados de entrada, ou produzir N dados na saída.
Análise: Crescimento de
Funções
N log N - típico quando se reduz um problema em
   sub-problemas, se resolve estes separadamente e se
   combinam as soluções (se N é 1 milhão N log N é
   perto de 20 milhões)
N2 - tempo de execução quadrático (típico quando é
   preciso processar todos os pares de dados de
   entrada) (prático apenas em pequenos problemas, ex:
   produto matriz - vetor)
N3 - tempo de execução cúbico (para N = 100,
   N^3 = 1 milhão, ex: produto de matrizes)
2N - tempo de execução exponencial (provavelmente de
   pouca aplicação prática; típico em soluções de força
   bruta) (para N = 20, 2^N = 1 milhão; N duplica,
   tempo passa a ser o quadrado)
Tamanho de problemas que
podem ser resolvidos
Seja n a quantidade de dados que um algoritmo pode
processar. Esse algoritmo demora f(n) microssegundos (µs)
para resolver o problema.

A tabela apresenta o maior tamanho n de um problema que
pode ser resolvido no tempo t=1 segundo e tempo =1 minuto.

         f(n)       1 segundo      1 minuto
                                  Math ERROR:
         ln(n)     < 3 * 10^100   Muito grande!
           n         1000000       60000000
          n2          1000            7700
          2n           20              26
          n!           10              11
Notação "O grande"

      Notação matemática que nos permite
       suprimir detalhes na análise de algoritmos

      g(n)=O(f(n))


g(n) é da ORDEM de
f(n)
c0.f(n) é um limite
superior para g(n) a
partir de um valor n0
Notação "O grande"

   Definição: uma função g(N) diz-se ser
    O(f(N)) se existem constantes c0 e N0 tais
    que g(N) < c0 f(N) para qualquer N > N0
   A notação é usada com três objetivos:
    1.   limitar o erro que é feito ao ignorar os
         termos menores nas fórmulas matemáticas
    2.   limitar o erro que é feito na análise ao
         desprezar parte de um programa que
         contribui de forma mínima para o
         custo/complexidade total
    3.   permitir-nos classificar algoritmos de
         acordo com limites superiores no seu
         tempo de execução.
Forma para determinação de
complexidade
   Suponha o seguinte código

         for (i = 0; i < N; i++) { instruções; }

    contabilização do número de instruções é simples: N iterações e
    em cada uma são executadas um numero constante de
    instruções: O(N)

   Suponha o código seguinte:

          for (i = 0; i < N; i++) {
              for (j = 0; j < N; j++) {
                      instruções;
              }
          }
    contabilização do número de instruções é ainda simples: loop
    interno é O(N) e é executado N vezes: O(N2)
Como melhorar o
desempenho?
   Se existe um algoritmo A de ordem
    O(n)=n e outro B de ordem O(n)=n!
    então é preferível utilizar A.

   Se não temos ou conhecemos o
    algoritmo apropriado?
    Usar técnicas de projeto de algoritmos
Técnicas de Projeto de
Algoritmos
   Dividir para conquistar (Divide-and-
    Conquer)
   Programação dinámica (otimização)
   Procura ganânciosa-gulosa (Greedy -
    otimização)
   Branch-and-bound ( Pruning)
   Aprendizagem (Machine Learning)
   Aleatórios (Randomized)
   Procura exaustiva ou força bruta (Brute
    Force ou Backtraking)
Técnicas de Projeto
   Dividir para conquistar (Divide-and-
    Conquer)
       Resolver um problema grande pode ser
        muito difícil, mas resolver dois problemas
        menores pode se tornar significativamente
        mais simples
       Divide o problema em problemas menores e
        resolve cada um de uma forma
        independente
       Combina as soluções de todos os
        subproblemas para obter a solução do
        problema original
       A etapa de recombinação das soluções é
        normalmente crítica e dispendiosa em
        termos de tempo
Técnicas de projeto de Alg.

   Programação dinâmica (otimização)
       Uma série de escolhas deve ser feita
        para atingir a solução ótima
       A medida que as escolhas são
        realizadas surgem subproblemas da
        mesma forma, que podem aparecer
        repetidamente.
       A idéia é guardar a solução para
        cada um desses subproblemas.
       Tempo exponencial pode ser
        transformado em polinomial
Técnicas de projeto de Alg.

   Procura ganânciosa (Greedy, otimização)
       Muitos algoritmos têm procedimentos
        iterativos e escolhem em cada iteração um
        número de possíveis alternativas
       Escolhe as alternativas mais atrativas,
        algumas podem levar à solução, outras
        não.
       Pode não levar à solução correta
Técnicas de projeto de Alg.

   Procura exaustiva ou força bruta (Brute
    Force)
       O algoritmo examina todas as alternativas
        possíveis para encontrar uma solução
        particular.
       Pode não encontrar uma solução em tempo
        útil, mas garante que a encontra
   Branch-and-bound ( Pruning)
       Ignora um conjunto de alternativas
        desnecessárias
       Menor tempo de execução e garante que
        encontra a solução
Técnicas de Projeto
   Aprendizagem (Machine Learning)
    Baseiam a sua estratégia na análise
    computacional de dados previamente
    colecionados
   Aleatórios (Randomized)
    Em cada passo pode ser atirada uma
    moeda ao ar para decidir o passo seguinte
    Existem problemas práticos onde estes
    algoritmos são competitivos relativamente
    aos algoritmos determinísticos
Referências

   CORMEN, T.H et al. Algoritmos: Teoria e
    prática. 2a Ed. Campus, RJ, 2002.
   FREITAS, Ana Teresa. Análise de
    Algoritmos. Material didático (.pdf),
    INESC-ID/IST, 2005.

Contenu connexe

Tendances

Capítulo 03 - Conquistando vantagem competitiva com os sistemas de informação
Capítulo 03 - Conquistando vantagem competitiva com os sistemas de informaçãoCapítulo 03 - Conquistando vantagem competitiva com os sistemas de informação
Capítulo 03 - Conquistando vantagem competitiva com os sistemas de informaçãoEverton Souza
 
Agentes Inteligentes - IA
Agentes Inteligentes - IAAgentes Inteligentes - IA
Agentes Inteligentes - IAThiago Marinho
 
Facilitando Conversas Difíceis - Scrum Gathering Rio 2018
Facilitando Conversas Difíceis  - Scrum Gathering Rio 2018Facilitando Conversas Difíceis  - Scrum Gathering Rio 2018
Facilitando Conversas Difíceis - Scrum Gathering Rio 2018Mariana Graf
 
Teoria das Organizações
Teoria das OrganizaçõesTeoria das Organizações
Teoria das OrganizaçõesClaudio Toldo
 
Lingua em uso linguagem e lingua
Lingua em uso   linguagem e linguaLingua em uso   linguagem e lingua
Lingua em uso linguagem e linguaMoises Ribeiro
 
1) Mediação de Conflito
1) Mediação de Conflito 1) Mediação de Conflito
1) Mediação de Conflito CÉSAR TAVARES
 
Empreendedorismo no ramo da beleza
Empreendedorismo no ramo da belezaEmpreendedorismo no ramo da beleza
Empreendedorismo no ramo da belezaRenata Tárrio
 
Sistema de informação gerencial
Sistema de informação gerencialSistema de informação gerencial
Sistema de informação gerencialDenilson Sousa
 
Planejamento e Organização no Ambiente de Trabalho
Planejamento e Organização no Ambiente de TrabalhoPlanejamento e Organização no Ambiente de Trabalho
Planejamento e Organização no Ambiente de TrabalhoBenjamim Garcia Netto
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoLeonardo Melo Santos
 

Tendances (20)

Negociação
NegociaçãoNegociação
Negociação
 
Capítulo 03 - Conquistando vantagem competitiva com os sistemas de informação
Capítulo 03 - Conquistando vantagem competitiva com os sistemas de informaçãoCapítulo 03 - Conquistando vantagem competitiva com os sistemas de informação
Capítulo 03 - Conquistando vantagem competitiva com os sistemas de informação
 
Ferramentas de Gestão
Ferramentas de GestãoFerramentas de Gestão
Ferramentas de Gestão
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Agentes Inteligentes - IA
Agentes Inteligentes - IAAgentes Inteligentes - IA
Agentes Inteligentes - IA
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Facilitando Conversas Difíceis - Scrum Gathering Rio 2018
Facilitando Conversas Difíceis  - Scrum Gathering Rio 2018Facilitando Conversas Difíceis  - Scrum Gathering Rio 2018
Facilitando Conversas Difíceis - Scrum Gathering Rio 2018
 
Mapeamento processos
Mapeamento processosMapeamento processos
Mapeamento processos
 
Aula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmosAula 4 - Introducão a algoritmos
Aula 4 - Introducão a algoritmos
 
Teoria das Organizações
Teoria das OrganizaçõesTeoria das Organizações
Teoria das Organizações
 
Negociação totvs pronta
Negociação totvs prontaNegociação totvs pronta
Negociação totvs pronta
 
Lingua em uso linguagem e lingua
Lingua em uso   linguagem e linguaLingua em uso   linguagem e lingua
Lingua em uso linguagem e lingua
 
1) Mediação de Conflito
1) Mediação de Conflito 1) Mediação de Conflito
1) Mediação de Conflito
 
Empreendedorismo no ramo da beleza
Empreendedorismo no ramo da belezaEmpreendedorismo no ramo da beleza
Empreendedorismo no ramo da beleza
 
Gestao de conflitos
Gestao de conflitosGestao de conflitos
Gestao de conflitos
 
Gestão por processos
Gestão por processosGestão por processos
Gestão por processos
 
Sistema de informação gerencial
Sistema de informação gerencialSistema de informação gerencial
Sistema de informação gerencial
 
Planejamento e Organização no Ambiente de Trabalho
Planejamento e Organização no Ambiente de TrabalhoPlanejamento e Organização no Ambiente de Trabalho
Planejamento e Organização no Ambiente de Trabalho
 
Trabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalhoTrabalho em equipe e ética no trabalho
Trabalho em equipe e ética no trabalho
 
Gestão conflitos
Gestão conflitosGestão conflitos
Gestão conflitos
 

En vedette

13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsortFlávio Freitas
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesMauricio Volkweis Astiazara
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresPedro Valente
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sortLeno Oliveira
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoDelacyr Ferreira
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 

En vedette (17)

Aulas TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)
Aulas TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)Aulas TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)
Aulas TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)
 
Red
RedRed
Red
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de Chaves
 
7 slides
7 slides7 slides
7 slides
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sort
 
Ordenação por inserção
Ordenação por inserçãoOrdenação por inserção
Ordenação por inserção
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoAnálise de Algoritmos - Problemas, instâncias, algoritmos e tempo
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 

Similaire à Analise Algoritmos

Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NAAula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NACloves da Rocha
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
01 algorimos e complexidade introduç o
01   algorimos e complexidade introduç o01   algorimos e complexidade introduç o
01 algorimos e complexidade introduç oCravid Ekuikui
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptxPatrícia Melo
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
Apostila algoritmos
Apostila algoritmosApostila algoritmos
Apostila algoritmosPedro Nelson
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptssuserd654cb1
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptssuserd654cb1
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmiadiogoa21
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)Carlos Santos
 
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programaçãoCarlos Santos
 

Similaire à Analise Algoritmos (20)

Cap1
Cap1Cap1
Cap1
 
0001
00010001
0001
 
000003 complexidade
000003 complexidade000003 complexidade
000003 complexidade
 
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NAAula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
01 algorimos e complexidade introduç o
01   algorimos e complexidade introduç o01   algorimos e complexidade introduç o
01 algorimos e complexidade introduç o
 
Aula1
Aula1Aula1
Aula1
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx4-Introducao programacao-convertido.pptx
4-Introducao programacao-convertido.pptx
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Apostila algoritmos
Apostila algoritmosApostila algoritmos
Apostila algoritmos
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmia
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)T02_LM3: Introdução à algoritmia (2013-2014)
T02_LM3: Introdução à algoritmia (2013-2014)
 
(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação(A02) LabMM3 - Introdução à programação
(A02) LabMM3 - Introdução à programação
 

Dernier

Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERDeiciane Chaves
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxKtiaOliveira68
 
Simulado 2 Etapa - 2024 Proximo Passo.pdf
Simulado 2 Etapa  - 2024 Proximo Passo.pdfSimulado 2 Etapa  - 2024 Proximo Passo.pdf
Simulado 2 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 

Dernier (20)

Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Orações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptxOrações subordinadas substantivas (andamento).pptx
Orações subordinadas substantivas (andamento).pptx
 
Simulado 2 Etapa - 2024 Proximo Passo.pdf
Simulado 2 Etapa  - 2024 Proximo Passo.pdfSimulado 2 Etapa  - 2024 Proximo Passo.pdf
Simulado 2 Etapa - 2024 Proximo Passo.pdf
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 

Analise Algoritmos

  • 1. Análise de Algoritmos Profa. Maria Inés Castiñeira, Dra. Unisul – Campus Grande Florianópolis Ciência da Computação
  • 2. O que é um algoritmo?  Algoritmo: Sequência finita e ordenada de instruções necessárias para a resolução de um problema bem formulado, possível de ser implementado em computador, que sempre termina num determinado período de tempo, produzindo o resultado ou indicando a impossibilidade de obtenção do mesmo.  Estruturas de Dados: forma ou processo de guardar informação
  • 3. Algoritmos e Estruturas de Dados  Algoritmos são métodos para resolver problemas  problemas têm dados  dados são tratados (neste contexto) computacionalmente  O Processo de organização dos dados pode determinar a eficiência do algoritmo  algoritmos simples podem requerer estruturas de dados complexas  algoritmos complexos podem requerer estruturas de dados simples  Para maximizar a eficiência de um algoritmo as estruturas de dados utilizadas têm de ser projetadas em simultâneo com o desenvolvimento do algoritmo
  • 4. Algoritmos: área de estudo e pesquisa  Suficientemente antiga que os conceitos básicos e a informação essencial são bem conhecidos  Suficientemente nova de forma a permitir novas descobertas e novos resultados  Imensas áreas de aplicação:  Ciência (Ex: Genoma humano)  Engenharia (problemas de otimização)  Comerciais (e-commerce, logística)  Saúde (Política:distribuição de recursos escasos; Análise e tratamento de imagens para diagnóstico, ...)  Internet: definição de roteamento (grafos), algoritmos de busca e indexação.
  • 5. Porquê estudar complexidade?  Serve para escolher entre vários algoritmos o mais eficiente  Desenvolver algoritmos novos e mais eficazes para problemas que já tem solução  Melhorar os algoritmos existentes  Permite saber se para um determinado problema é viável obter o resultado com um dado algoritmo  Permite saber se para um dado problema é viável obter o resultado para um certo número de valores de entrada e um algoritmo determinado
  • 6. Como analisar Algoritmos?  Para avaliar e comparar algoritmos diversas características podem ser utilizadas:  Tempo de execução  Memória usada (espaço)  Linhas de código  Robustez (comportamento com dados não esperados)  Correta obtenção do resultado  Qualidade do código
  • 7. Variáveis na análise de Algoritmos     TEMPO    
  • 8. Análise temporal  È a forma mais utilizada  Pode ser realizada de dois formas:  Tempo real: necessário para execução do algoritmo. Como medir?  Número de instruções necessárias à execução
  • 9. Análise de Algoritmos  Análise precisa do tempo (medindo durante a execução) é uma tarefa complicada:  algoritmo é implementado numa dada linguagem  linguagem é compilada e programa é executado num dado computador  difícil prever tempos de execução de cada instrução e antever otimizações  muitos algoritmos são "sensíveis" aos dados de entrada  muitos algoritmos não são bem compreendidos  Medidas de análise devem ser independentes da tecnologia (hardware/software)  Para prever o tempo de execução de um programa apenas é necessário um pequeno conjunto de ferramentas matemáticas
  • 10. Complexidade de Algoritmos  A análise de algoritmos (complexidade do algoritmo) serve para medir a quantidade de trabalho realizada pelo algoritmo.  Essa quantidade é expressa em função de operações fundamentais, as quais variam de acordo com o algoritmo, e em funçao do volume de dados Exemplo: Exiba mensagem inicial; Abra arquivo X; Crie arquivo Xbis; Enquanto (not FinalArquivo X ) faça: { Leia w em X; Escreva w em Xbis; } Feche X; Feche Xbis. Operações fundamentais? Leia w e/ou Escreva w
  • 11. Operações primitivas ou fundamentais  Atribuição de valor a uma variável;  Chamada de métodos  Operações aritméticas;  Comparação de dois números;  Acesso a um elemento de um array  Retorno de um método  ..... 
  • 12. Análise de Algoritmos  Que dados usar?  dados reais: verdadeira medida do custo de execução  dados aleatórios: assegura-nos que as experiências testam o algoritmo e não apenas os dados específicos – Caso médio  dados perversos: mostram que o algoritmo funciona com qualquer tipo de dados. – Pior caso!  dados benéficos: – Melhor caso
  • 13. Dados de entrada: Pior caso  Por que é importante estudar o pior caso na análise de algoritmos?  ele é um limite superior, nunca vai ser pior do que isso!  Ele ocorre com bastante frequência em alguns algoritmos (pesquisa de um item em uma lista sendo que o item não se encontra na lista)  Muitas vezes o caso médio é tão ruim quanto o pior caso.
  • 14. Medida do Tempo de Execução de um Programa • O projeto de algoritmos é fortemente influenciado pelo estudo de seus comportamentos. • Depois que um problema é analisado e decisões de projeto são finalizadas, é necessário estudar as várias opções de algoritmos a serem utilizados, considerando os aspectos de tempo de execução e espaço ocupado. • Muitos desses algoritmos são encontrados em áreas como pesquisa operacional, otimização, teoria dos grafos, estatística, probabilidades, entre outras.
  • 15. Análise: Crescimento de Funções  O tempo de execução geralmente dependente de um único parâmetro N  ordem de um polinômio  tamanho de um arquivo a ser processado, ordenado, etc, ou,  medida abstrata do tamanho do problema a considerar (usualmente relacionado com o número de dados a processar)  Quando há mais de um parâmetro  procura-se exprimir todos os parâmetros em função de um só  faz-se uma análise em separado para cada parâmetro
  • 16. Análise: Crescimento de Funções  Os Algoritmos têm tempo de execução proporcional a 1 - muitas instruções são executadas uma só vez ou poucas vezes (se isto for verdade para todo o programa diz-se que o seu tempo de execução é constante) logN - tempo de execução é logarítmico (cresce ligeiramente à medida que N cresce) (quando N duplica log N aumenta mas muito pouco; apenas duplica quando N aumenta para N^2) N - tempo de execução é linear. Típico quando algum processamento é feito para cada dado de entrada. Situação ótima quando é necessário processar N dados de entrada, ou produzir N dados na saída.
  • 17. Análise: Crescimento de Funções N log N - típico quando se reduz um problema em sub-problemas, se resolve estes separadamente e se combinam as soluções (se N é 1 milhão N log N é perto de 20 milhões) N2 - tempo de execução quadrático (típico quando é preciso processar todos os pares de dados de entrada) (prático apenas em pequenos problemas, ex: produto matriz - vetor) N3 - tempo de execução cúbico (para N = 100, N^3 = 1 milhão, ex: produto de matrizes) 2N - tempo de execução exponencial (provavelmente de pouca aplicação prática; típico em soluções de força bruta) (para N = 20, 2^N = 1 milhão; N duplica, tempo passa a ser o quadrado)
  • 18. Tamanho de problemas que podem ser resolvidos Seja n a quantidade de dados que um algoritmo pode processar. Esse algoritmo demora f(n) microssegundos (µs) para resolver o problema. A tabela apresenta o maior tamanho n de um problema que pode ser resolvido no tempo t=1 segundo e tempo =1 minuto. f(n) 1 segundo 1 minuto Math ERROR: ln(n) < 3 * 10^100 Muito grande! n 1000000 60000000 n2 1000 7700 2n 20 26 n! 10 11
  • 19. Notação "O grande"  Notação matemática que nos permite suprimir detalhes na análise de algoritmos  g(n)=O(f(n)) g(n) é da ORDEM de f(n) c0.f(n) é um limite superior para g(n) a partir de um valor n0
  • 20. Notação "O grande"  Definição: uma função g(N) diz-se ser O(f(N)) se existem constantes c0 e N0 tais que g(N) < c0 f(N) para qualquer N > N0  A notação é usada com três objetivos: 1. limitar o erro que é feito ao ignorar os termos menores nas fórmulas matemáticas 2. limitar o erro que é feito na análise ao desprezar parte de um programa que contribui de forma mínima para o custo/complexidade total 3. permitir-nos classificar algoritmos de acordo com limites superiores no seu tempo de execução.
  • 21. Forma para determinação de complexidade  Suponha o seguinte código for (i = 0; i < N; i++) { instruções; } contabilização do número de instruções é simples: N iterações e em cada uma são executadas um numero constante de instruções: O(N)  Suponha o código seguinte: for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { instruções; } } contabilização do número de instruções é ainda simples: loop interno é O(N) e é executado N vezes: O(N2)
  • 22. Como melhorar o desempenho?  Se existe um algoritmo A de ordem O(n)=n e outro B de ordem O(n)=n! então é preferível utilizar A.  Se não temos ou conhecemos o algoritmo apropriado? Usar técnicas de projeto de algoritmos
  • 23. Técnicas de Projeto de Algoritmos  Dividir para conquistar (Divide-and- Conquer)  Programação dinámica (otimização)  Procura ganânciosa-gulosa (Greedy - otimização)  Branch-and-bound ( Pruning)  Aprendizagem (Machine Learning)  Aleatórios (Randomized)  Procura exaustiva ou força bruta (Brute Force ou Backtraking)
  • 24. Técnicas de Projeto  Dividir para conquistar (Divide-and- Conquer)  Resolver um problema grande pode ser muito difícil, mas resolver dois problemas menores pode se tornar significativamente mais simples  Divide o problema em problemas menores e resolve cada um de uma forma independente  Combina as soluções de todos os subproblemas para obter a solução do problema original  A etapa de recombinação das soluções é normalmente crítica e dispendiosa em termos de tempo
  • 25. Técnicas de projeto de Alg.  Programação dinâmica (otimização)  Uma série de escolhas deve ser feita para atingir a solução ótima  A medida que as escolhas são realizadas surgem subproblemas da mesma forma, que podem aparecer repetidamente.  A idéia é guardar a solução para cada um desses subproblemas.  Tempo exponencial pode ser transformado em polinomial
  • 26. Técnicas de projeto de Alg.  Procura ganânciosa (Greedy, otimização)  Muitos algoritmos têm procedimentos iterativos e escolhem em cada iteração um número de possíveis alternativas  Escolhe as alternativas mais atrativas, algumas podem levar à solução, outras não.  Pode não levar à solução correta
  • 27. Técnicas de projeto de Alg.  Procura exaustiva ou força bruta (Brute Force)  O algoritmo examina todas as alternativas possíveis para encontrar uma solução particular.  Pode não encontrar uma solução em tempo útil, mas garante que a encontra  Branch-and-bound ( Pruning)  Ignora um conjunto de alternativas desnecessárias  Menor tempo de execução e garante que encontra a solução
  • 28. Técnicas de Projeto  Aprendizagem (Machine Learning) Baseiam a sua estratégia na análise computacional de dados previamente colecionados  Aleatórios (Randomized) Em cada passo pode ser atirada uma moeda ao ar para decidir o passo seguinte Existem problemas práticos onde estes algoritmos são competitivos relativamente aos algoritmos determinísticos
  • 29. Referências  CORMEN, T.H et al. Algoritmos: Teoria e prática. 2a Ed. Campus, RJ, 2002.  FREITAS, Ana Teresa. Análise de Algoritmos. Material didático (.pdf), INESC-ID/IST, 2005.