SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Backtracking
Curso de Maratona de Programação
ICT-Unifesp
Backtracking
• De acordo com o Wikipédia:
• Backtracking é um tipo de algoritmo que representa um refinamento da busca
por força bruta, em que múltiplas soluções podem ser eliminadas sem serem
explicitamente examinadas.
2
Backtracking
• A recursividade pode ser usada para resolver problemas cuja solução
é do tipo tentar todas as alternativas possíveis.
• O backtracking executa podas quando não é possível encontrar uma
solução pelo caminho escolhido.
3
Backtracking
• NULL quer encontrar a saída do labirinto...
4
Vou tentar
por aqui...
?
Backtracking
• NULL quer encontrar a saída do labirinto...
5
Opa, consegui,
vou continuar...
?
Backtracking
• NULL quer encontrar a saída do labirinto...
6
Sem saída, vou
fazer o
backtracking!!
?
Backtracking
• NULL quer encontrar a saída do labirinto...
7
Vou tentar por
outro caminho...
?
Sem saída
Backtracking
• NULL quer encontrar a saída do labirinto...
8
TRIVIAL!!
?
Sem saída
Backtracking
• Imagine um problema com as seguintes características:
• Você tem que fazer uma série de decisões...
• Você não tem informações suficientes para saber o que escolher...
• Cada decisão leva a um novo conjunto de escolhas...
• Alguma sequência de escolhas pode ser uma solução para o seu problema...
• Backtracking pode ser uma boa forma de experimentar várias sequências de
decisões até encontrar uma que funciona!
9
Backtracking
• A busca em profundidade (DFS) explora tanto quanto possível um
ramo antes de retroceder. É o que acontece no backtracking!
10
Gerando todos os subconjuntos
• Problema: gerando todos os subconjuntos
• Temos um conjunto S = {1 ... N}
• Objetivo: imprimir todos os subconjuntos a partir de N elementos.
• Para S = {1, 2} (N = 2) temos os subconjuntos: {1,2}, {1}, {2}, {}
• {1, 2} é o mesmo que {2, 1}
• O número de possíveis subconjuntos é 2^N
11
Gerando todos os subconjuntos
• Ideia: ou o elemento faz parte do subconjunto ou não faz parte.
• Pode-se construir um vetor de bool de tamanho N.
• Para S = {1, 2}, teríamos um vetor inicialmente com {0, 0}.
• Para S = {1, 2, 3}, teríamos um vetor inicialmente com {0, 0, 0}.
• Esse vetor irá nos ajudar a construir todos os subconjuntos.
• Se vet é o vetor de bool, vet[i] indica se o i-ésimo elemento está ou
não está no subconjunto.
12
Gerando todos os subconjuntos
• Uma variável K indicará qual elemento será colocado ou removido do
subconjunto.
• S(K) = (true, false)
• Seja F nossa função para gerar todos os subconjuntos, ela pode ser
definida como F(K, N).
• Inicialmente F é chamada da seguinte forma:
• F(1, N) // indexando a partir do 1
13
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
14
1 pertence a S
2 pertence a S
K
vet = [1, 0]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
15
1 pertence a S
2 pertence a S
K == N, imprime {1, 2}
vet = [1, 0]
vet = [1, 1]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
16
1 pertence a S
2 pertence a S
imprime {1, 2} Backtracking, o vet até então era [1, 1],
quando retrocede, fazemos vet[K] = 0,
se K = 2, teremos que vet = [1, 0]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
17
1 pertence a S
2 pertence a S
imprime {1, 2}
vet = [1, 0]
K == N, imprime {1}
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
18
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
ramo processado
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
19
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
backtracking vet era [1, 0],
como K = 1, fazemos vet[K] = 0,
portanto, vet = [0, 0]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
20
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
vet = [0, 0]
2 pertence a S
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
21
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
2 pertence a S
K == N, imprime {2}
vet = [0, 1]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
22
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
2 pertence a S
imprime {2}
backtracking...
vet = [0, 0]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
23
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
2 pertence a S
imprime {2}
K == N, imprime {}
vet = [0, 0]
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
24
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
2 pertence a S
imprime {2}
K == N, imprime {}
ramo processado
Gerando todos os subconjuntos
• Construindo a árvore para S = {1, 2}, N = 2
25
1 pertence a S
2 pertence a S
imprime {1, 2}
imprime {1}
2 pertence a S
imprime {2}
imprime {}
Todos os subconjuntos
foram gerados
Gerando todos os subconjuntos
• Construindo a função F (indexando a partir do 0)...
26
Gerando todos os subconjuntos
• Construindo a função F ...
27
Gerando todos os subconjuntos
• Código em C++
• https://goo.gl/9J7Zhi
28
Dúvidas?
mcastrosouza@live.com
twitter.com/mcastrosouza
29

Weitere ähnliche Inhalte

Was ist angesagt?

Escoamento Laminar e turbulento
Escoamento Laminar e turbulentoEscoamento Laminar e turbulento
Escoamento Laminar e turbulentoDiego Henrique
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLEliseu Castelo
 
Principais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosPrincipais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosNorton Guimarães
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturaisthaisedd
 
Estatística completa
Estatística completaEstatística completa
Estatística completaRonne Seles
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
descodificadores codificadores Encoder Decoder Sistemas Digitais
descodificadores codificadores Encoder Decoder Sistemas Digitaisdescodificadores codificadores Encoder Decoder Sistemas Digitais
descodificadores codificadores Encoder Decoder Sistemas DigitaisCarlos Pereira
 
Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)Fernando Passold
 
57768 1289 28.02.2012 13.34.50_02_malhas_controle_r1
57768 1289 28.02.2012 13.34.50_02_malhas_controle_r157768 1289 28.02.2012 13.34.50_02_malhas_controle_r1
57768 1289 28.02.2012 13.34.50_02_malhas_controle_r1Tuane Paixão
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 

Was ist angesagt? (20)

Escoamento Laminar e turbulento
Escoamento Laminar e turbulentoEscoamento Laminar e turbulento
Escoamento Laminar e turbulento
 
Structs em C
Structs em CStructs em C
Structs em C
 
Modulo 2 nocoes de estatistica
Modulo 2   nocoes de estatisticaModulo 2   nocoes de estatistica
Modulo 2 nocoes de estatistica
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Principais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de RequisitosPrincipais Técnicas de Elicitação de Requisitos
Principais Técnicas de Elicitação de Requisitos
 
Amostragem
AmostragemAmostragem
Amostragem
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
 
Uml Diagramas Estruturais
Uml   Diagramas EstruturaisUml   Diagramas Estruturais
Uml Diagramas Estruturais
 
Estatística completa
Estatística completaEstatística completa
Estatística completa
 
Linguagem C - Operadores bit a bit
Linguagem C - Operadores bit a bitLinguagem C - Operadores bit a bit
Linguagem C - Operadores bit a bit
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Algoritmos: Variáveis e Constantes
Algoritmos: Variáveis e ConstantesAlgoritmos: Variáveis e Constantes
Algoritmos: Variáveis e Constantes
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
descodificadores codificadores Encoder Decoder Sistemas Digitais
descodificadores codificadores Encoder Decoder Sistemas Digitaisdescodificadores codificadores Encoder Decoder Sistemas Digitais
descodificadores codificadores Encoder Decoder Sistemas Digitais
 
Gráficos
GráficosGráficos
Gráficos
 
Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)
 
57768 1289 28.02.2012 13.34.50_02_malhas_controle_r1
57768 1289 28.02.2012 13.34.50_02_malhas_controle_r157768 1289 28.02.2012 13.34.50_02_malhas_controle_r1
57768 1289 28.02.2012 13.34.50_02_malhas_controle_r1
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estudos de Controle - Aula 4: Modelagem (2)
Estudos de Controle - Aula 4: Modelagem (2)Estudos de Controle - Aula 4: Modelagem (2)
Estudos de Controle - Aula 4: Modelagem (2)
 

Andere mochten auch

Agrupamento (clustering) - K-Means
Agrupamento (clustering) - K-MeansAgrupamento (clustering) - K-Means
Agrupamento (clustering) - K-MeansMarcos Castro
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de KosarajuMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Marcos Castro
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STLMarcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 

Andere mochten auch (20)

Agrupamento (clustering) - K-Means
Agrupamento (clustering) - K-MeansAgrupamento (clustering) - K-Means
Agrupamento (clustering) - K-Means
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de Kosaraju
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Agrupamento com K-Means
Agrupamento com K-MeansAgrupamento com K-Means
Agrupamento com K-Means
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Python - Set
Python - SetPython - Set
Python - Set
 
Fila de prioridades
Fila de prioridadesFila de prioridades
Fila de prioridades
 
Binary heap
Binary heapBinary heap
Binary heap
 

Mehr von Marcos Castro

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais ArtificiaisMarcos Castro
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicasMarcos Castro
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Marcos Castro
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPMarcos Castro
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com BiopythonMarcos Castro
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Marcos Castro
 

Mehr von Marcos Castro (14)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicas
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com Biopython
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 

Kürzlich hochgeladen

Sistema _ Endocrino_ hormonios_8_ano.ppt
Sistema _ Endocrino_ hormonios_8_ano.pptSistema _ Endocrino_ hormonios_8_ano.ppt
Sistema _ Endocrino_ hormonios_8_ano.pptMrciaVidigal
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
O Modelo Atômico de Dalton - Carlos Vinicius
O Modelo Atômico de Dalton - Carlos ViniciusO Modelo Atômico de Dalton - Carlos Vinicius
O Modelo Atômico de Dalton - Carlos ViniciusVini Master
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...Universidade Federal de Sergipe - UFS
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
Revisão ENEM ensino médio 2024 para o terceiro ano
Revisão ENEM ensino médio 2024 para o terceiro anoRevisão ENEM ensino médio 2024 para o terceiro ano
Revisão ENEM ensino médio 2024 para o terceiro anoAlessandraRaiolDasNe
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 
Geologia Marinha - Variação do Nível do Mar
Geologia Marinha - Variação do Nível do MarGeologia Marinha - Variação do Nível do Mar
Geologia Marinha - Variação do Nível do MarGabbyCarvalhoAlves
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...Universidade Federal de Sergipe - UFS
 
NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...
NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...
NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...LuisCSIssufo
 
Teorias da Evolução e slides sobre darwnismo e evoulao
Teorias da Evolução e slides sobre darwnismo e evoulaoTeorias da Evolução e slides sobre darwnismo e evoulao
Teorias da Evolução e slides sobre darwnismo e evoulaoEduardoBarreto262551
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...Universidade Federal de Sergipe - UFS
 

Kürzlich hochgeladen (18)

Sistema _ Endocrino_ hormonios_8_ano.ppt
Sistema _ Endocrino_ hormonios_8_ano.pptSistema _ Endocrino_ hormonios_8_ano.ppt
Sistema _ Endocrino_ hormonios_8_ano.ppt
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
O Modelo Atômico de Dalton - Carlos Vinicius
O Modelo Atômico de Dalton - Carlos ViniciusO Modelo Atômico de Dalton - Carlos Vinicius
O Modelo Atômico de Dalton - Carlos Vinicius
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
Revisão ENEM ensino médio 2024 para o terceiro ano
Revisão ENEM ensino médio 2024 para o terceiro anoRevisão ENEM ensino médio 2024 para o terceiro ano
Revisão ENEM ensino médio 2024 para o terceiro ano
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 
Geologia Marinha - Variação do Nível do Mar
Geologia Marinha - Variação do Nível do MarGeologia Marinha - Variação do Nível do Mar
Geologia Marinha - Variação do Nível do Mar
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V25_...
 
NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...
NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...
NORMAS PARA PRODUCAO E PUBLICACAO UNIROVUMA - CAPACITACAO DOCENTE II SEMESTRE...
 
Teorias da Evolução e slides sobre darwnismo e evoulao
Teorias da Evolução e slides sobre darwnismo e evoulaoTeorias da Evolução e slides sobre darwnismo e evoulao
Teorias da Evolução e slides sobre darwnismo e evoulao
 
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
REVISTA DE BIOLOGIA E CIÊNCIAS DA TERRA ISSN 1519-5228 - Artigo_Bioterra_V24_...
 

Backtracking - Gerar todos os subconjuntos

  • 1. Backtracking Curso de Maratona de Programação ICT-Unifesp
  • 2. Backtracking • De acordo com o Wikipédia: • Backtracking é um tipo de algoritmo que representa um refinamento da busca por força bruta, em que múltiplas soluções podem ser eliminadas sem serem explicitamente examinadas. 2
  • 3. Backtracking • A recursividade pode ser usada para resolver problemas cuja solução é do tipo tentar todas as alternativas possíveis. • O backtracking executa podas quando não é possível encontrar uma solução pelo caminho escolhido. 3
  • 4. Backtracking • NULL quer encontrar a saída do labirinto... 4 Vou tentar por aqui... ?
  • 5. Backtracking • NULL quer encontrar a saída do labirinto... 5 Opa, consegui, vou continuar... ?
  • 6. Backtracking • NULL quer encontrar a saída do labirinto... 6 Sem saída, vou fazer o backtracking!! ?
  • 7. Backtracking • NULL quer encontrar a saída do labirinto... 7 Vou tentar por outro caminho... ? Sem saída
  • 8. Backtracking • NULL quer encontrar a saída do labirinto... 8 TRIVIAL!! ? Sem saída
  • 9. Backtracking • Imagine um problema com as seguintes características: • Você tem que fazer uma série de decisões... • Você não tem informações suficientes para saber o que escolher... • Cada decisão leva a um novo conjunto de escolhas... • Alguma sequência de escolhas pode ser uma solução para o seu problema... • Backtracking pode ser uma boa forma de experimentar várias sequências de decisões até encontrar uma que funciona! 9
  • 10. Backtracking • A busca em profundidade (DFS) explora tanto quanto possível um ramo antes de retroceder. É o que acontece no backtracking! 10
  • 11. Gerando todos os subconjuntos • Problema: gerando todos os subconjuntos • Temos um conjunto S = {1 ... N} • Objetivo: imprimir todos os subconjuntos a partir de N elementos. • Para S = {1, 2} (N = 2) temos os subconjuntos: {1,2}, {1}, {2}, {} • {1, 2} é o mesmo que {2, 1} • O número de possíveis subconjuntos é 2^N 11
  • 12. Gerando todos os subconjuntos • Ideia: ou o elemento faz parte do subconjunto ou não faz parte. • Pode-se construir um vetor de bool de tamanho N. • Para S = {1, 2}, teríamos um vetor inicialmente com {0, 0}. • Para S = {1, 2, 3}, teríamos um vetor inicialmente com {0, 0, 0}. • Esse vetor irá nos ajudar a construir todos os subconjuntos. • Se vet é o vetor de bool, vet[i] indica se o i-ésimo elemento está ou não está no subconjunto. 12
  • 13. Gerando todos os subconjuntos • Uma variável K indicará qual elemento será colocado ou removido do subconjunto. • S(K) = (true, false) • Seja F nossa função para gerar todos os subconjuntos, ela pode ser definida como F(K, N). • Inicialmente F é chamada da seguinte forma: • F(1, N) // indexando a partir do 1 13
  • 14. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 14 1 pertence a S 2 pertence a S K vet = [1, 0]
  • 15. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 15 1 pertence a S 2 pertence a S K == N, imprime {1, 2} vet = [1, 0] vet = [1, 1]
  • 16. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 16 1 pertence a S 2 pertence a S imprime {1, 2} Backtracking, o vet até então era [1, 1], quando retrocede, fazemos vet[K] = 0, se K = 2, teremos que vet = [1, 0]
  • 17. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 17 1 pertence a S 2 pertence a S imprime {1, 2} vet = [1, 0] K == N, imprime {1}
  • 18. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 18 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} ramo processado
  • 19. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 19 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} backtracking vet era [1, 0], como K = 1, fazemos vet[K] = 0, portanto, vet = [0, 0]
  • 20. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 20 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} vet = [0, 0] 2 pertence a S
  • 21. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 21 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} 2 pertence a S K == N, imprime {2} vet = [0, 1]
  • 22. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 22 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} 2 pertence a S imprime {2} backtracking... vet = [0, 0]
  • 23. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 23 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} 2 pertence a S imprime {2} K == N, imprime {} vet = [0, 0]
  • 24. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 24 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} 2 pertence a S imprime {2} K == N, imprime {} ramo processado
  • 25. Gerando todos os subconjuntos • Construindo a árvore para S = {1, 2}, N = 2 25 1 pertence a S 2 pertence a S imprime {1, 2} imprime {1} 2 pertence a S imprime {2} imprime {} Todos os subconjuntos foram gerados
  • 26. Gerando todos os subconjuntos • Construindo a função F (indexando a partir do 0)... 26
  • 27. Gerando todos os subconjuntos • Construindo a função F ... 27
  • 28. Gerando todos os subconjuntos • Código em C++ • https://goo.gl/9J7Zhi 28