Backtracking

6,155 views
5,840 views

Published on

Técnica de complexidade de algoritmo BACKTRACKING, bem ilustrada e resumida.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,155
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
139
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Backtracking

  1. 1. Backtracking
  2. 2. Técnicas de AlgoritmosTé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. 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. 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. 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. 6. Animação Árvore de Backtracking 6
  7. 7. Backtracking (animação) Sem saída ? Sem saída Sem saída ?Começo ? ? Sem saída Sem saída ? Êxito! 7
  8. 8. Exemplo de Busca em Profundidade LABIRINTO 8
  9. 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
  10. 10. Aplicações cotidianas 10
  11. 11. GPS ( global position system )Busca Exaustiva VSBacktracking 11
  12. 12. Resolver um enigma – resta 1  Modo de preenchimento.  Modo de remoção.  Objetivo.  Dificuldade. 12
  13. 13. Problema das N rainhas 13
  14. 14. Problema das 4 Rainhas Formulação do problema. Restrições. Modo de caminho.BASTANTE ATENÇÃO 14
  15. 15. Demonstração Linha por Linha1 2 1 2 3X 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. 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. 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. 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
  19. 19. Simulação no Google Maps 19
  20. 20. ExemplificandoA árvore é composta de nósNotação: Primeiro é o nó raiz Nós internos Nós folhasBacktracking pode serpensado como a procura deuma árvore para um nóde “objetivo" de uma folha. 20
  21. 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. 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
  23. 23. Problema dos Filósofos 23
  24. 24. Problema dos Filósofos - Algoritmoint 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. 25. Problema dos Filósofos - Algoritmocriafilosofo(mac,j){ if (j<5) { prato[j]=mac; printf("Filosofo %d ",j); printf(": %in",prato[j]); j++; criafilosofo(mac,j); }} 25
  26. 26. Problema dos Filósofos - Algoritmochamaproxfil(int proximo){ if (proximo==5) proximo=0; else proximo=proximo++; return proximo;} 26
  27. 27. Problema dos Filósofos - Algoritmofilosofo (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. 28. Problema dos Filósofos - Algoritmoelse 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. 29. Problema dos Filósofos - Algoritmoelse if (soma==1) { for(k=0;k<=4;k++) { if (prato[k]==1) { prato[k]=(prato[k]-1); filosofo(prato,i,aux); } } } 29
  30. 30. Problema dos Filósofos - Algoritmoelse 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. 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. 32. Problema dos Filósofos - Algoritmo Conhecer o algoritmo implementado. Clique aqui para abrir 32
  33. 33. Começando a interação 33
  34. 34. Mãos a obra Acessem de qualquer máquina o link abaixo Avaliativo http://goo.gl/CFauR 34
  35. 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. 36. ImplementandoDe acordo com as explicações implemente o algoritmo do “Problema da Soma dos Conjuntos”. 36
  37. 37. Exercício AlgoritmoSuponha que você emitiu cheques em maio nos valoresde p(1), ..., p(n) ao longo do mês de setembro último.No fim do mês, o banco informa que um total T foidescontado de sua conta. Quais cheques foramdescontados? Por exemplo, se p = {61, 62, 63, 64} e T =125 então só há duas possibilidades: ou foramdescontados os cheques 1 e 4 ou foram descontados oscheques 2 e 3. esse é o “problema da soma desubconjuntos ”. Desenvolva um algoritmo para resolvereste problema empregando a estratégia backtracking. 37
  38. 38. Finalizando 38
  39. 39. Considerações finais 39
  40. 40. Obrigado pela atenção!! Danilo Fraga Costa Reginaldo Faria da Silva Douglas Vinícius Souza da Mata Saymon Cristian Alves Oliveira 40

×