SlideShare uma empresa Scribd logo
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

Destaque

Criptografias - WEP vs WPA
Criptografias - WEP vs WPACriptografias - WEP vs WPA
Criptografias - WEP vs WPA
Saymon Cristian Alves Oliveira
 
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
Carlos Henrique Martins da Silva
 
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
Carlos Eduardo Arissa Vargas
 
Ia un01 busca_qualquer_caminho
Ia un01 busca_qualquer_caminhoIa un01 busca_qualquer_caminho
Ia un01 busca_qualquer_caminho
Leonardo Freitas
 
Backtracking
BacktrackingBacktracking
Backtracking
Inael Rodrigues
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação Dinâmica
Orlando Junior
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
Marcos Castro
 
Algoritmo Guloso
Algoritmo GulosoAlgoritmo Guloso
Algoritmo Guloso
Vinicius Marangoni
 
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
Jonathas Carvalho
 
Escalas maiores e menores
Escalas maiores e menoresEscalas maiores e menores
Escalas maiores e menores
Eva Docinho Lima
 
Algoritmo de backtracking
Algoritmo de backtrackingAlgoritmo de backtracking
Algoritmo de backtracking
Victor Gonzalez
 

Destaque (11)

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
 
Backtracking
BacktrackingBacktracking
Backtracking
 
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
AlgoritmosAlgoritmos
Algoritmos
AlgoritmosAlgoritmos
Algoritmos e Programação_01
Algoritmos e Programação_01Algoritmos e Programação_01
Algoritmos e Programação_01
Gabriel 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 DIFUSOS
Ederson 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.pptx
Má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çao
ssuserc6132d
 
Algoritmos e Programação
Algoritmos e ProgramaçãoAlgoritmos e Programação
Algoritmos e Programação
Gabriel Demétrio
 
Forb.cap1
Forb.cap1Forb.cap1
GCompris Linux Educaional 3.0
GCompris Linux Educaional 3.0GCompris Linux Educaional 3.0
GCompris Linux Educaional 3.0
Ana Elisa Raimann Franke
 
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/2014
Pedro Guerreiro
 
GCompris - Linux Educacional 3.0
GCompris - Linux Educacional 3.0GCompris - Linux Educacional 3.0
GCompris - Linux Educacional 3.0
Ana Elisa Raimann Franke
 
Manual winplot
Manual winplotManual winplot
Manual winplot
Franbfk
 
Aula1
Aula1Aula1
Inteligencia artificial 2
Inteligencia artificial 2Inteligencia artificial 2
Inteligencia artificial 2
Nauber Gois
 
Usando o winplot
Usando o winplotUsando o winplot
Usando o winplot
Valerio Vava
 
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
Beatriz 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_java
Mirlem Pereira
 
scilab aula 05
scilab  aula 05scilab  aula 05
scilab aula 05
Tomás Ribeiro
 
Curso freehand
Curso freehandCurso freehand
Curso freehand
Regisnaldo Alencar
 

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

Terceirização de TI
Terceirização de TITerceirização de TI
Terceirização de TI
Saymon Cristian Alves Oliveira
 
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
Saymon Cristian Alves Oliveira
 
Team Software Process (TSP)
Team Software Process (TSP)Team Software Process (TSP)
Team Software Process (TSP)
Saymon Cristian Alves Oliveira
 
Inteligência Artificial - Busca com informação
Inteligência Artificial - Busca com informaçãoInteligência Artificial - Busca com informação
Inteligência Artificial - Busca com informação
Saymon Cristian Alves Oliveira
 
Mais sobre ead
Mais sobre ead Mais sobre ead
Softwares de autoria
Softwares de autoriaSoftwares de autoria
Softwares de autoria
Saymon Cristian Alves Oliveira
 
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
Saymon Cristian Alves Oliveira
 

Mais de Saymon Cristian Alves Oliveira (7)

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)
 
Inteligência Artificial - Busca com informação
Inteligência Artificial - Busca com informaçãoInteligência Artificial - Busca com informação
Inteligência Artificial - Busca com informação
 
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
 

Último

Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (8)

Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

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