SlideShare uma empresa Scribd logo
1 de 40
Backtracking
Técnicas de Algoritmos
Técnicas de algoritmos apresentadas :

   Algoritmos de Força Bruta
   Algoritmos de Pesquisa Exaustiva
   Algoritmos Dividir e Conquistar
   Algoritmos Gulosos
   Algoritmos de Backtracking (retrocesso)




                                              2
Tópicos sobre Backtracking
    Conhecer a técnica.

    Apresentar a técnica através de objetos
     ou dedução que são aplicáveis no
     cotidiano.

    Desenvolver e explicar um algoritmo
     baseado em BACKTRACKING.
                                               3
Conceito sobre a técnica de
             Backtracking
   Significado:
        Volta de rastreamento.

   É um algoritmo baseado em estrutura de dados, tem
    como meta resolver o problema no menor intervalo de
    tempo, não levando em consideração o esforço para
    alcançar a solução.

   Usa recursividade.


                                                          4
Características do Backtracking

   Executa podas quando não é possível encontrar uma
    solução pelo caminho escolhido.
   Faz a busca em profundidade.
   O número de escolhas cresce pelo menos
    exponencialmente com o tamanho da instância.
   Passos em direção à solução final são tentados e
    registrados.
   Algoritmos tentativa e erro.


                                                        5
Animação Árvore de Backtracking



                                  6
Backtracking (animação)

                           Sem saída
               ?
                       Sem saída
                                        Sem saída

                       ?
Começo   ?    ?                       Sem saída
                                 Sem saída
                   ?
                               Êxito!


                                                    7
Exemplo de Busca em Profundidade
               LABIRINTO




                                   8
Exemplo de Busca em Profundidade
                         LABIRINTO

  Dado um labirinto, encontrar um caminho do início ao fim.
  Em cada cruzamento, você tem que decidir entre três ou
  menos escolhas:

   Siga em frente
   Vá para a esquerda
   Vá para a direita

  Cada escolha leva a um outro conjunto de opções.
  Uma ou mais sequências de escolhas podem levar a uma
                        solução.
               Vídeo demonstrativo

                                                              9
Aplicações cotidianas




                        10
GPS ( global position system )




Busca Exaustiva VS
Backtracking



                                  11
Resolver um enigma – resta 1

    Modo de preenchimento.

    Modo de remoção.

    Objetivo.

    Dificuldade.




                               12
Problema das N rainhas



                         13
Problema das 4 Rainhas
   Formulação do problema.

   Restrições.

   Modo de caminho.




BASTANTE ATENÇÃO

                              14
Demonstração
                                        Linha por Linha




1   2                               1        2       3
X   X                               X        X       X




                    1           3   4
    1   2   3   4   X           X   X
    X   X   X   X




                    1   2   3   4        1       2
                    X   X   X   X                         15
Algoritmo solução
   Algoritmo que nos mostra as possíveis soluções
    envolvendo um tabuleiro 8x8, consequentemente com 8
    rainhas a serem distribuídas.

   Clique para abrir o algoritmo




                                                      16
Problematização
   Suponha que você tem que fazer uma série de
    decisões, entre várias opções, onde você não
    tem informações suficientes para saber o que
    escolher e que cada decisão leva a um novo
    conjunto de escolhas, sendo que alguma
    sequência de escolhas (possivelmente mais de
    uma) pode ser uma solução para seu problema, o
    BACKTRACKING é uma maneira metódica de
    experimentar várias sequências de decisões, até
    encontrar uma que "funciona”.


                                                      17
Problematização
   Abordagem mais comum é decompor o processo
    em um número finito de tarefas parciais.

   A construção de uma solução é obtida através de
    tentativas (ou pesquisas) da árvore de sub-tarefas.




                                                          18
Simulação no Google Maps




                           19
Exemplificando
A árvore é composta de nós

Notação:
  Primeiro é o nó raiz

  Nós internos

  Nós folhas

Backtracking     pode    ser
pensado como a procura de
uma árvore para um nó
de “objetivo" de uma folha.

                               20
Exemplificando
   Cada nó não-folha em uma árvore é um pai de um ou
    mais       outros         nós         (seus      filhos)
    Cada nó na árvore, diferente da raiz, tem exatamente um
    dos pais
                                            Nó pai




      Nó pai

               Nós filhos                  Nós filhos


                                                           21
Problema dos Filósofos
   Tem-se 5 filósofos sentados ao redor de uma mesa.
   Cada filósofo tem um prato e um garfo para comer.
   A comida que será servida é um macarrão muito
    escorregadio que deve ser comido com dois talheres.
   Cada filósofo só pode comer o macarrão usando o seu
    garfo e o garfo de um dos dois filósofos sentados ao seu
    lado.
   Dois filósofos não podem usar o mesmo garfo juntos.
   Enquanto alguns filósofos comem os outros pensam,
    aguardando a hora de comer.

                                                               22
Problema dos Filósofos




                         23
Problema dos Filósofos - Algoritmo
int main ()
{
   int j=0, prox=0;
   printf ("Digite por qual filosofo começar: ");
   scanf("%d", &fil);
   printf ("Digite a quantidade de macarrão: ");
   scanf("%d", &mac);

    criafilosofo(mac,j);

    filosofo (prato, fil, prox);

    printf("%d",soma);
}
                                                    24
Problema dos Filósofos - Algoritmo
criafilosofo(mac,j)
{
   if (j<5)
   {
      prato[j]=mac;
      printf("Filosofo %d ",j);
      printf(": %in",prato[j]);
      j++;
      criafilosofo(mac,j);
   }
}

                                       25
Problema dos Filósofos - Algoritmo
chamaproxfil(int proximo)
{

    if (proximo==5)
       proximo=0;
    else
       proximo=proximo++;
    return proximo;
}




                                         26
Problema dos Filósofos - Algoritmo
filosofo (int prato[], int i, int prox)
{
   aux=chamaproxfil(prox);

  soma=(prato[0]+prato[1]+prato[2]+prato[3]+prato[4]);

  if ((i==aux)||((i+1)==aux)||((i-1)==aux)||((i==4)&&(aux==0))||
  ((i==0)&&(aux==4)))
  {
     filosofo(prato,i,aux);
  }



                                                                   27
Problema dos Filósofos - Algoritmo
else if(soma==0)
   {
      printf("Filosofo 1: %dn", prato[0]);
      printf("Filosofo 2: %dn", prato[1]);
      printf("Filosofo 3: %dn", prato[2]);
      printf("Filosofo 4: %dn", prato[3]);
      printf("Filosofo 5: %dn", prato[4]);
      printf("n");
   }




                                              28
Problema dos Filósofos - Algoritmo
else if (soma==1)
   {
         for(k=0;k<=4;k++)
         {
            if (prato[k]==1)
            {
               prato[k]=(prato[k]-1);
               filosofo(prato,i,aux);
            }
         }
   }

                                        29
Problema dos Filósofos - Algoritmo
else if((prato[aux]==0) ||(prato[i]==0))
   {
        filosofo(prato,i,aux);
   } else
   {
      prato[i]=prato[i]-1;
      prato[aux]=prato[aux]-1;

   i=i+1;

   if(i==5)
        i=0;
                                           30
Problema dos Filósofos - Algoritmo
        printf("Filosofo 1: %dn", prato[0]);
        printf("Filosofo 2: %dn", prato[1]);
        printf("Filosofo 3: %dn", prato[2]);
        printf("Filosofo 4: %dn", prato[3]);
        printf("Filosofo 5: %dn", prato[4]);
        printf("n");



        filosofo(prato, i, aux);//chamada recursiva à função filosofo

    }
}
                                                                        31
Problema dos Filósofos - Algoritmo

   Conhecer o algoritmo implementado.



   Clique aqui para abrir




                                         32
Começando a interação


                        33
Mãos a obra

   Acessem de qualquer máquina o link
    abaixo

   Avaliativo


      http://goo.gl/CFauR
                                         34
Mãos a obra

   No site procurem a aba AVALIAÇÃO

   E clique no link para começar a avaliação
     ( feito individualmente )




                                            35
Implementando



De acordo com as explicações implemente o
               algoritmo do
   “Problema da Soma dos Conjuntos”.



                                            36
Exercício Algoritmo
Suponha que você emitiu cheques em maio nos valores
de p(1), ..., p(n) ao longo do mês de setembro último.
No fim do mês, o banco informa que um total T foi
descontado de sua conta. Quais cheques foram
descontados? Por exemplo, se p = {61, 62, 63, 64} e T =
125 então só há duas possibilidades: ou foram
descontados os cheques 1 e 4 ou foram descontados os
cheques 2 e 3. esse é o “problema da soma de
subconjuntos ”. Desenvolva um algoritmo para resolver
este problema empregando a estratégia backtracking.


                                                          37
Finalizando


              38
Considerações finais


                       39
Obrigado pela atenção!!



   Danilo Fraga Costa
   Reginaldo Faria da Silva
   Douglas Vinícius Souza da
   Mata
   Saymon Cristian Alves Oliveira
                                    40

Mais conteúdo relacionado

Mais procurados

Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallJohnnatan Messias
 
Equações Algébricas e Transcendentes - Método da Bisseção - @professorenan
Equações Algébricas e Transcendentes - Método da Bisseção - @professorenanEquações Algébricas e Transcendentes - Método da Bisseção - @professorenan
Equações Algébricas e Transcendentes - Método da Bisseção - @professorenanRenan Gustavo
 
Módulo4 regressao no spss
Módulo4 regressao no spssMódulo4 regressao no spss
Módulo4 regressao no spssBruna Ventorim
 
Reinforcement Learning 5. Monte Carlo Methods
Reinforcement Learning 5. Monte Carlo MethodsReinforcement Learning 5. Monte Carlo Methods
Reinforcement Learning 5. Monte Carlo MethodsSeung Jae Lee
 
AI Greedy and A-STAR Search
AI Greedy and A-STAR SearchAI Greedy and A-STAR Search
AI Greedy and A-STAR SearchAndrew Ferlitsch
 
Aula 2 - Distribuição de probabilidade
Aula 2 - Distribuição de probabilidadeAula 2 - Distribuição de probabilidade
Aula 2 - Distribuição de probabilidadeFelipe Pontes
 
Heuristic or informed search
Heuristic or informed searchHeuristic or informed search
Heuristic or informed searchHamzaJaved64
 
Introductions to Online Machine Learning Algorithms
Introductions to Online Machine Learning AlgorithmsIntroductions to Online Machine Learning Algorithms
Introductions to Online Machine Learning AlgorithmsDataWorks Summit
 
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
 
QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)
QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)
QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)José Junior Barreto
 
Lecture 25 hill climbing
Lecture 25 hill climbingLecture 25 hill climbing
Lecture 25 hill climbingHema Kashyap
 
Método estatístico
Método estatísticoMétodo estatístico
Método estatísticoPaulo Carioca
 
Hill-climbing #2
Hill-climbing #2Hill-climbing #2
Hill-climbing #2Mohamed Gad
 

Mais procurados (20)

Uninformed search
Uninformed searchUninformed search
Uninformed search
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-Warshall
 
Equações Algébricas e Transcendentes - Método da Bisseção - @professorenan
Equações Algébricas e Transcendentes - Método da Bisseção - @professorenanEquações Algébricas e Transcendentes - Método da Bisseção - @professorenan
Equações Algébricas e Transcendentes - Método da Bisseção - @professorenan
 
Módulo4 regressao no spss
Módulo4 regressao no spssMódulo4 regressao no spss
Módulo4 regressao no spss
 
Decisões sob Risco
Decisões sob RiscoDecisões sob Risco
Decisões sob Risco
 
hill climbing.pptx
hill climbing.pptxhill climbing.pptx
hill climbing.pptx
 
Reinforcement Learning 5. Monte Carlo Methods
Reinforcement Learning 5. Monte Carlo MethodsReinforcement Learning 5. Monte Carlo Methods
Reinforcement Learning 5. Monte Carlo Methods
 
AI Greedy and A-STAR Search
AI Greedy and A-STAR SearchAI Greedy and A-STAR Search
AI Greedy and A-STAR Search
 
Aula 2 - Distribuição de probabilidade
Aula 2 - Distribuição de probabilidadeAula 2 - Distribuição de probabilidade
Aula 2 - Distribuição de probabilidade
 
Heuristic or informed search
Heuristic or informed searchHeuristic or informed search
Heuristic or informed search
 
Introductions to Online Machine Learning Algorithms
Introductions to Online Machine Learning AlgorithmsIntroductions to Online Machine Learning Algorithms
Introductions to Online Machine Learning Algorithms
 
GP4US - Pesquisa operacional aula 5 - metodo simples
GP4US - Pesquisa operacional   aula 5 - metodo simplesGP4US - Pesquisa operacional   aula 5 - metodo simples
GP4US - Pesquisa operacional aula 5 - metodo simples
 
Método da Bissecção
Método da BissecçãoMétodo da Bissecção
Método da Bissecção
 
Aula4
Aula4Aula4
Aula4
 
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...
 
QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)
QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)
QUESTÕES DO ENEM (LEITURA DE GRÁFICOS)
 
Lecture 25 hill climbing
Lecture 25 hill climbingLecture 25 hill climbing
Lecture 25 hill climbing
 
Método estatístico
Método estatísticoMétodo estatístico
Método estatístico
 
Probabilidade condicional
Probabilidade condicionalProbabilidade condicional
Probabilidade condicional
 
Hill-climbing #2
Hill-climbing #2Hill-climbing #2
Hill-climbing #2
 

Destaque

ANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENS
ANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENSANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENS
ANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENSCarlos Eduardo Arissa Vargas
 
Ia un01 busca_qualquer_caminho
Ia un01 busca_qualquer_caminhoIa un01 busca_qualquer_caminho
Ia un01 busca_qualquer_caminhoLeonardo Freitas
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação DinâmicaOrlando Junior
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Aula sobre teorias da informação e da comunicação
Aula sobre teorias da informação e da comunicaçãoAula sobre teorias da informação e da comunicação
Aula sobre teorias da informação e da comunicaçãoJonathas Carvalho
 
Algoritmo de backtracking
Algoritmo de backtrackingAlgoritmo de backtracking
Algoritmo de backtrackingVictor Gonzalez
 

Destaque (10)

Criptografias - WEP vs WPA
Criptografias - WEP vs WPACriptografias - WEP vs WPA
Criptografias - WEP vs WPA
 
Aula 7 - Ataque de Força Bruta
Aula 7 - Ataque de Força BrutaAula 7 - Ataque de Força Bruta
Aula 7 - Ataque de Força Bruta
 
ANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENS
ANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENSANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENS
ANÁLISE E OBSERVAÇÃO PRÉ JOGO DO SPFC SUB 20 - COPA SP 2016 - IMAGENS
 
Ia un01 busca_qualquer_caminho
Ia un01 busca_qualquer_caminhoIa un01 busca_qualquer_caminho
Ia un01 busca_qualquer_caminho
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação Dinâmica
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Algoritmo Guloso
Algoritmo GulosoAlgoritmo Guloso
Algoritmo Guloso
 
Aula sobre teorias da informação e da comunicação
Aula sobre teorias da informação e da comunicaçãoAula sobre teorias da informação e da comunicação
Aula sobre teorias da informação e da comunicação
 
Escalas maiores e menores
Escalas maiores e menoresEscalas maiores e menores
Escalas maiores e menores
 
Algoritmo de backtracking
Algoritmo de backtrackingAlgoritmo de backtracking
Algoritmo de backtracking
 

Semelhante a Backtracking

Algoritmos e Programação_01
Algoritmos e Programação_01Algoritmos e Programação_01
Algoritmos e Programação_01Gabriel Demétrio
 
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOSINFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOSEderson Posselt
 
Aula 01 - Apresentação - Introdução a Lógica.pptx
Aula 01 - Apresentação - Introdução a Lógica.pptxAula 01 - Apresentação - Introdução a Lógica.pptx
Aula 01 - Apresentação - Introdução a Lógica.pptxMárcio Santos
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçaossuserc6132d
 
Introduçao a Algoritmo...................
Introduçao a Algoritmo...................Introduçao a Algoritmo...................
Introduçao a Algoritmo...................Márcio Santos
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Pedro Guerreiro
 
Manual winplot
Manual winplotManual winplot
Manual winplotFranbfk
 
Inteligencia artificial 2
Inteligencia artificial 2Inteligencia artificial 2
Inteligencia artificial 2Nauber Gois
 
Aprendizado de Máquina em Linguagem Natural
Aprendizado de Máquina em Linguagem NaturalAprendizado de Máquina em Linguagem Natural
Aprendizado de Máquina em Linguagem NaturalBeatriz Albiero
 
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_javaMirlem Pereira
 

Semelhante a Backtracking (20)

Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos e Programação_01
Algoritmos e Programação_01Algoritmos e Programação_01
Algoritmos e Programação_01
 
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOSINFUZZY - FERRAMENTA PARA  DESENVOLVIMENTO DE APLICAÇÕES  DE SISTEMAS DIFUSOS
INFUZZY - FERRAMENTA PARA DESENVOLVIMENTO DE APLICAÇÕES DE SISTEMAS DIFUSOS
 
Aula 01 - Apresentação - Introdução a Lógica.pptx
Aula 01 - Apresentação - Introdução a Lógica.pptxAula 01 - Apresentação - Introdução a Lógica.pptx
Aula 01 - Apresentação - Introdução a Lógica.pptx
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Algoritmos e Programação
Algoritmos e ProgramaçãoAlgoritmos e Programação
Algoritmos e Programação
 
Forb.cap1
Forb.cap1Forb.cap1
Forb.cap1
 
GCompris Linux Educaional 3.0
GCompris Linux Educaional 3.0GCompris Linux Educaional 3.0
GCompris Linux Educaional 3.0
 
Introduçao a Algoritmo...................
Introduçao a Algoritmo...................Introduçao a Algoritmo...................
Introduçao a Algoritmo...................
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
 
GCompris - Linux Educacional 3.0
GCompris - Linux Educacional 3.0GCompris - Linux Educacional 3.0
GCompris - Linux Educacional 3.0
 
Manual winplot
Manual winplotManual winplot
Manual winplot
 
Aula1
Aula1Aula1
Aula1
 
Inteligencia artificial 2
Inteligencia artificial 2Inteligencia artificial 2
Inteligencia artificial 2
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
 
Aprendizado de Máquina em Linguagem Natural
Aprendizado de Máquina em Linguagem NaturalAprendizado de Máquina em Linguagem Natural
Aprendizado de Máquina em Linguagem Natural
 
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
 
scilab aula 05
scilab  aula 05scilab  aula 05
scilab aula 05
 
Curso freehand
Curso freehandCurso freehand
Curso freehand
 

Mais de Saymon Cristian Alves Oliveira (6)

Terceirização de TI
Terceirização de TITerceirização de TI
Terceirização de TI
 
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSetApostila Arduino - Núcleo de Estudos em Robótica SheepSet
Apostila Arduino - Núcleo de Estudos em Robótica SheepSet
 
Team Software Process (TSP)
Team Software Process (TSP)Team Software Process (TSP)
Team Software Process (TSP)
 
Mais sobre ead
Mais sobre ead Mais sobre ead
Mais sobre ead
 
Softwares de autoria
Softwares de autoriaSoftwares de autoria
Softwares de autoria
 
Calculo de volume de um silo utilizando integral
Calculo de volume de um silo utilizando integralCalculo de volume de um silo utilizando integral
Calculo de volume de um silo utilizando integral
 

Backtracking

  • 2. Técnicas de Algoritmos Técnicas de algoritmos apresentadas :  Algoritmos de Força Bruta  Algoritmos de Pesquisa Exaustiva  Algoritmos Dividir e Conquistar  Algoritmos Gulosos  Algoritmos de Backtracking (retrocesso) 2
  • 3. Tópicos sobre Backtracking  Conhecer a técnica.  Apresentar a técnica através de objetos ou dedução que são aplicáveis no cotidiano.  Desenvolver e explicar um algoritmo baseado em BACKTRACKING. 3
  • 4. Conceito sobre a técnica de Backtracking  Significado: Volta de rastreamento.  É um algoritmo baseado em estrutura de dados, tem como meta resolver o problema no menor intervalo de tempo, não levando em consideração o esforço para alcançar a solução.  Usa recursividade. 4
  • 5. Características do Backtracking  Executa podas quando não é possível encontrar uma solução pelo caminho escolhido.  Faz a busca em profundidade.  O número de escolhas cresce pelo menos exponencialmente com o tamanho da instância.  Passos em direção à solução final são tentados e registrados.  Algoritmos tentativa e erro. 5
  • 6. Animação Árvore de Backtracking 6
  • 7. Backtracking (animação) Sem saída ? Sem saída Sem saída ? Começo ? ? Sem saída Sem saída ? Êxito! 7
  • 8. Exemplo de Busca em Profundidade LABIRINTO 8
  • 9. Exemplo de Busca em Profundidade LABIRINTO Dado um labirinto, encontrar um caminho do início ao fim. Em cada cruzamento, você tem que decidir entre três ou menos escolhas:  Siga em frente  Vá para a esquerda  Vá para a direita Cada escolha leva a um outro conjunto de opções. Uma ou mais sequências de escolhas podem levar a uma solução. Vídeo demonstrativo 9
  • 11. GPS ( global position system ) Busca Exaustiva VS Backtracking 11
  • 12. Resolver um enigma – resta 1  Modo de preenchimento.  Modo de remoção.  Objetivo.  Dificuldade. 12
  • 13. Problema das N rainhas 13
  • 14. Problema das 4 Rainhas  Formulação do problema.  Restrições.  Modo de caminho. BASTANTE ATENÇÃO 14
  • 15. Demonstração Linha por Linha 1 2 1 2 3 X X X X X 1 3 4 1 2 3 4 X X X X X X X 1 2 3 4 1 2 X X X X 15
  • 16. Algoritmo solução  Algoritmo que nos mostra as possíveis soluções envolvendo um tabuleiro 8x8, consequentemente com 8 rainhas a serem distribuídas.  Clique para abrir o algoritmo 16
  • 17. Problematização  Suponha que você tem que fazer uma série de decisões, entre várias opções, onde você não tem informações suficientes para saber o que escolher e que cada decisão leva a um novo conjunto de escolhas, sendo que alguma sequência de escolhas (possivelmente mais de uma) pode ser uma solução para seu problema, o BACKTRACKING é uma maneira metódica de experimentar várias sequências de decisões, até encontrar uma que "funciona”. 17
  • 18. Problematização  Abordagem mais comum é decompor o processo em um número finito de tarefas parciais.  A construção de uma solução é obtida através de tentativas (ou pesquisas) da árvore de sub-tarefas. 18
  • 20. Exemplificando A árvore é composta de nós Notação: Primeiro é o nó raiz Nós internos Nós folhas Backtracking pode ser pensado como a procura de uma árvore para um nó de “objetivo" de uma folha. 20
  • 21. Exemplificando  Cada nó não-folha em uma árvore é um pai de um ou mais outros nós (seus filhos) Cada nó na árvore, diferente da raiz, tem exatamente um dos pais Nó pai Nó pai Nós filhos Nós filhos 21
  • 22. Problema dos Filósofos  Tem-se 5 filósofos sentados ao redor de uma mesa.  Cada filósofo tem um prato e um garfo para comer.  A comida que será servida é um macarrão muito escorregadio que deve ser comido com dois talheres.  Cada filósofo só pode comer o macarrão usando o seu garfo e o garfo de um dos dois filósofos sentados ao seu lado.  Dois filósofos não podem usar o mesmo garfo juntos.  Enquanto alguns filósofos comem os outros pensam, aguardando a hora de comer. 22
  • 24. Problema dos Filósofos - Algoritmo int main () { int j=0, prox=0; printf ("Digite por qual filosofo começar: "); scanf("%d", &fil); printf ("Digite a quantidade de macarrão: "); scanf("%d", &mac); criafilosofo(mac,j); filosofo (prato, fil, prox); printf("%d",soma); } 24
  • 25. Problema dos Filósofos - Algoritmo criafilosofo(mac,j) { if (j<5) { prato[j]=mac; printf("Filosofo %d ",j); printf(": %in",prato[j]); j++; criafilosofo(mac,j); } } 25
  • 26. Problema dos Filósofos - Algoritmo chamaproxfil(int proximo) { if (proximo==5) proximo=0; else proximo=proximo++; return proximo; } 26
  • 27. Problema dos Filósofos - Algoritmo filosofo (int prato[], int i, int prox) { aux=chamaproxfil(prox); soma=(prato[0]+prato[1]+prato[2]+prato[3]+prato[4]); if ((i==aux)||((i+1)==aux)||((i-1)==aux)||((i==4)&&(aux==0))|| ((i==0)&&(aux==4))) { filosofo(prato,i,aux); } 27
  • 28. Problema dos Filósofos - Algoritmo else if(soma==0) { printf("Filosofo 1: %dn", prato[0]); printf("Filosofo 2: %dn", prato[1]); printf("Filosofo 3: %dn", prato[2]); printf("Filosofo 4: %dn", prato[3]); printf("Filosofo 5: %dn", prato[4]); printf("n"); } 28
  • 29. Problema dos Filósofos - Algoritmo else if (soma==1) { for(k=0;k<=4;k++) { if (prato[k]==1) { prato[k]=(prato[k]-1); filosofo(prato,i,aux); } } } 29
  • 30. Problema dos Filósofos - Algoritmo else if((prato[aux]==0) ||(prato[i]==0)) { filosofo(prato,i,aux); } else { prato[i]=prato[i]-1; prato[aux]=prato[aux]-1; i=i+1; if(i==5) i=0; 30
  • 31. Problema dos Filósofos - Algoritmo printf("Filosofo 1: %dn", prato[0]); printf("Filosofo 2: %dn", prato[1]); printf("Filosofo 3: %dn", prato[2]); printf("Filosofo 4: %dn", prato[3]); printf("Filosofo 5: %dn", prato[4]); printf("n"); filosofo(prato, i, aux);//chamada recursiva à função filosofo } } 31
  • 32. Problema dos Filósofos - Algoritmo  Conhecer o algoritmo implementado.  Clique aqui para abrir 32
  • 34. Mãos a obra  Acessem de qualquer máquina o link abaixo  Avaliativo  http://goo.gl/CFauR 34
  • 35. Mãos a obra  No site procurem a aba AVALIAÇÃO  E clique no link para começar a avaliação ( feito individualmente ) 35
  • 36. Implementando De acordo com as explicações implemente o algoritmo do “Problema da Soma dos Conjuntos”. 36
  • 37. Exercício Algoritmo Suponha que você emitiu cheques em maio nos valores de p(1), ..., p(n) ao longo do mês de setembro último. No fim do mês, o banco informa que um total T foi descontado de sua conta. Quais cheques foram descontados? Por exemplo, se p = {61, 62, 63, 64} e T = 125 então só há duas possibilidades: ou foram descontados os cheques 1 e 4 ou foram descontados os cheques 2 e 3. esse é o “problema da soma de subconjuntos ”. Desenvolva um algoritmo para resolver este problema empregando a estratégia backtracking. 37
  • 40. Obrigado pela atenção!! Danilo Fraga Costa Reginaldo Faria da Silva Douglas Vinícius Souza da Mata Saymon Cristian Alves Oliveira 40