SlideShare uma empresa Scribd logo
ANÁLISES E
OTIMIZAÇÃO DE
SISTEMAS
Prof. Dr. Vínícius Marques
vinicius.ferreira@uva.br
Semana 03
Técnicas de Projeto de Algoritmos
Caixeiro Viajante
Problema da Mochila
Atividade
Tipos Importantes de Problemas
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
• Problemas de Ordenação: Reorganizar os itens de uma dada lista em ordem
crescente.
• Problemas de Busca: Encontrar um dado valor chamado de chave de busca em um
dado conjunto.
• Processamento de Strings: Buscar uma dada palavra em um texto, avaliar a
similaridade entre cadeias de caracteres, etc.
• Problemas de Grafos: Travessia de grafos (como visitar todos os pontos de uma rede),
caminho mais curto (qual a melhor rota entre duas cidades), ordenação topológica.
Tipos Importantes de Problemas
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Problemas Combinatoriais: Problemas onde é necessário encontrar um objeto
combinatorial (permutações, combinações ou subconjuntos) que satisfaça certas
restrições e tenha certas propriedades (maximizar um valor, minimizar um custo).
Problemas Geométricos: Envolvem objetos geométricos com pontos, linhas e
polígonos.
Problemas Numéricos: Envolvem objetos matemáticos de natureza contínua
(resolução de equações e sistemas de equações, integrais definidas, etc).
Estratégias Otimização de Algoritmos
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
• Força Bruta (Brute Force)
• Dividir e Conquistar (Divide and Conquer)
• Diminuir e Conquistar (Decrease and Conquer)
• Transformar e Conquistar (Transform and Conquer)
• Compromisso Tempo–Espaço (Space and Time Tradeoffs)
• Estratégia Gulosa (Greedy)
• Programação Dinâmica (Dynamic Programming)
• Voltando Atrás (Backtracking)
• Ramificar e Limitar (Branch and Bound)
• Algoritmos Aproximados
Estratégias Otimização de Algoritmos
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Técnica Exemplo
Força Bruta (Brute Force)
É comumente usada em quebra de senhas ou criptografia, onde a solução envolve
testar todas as combinações possíveis até encontrar a correta.
Dividir e Conquistar (Divide and Conquer)
É empregada em algoritmos de ordenação, como o Merge Sort, onde o problema
é dividido em partes menores, resolvidas individualmente e depois combinadas
para formar a solução.
Diminuir e Conquistar (Decrease and Conquer)
Um exemplo é o algoritmo de busca binária, utilizado para encontrar um
elemento em uma lista ordenada, dividindo o problema pela metade a cada
iteração.
Transformar e Conquistar (Transform and Conquer)
Pode ser visto em estruturas de dados como árvores de busca binária, onde os
dados são transformados em uma árvore para otimizar buscas, inserções e
deleções.
Compromisso Tempo–Espaço (Space and Time Tradeoffs)
Um exemplo é o uso de tabelas de hash para acelerar a busca de dados, onde mais
espaço de memória é usado para reduzir o tempo de busca.
Estratégia Gulosa (Greedy)
Utilizada em problemas de otimização como o algoritmo de Kruskal para
encontrar a árvore geradora mínima em grafos, selecionando sempre a próxima
opção mais ótima.
Programação Dinâmica (Dynamic Programming)
Aplica-se a problemas onde há sobreposição de subproblemas, como o cálculo do
número de Fibonacci, onde valores anteriores são armazenados para evitar
cálculos repetidos.
Voltando Atrás (Backtracking)
Um caso de uso é na resolução de puzzles como o Sudoku, onde um caminho é
seguido e, ao encontrar um impasse, volta-se atrás para tentar outras opções.
Ramificar e Limitar (Branch and Bound)
Usado em problemas de otimização combinatorial como o problema do caixeiro
viajante, para descartar soluções subótimas e focar nas promissoras.
Algoritmos Aproximados
São úteis quando uma solução exata é difícil ou impossível de encontrar em
tempo hábil. Por exemplo, em problemas de escalonamento de tarefas
(scheduling), onde se busca uma solução boa o suficiente em vez da ótima.
Força Bruta
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
• A técnica de força bruta (também conhecida como a busca exaustiva) é um método
para resolver um problema através de uma travessia completa (ou parcial) no
espaço de busca do problema para se obter uma solução.
• Durante a busca, é possível podar (optar por não explorar) partes do espaço de
busca, se for possível determinar que estas partes não têm qualquer possibilidade
de conter a solução necessária.
Força Bruta
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
• Geralmente, a força bruta é uma das estratégias mais fáceis de aplicar.
• Apesar de ser raramente uma fonte de algoritmos eficientes ou brilhantes, é uma
importante estratégia de projeto de algoritmos.
• É aplicável a uma ampla variedade de problemas.
Exemplo 1: Busca Sequencial
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Comparar elementos sucessivos de uma dada lista com uma dada chave de busca até:
• Encontrar um elemento similar (busca bem sucedida) ou;
• A lista ser exaurida sem encontrar um elemento similar (busca mal sucedida).
Algoritmo Geral de Força Bruta
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
1. Listar todas as soluções potenciais para o problema de uma maneira sistemática.
– Todas as soluções estão eventualmente listadas;
– Nenhuma solução é repetida;
2. Avaliar as soluções, uma a uma, talvez, desqualificando as não práticas e mantendo
a melhor encontrada até o momento.
3. Quando a busca terminar, retornar a solução encontrada.
Exemplo 2: Caixeiro Viajante
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Problema: dadas n cidades com distâncias conhecidas entre cada par, encontrar o
trajeto mais curto que passe por todas as cidades exatamente uma vez antes de
retornar a cidade de origem (Traveling Salesman Problem (TSP)).
Exemplo 3: Problema da Mochila
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Exemplo 3: Problema da Mochila
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Exemplo 3: Problema da Mochila
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Exemplo 3: Problema da Mochila
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Par de Pontos mais Próximos
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Par de Pontos mais Próximos
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Força Bruta
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Observação sobre Força Bruta
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Observação sobre Força Bruta
ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
Atividade Avaliativa – entrega 20/03
Crack de Senha: Escreva um programa que tente decifrar uma senha de 4 dígitos numéricos através de busca exaustiva.
Subconjunto com Soma Específica: Dado um conjunto de números inteiros e um valor de soma, crie um algoritmo que encontre todos os
subconjuntos possíveis cuja soma seja igual ao valor dado.
Permutações de uma String: Implemente um algoritmo que gere todas as permutações possíveis de uma string dada.
Combinações de Moedas: Dado um conjunto de valores de moedas e um valor total, encontre todas as maneiras possíveis de combinar as moedas
para alcançar o valor total.
Problema do Caixeiro Viajante: Implemente uma solução de força bruta para o Problema do Caixeiro Viajante, onde você deve encontrar o
caminho mais curto que passa por todas as cidades uma única vez e retorna à cidade de origem.
Máximo Subarray: Crie um algoritmo que encontre o subarray contíguo dentro de um array de números que tem a maior soma.
Anagramas de Palavra: Dada uma palavra, escreva um programa que encontre todos os anagramas possíveis desta palavra.
Horários de Reunião: Dada uma lista de horários disponíveis para um grupo de pessoas, encontre todos os intervalos de tempo possíveis onde todos
podem se reunir.
Quebra de Código de Cofre: Suponha que um cofre é aberto com uma sequência específica de N botões pressionados. Desenvolva um algoritmo
que tente todas as combinações possíveis até encontrar a sequência correta.
ALGORITMOS E LABORATÓRIO

Mais conteúdo relacionado

Semelhante a 2 e 3Aula apresentação AOS UVA 2024.1.pdf

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
 
Algoritmos
AlgoritmosAlgoritmos
Prova perito pf area 3 1997
Prova perito pf area 3 1997Prova perito pf area 3 1997
Prova perito pf area 3 1997
Computação Depressão
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 04
(ACH2002) Introdução à Análise de Algoritmos - Aula 04(ACH2002) Introdução à Análise de Algoritmos - Aula 04
(ACH2002) Introdução à Análise de Algoritmos - Aula 04
Norton Trevisan Roman
 
[José Ahirton Lopes] Support Vector Machines
[José Ahirton Lopes] Support Vector Machines[José Ahirton Lopes] Support Vector Machines
[José Ahirton Lopes] Support Vector Machines
Ahirton Lopes
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
elliando dias
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
ID3 Algorithm
ID3 AlgorithmID3 Algorithm
ID3 Algorithm
Michel Alves
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
robinhoct
 
Apostila basica sql
Apostila basica sqlApostila basica sql
Apostila basica sql
Leonardo Elias
 
ApostilaAlgoritmo
ApostilaAlgoritmoApostilaAlgoritmo
ApostilaAlgoritmo
progidio
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
Nécio de Lima Veras
 
Map, filter e reduce
Map, filter e reduceMap, filter e reduce
Map, filter e reduce
Jackson Veroneze
 
Refatoração
RefatoraçãoRefatoração
Refatoração
Gerson Borges
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
Gustavo Carvalho
 
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Os Fantasmas !
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
Nécio de Lima Veras
 
Working with legacy code 3
Working with legacy code 3Working with legacy code 3
Working with legacy code 3
André Mendonça Bastos
 
UC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdf
UC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdfUC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdf
UC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdf
vinicioscararine95
 
Aula02
Aula02Aula02

Semelhante a 2 e 3Aula apresentação AOS UVA 2024.1.pdf (20)

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
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Prova perito pf area 3 1997
Prova perito pf area 3 1997Prova perito pf area 3 1997
Prova perito pf area 3 1997
 
(ACH2002) Introdução à Análise de Algoritmos - Aula 04
(ACH2002) Introdução à Análise de Algoritmos - Aula 04(ACH2002) Introdução à Análise de Algoritmos - Aula 04
(ACH2002) Introdução à Análise de Algoritmos - Aula 04
 
[José Ahirton Lopes] Support Vector Machines
[José Ahirton Lopes] Support Vector Machines[José Ahirton Lopes] Support Vector Machines
[José Ahirton Lopes] Support Vector Machines
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
ID3 Algorithm
ID3 AlgorithmID3 Algorithm
ID3 Algorithm
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
 
Apostila basica sql
Apostila basica sqlApostila basica sql
Apostila basica sql
 
ApostilaAlgoritmo
ApostilaAlgoritmoApostilaAlgoritmo
ApostilaAlgoritmo
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
 
Map, filter e reduce
Map, filter e reduceMap, filter e reduce
Map, filter e reduce
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Working with legacy code 3
Working with legacy code 3Working with legacy code 3
Working with legacy code 3
 
UC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdf
UC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdfUC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdf
UC_ 9 Desenvolver Algoritmos ( Vinicios Cararine Coelho ) 26_02.pdf
 
Aula02
Aula02Aula02
Aula02
 

Último

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
 
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
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
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
 
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
 
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
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 

Último (8)

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
 
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
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
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...
 
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
 
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
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 

2 e 3Aula apresentação AOS UVA 2024.1.pdf

  • 1. ANÁLISES E OTIMIZAÇÃO DE SISTEMAS Prof. Dr. Vínícius Marques vinicius.ferreira@uva.br
  • 2. Semana 03 Técnicas de Projeto de Algoritmos Caixeiro Viajante Problema da Mochila Atividade
  • 3. Tipos Importantes de Problemas ANÁLISES E OTIMIZAÇÃO DE SISTEMAS • Problemas de Ordenação: Reorganizar os itens de uma dada lista em ordem crescente. • Problemas de Busca: Encontrar um dado valor chamado de chave de busca em um dado conjunto. • Processamento de Strings: Buscar uma dada palavra em um texto, avaliar a similaridade entre cadeias de caracteres, etc. • Problemas de Grafos: Travessia de grafos (como visitar todos os pontos de uma rede), caminho mais curto (qual a melhor rota entre duas cidades), ordenação topológica.
  • 4. Tipos Importantes de Problemas ANÁLISES E OTIMIZAÇÃO DE SISTEMAS Problemas Combinatoriais: Problemas onde é necessário encontrar um objeto combinatorial (permutações, combinações ou subconjuntos) que satisfaça certas restrições e tenha certas propriedades (maximizar um valor, minimizar um custo). Problemas Geométricos: Envolvem objetos geométricos com pontos, linhas e polígonos. Problemas Numéricos: Envolvem objetos matemáticos de natureza contínua (resolução de equações e sistemas de equações, integrais definidas, etc).
  • 5. Estratégias Otimização de Algoritmos ANÁLISES E OTIMIZAÇÃO DE SISTEMAS • Força Bruta (Brute Force) • Dividir e Conquistar (Divide and Conquer) • Diminuir e Conquistar (Decrease and Conquer) • Transformar e Conquistar (Transform and Conquer) • Compromisso Tempo–Espaço (Space and Time Tradeoffs) • Estratégia Gulosa (Greedy) • Programação Dinâmica (Dynamic Programming) • Voltando Atrás (Backtracking) • Ramificar e Limitar (Branch and Bound) • Algoritmos Aproximados
  • 6. Estratégias Otimização de Algoritmos ANÁLISES E OTIMIZAÇÃO DE SISTEMAS Técnica Exemplo Força Bruta (Brute Force) É comumente usada em quebra de senhas ou criptografia, onde a solução envolve testar todas as combinações possíveis até encontrar a correta. Dividir e Conquistar (Divide and Conquer) É empregada em algoritmos de ordenação, como o Merge Sort, onde o problema é dividido em partes menores, resolvidas individualmente e depois combinadas para formar a solução. Diminuir e Conquistar (Decrease and Conquer) Um exemplo é o algoritmo de busca binária, utilizado para encontrar um elemento em uma lista ordenada, dividindo o problema pela metade a cada iteração. Transformar e Conquistar (Transform and Conquer) Pode ser visto em estruturas de dados como árvores de busca binária, onde os dados são transformados em uma árvore para otimizar buscas, inserções e deleções. Compromisso Tempo–Espaço (Space and Time Tradeoffs) Um exemplo é o uso de tabelas de hash para acelerar a busca de dados, onde mais espaço de memória é usado para reduzir o tempo de busca. Estratégia Gulosa (Greedy) Utilizada em problemas de otimização como o algoritmo de Kruskal para encontrar a árvore geradora mínima em grafos, selecionando sempre a próxima opção mais ótima. Programação Dinâmica (Dynamic Programming) Aplica-se a problemas onde há sobreposição de subproblemas, como o cálculo do número de Fibonacci, onde valores anteriores são armazenados para evitar cálculos repetidos. Voltando Atrás (Backtracking) Um caso de uso é na resolução de puzzles como o Sudoku, onde um caminho é seguido e, ao encontrar um impasse, volta-se atrás para tentar outras opções. Ramificar e Limitar (Branch and Bound) Usado em problemas de otimização combinatorial como o problema do caixeiro viajante, para descartar soluções subótimas e focar nas promissoras. Algoritmos Aproximados São úteis quando uma solução exata é difícil ou impossível de encontrar em tempo hábil. Por exemplo, em problemas de escalonamento de tarefas (scheduling), onde se busca uma solução boa o suficiente em vez da ótima.
  • 7. Força Bruta ANÁLISES E OTIMIZAÇÃO DE SISTEMAS • A técnica de força bruta (também conhecida como a busca exaustiva) é um método para resolver um problema através de uma travessia completa (ou parcial) no espaço de busca do problema para se obter uma solução. • Durante a busca, é possível podar (optar por não explorar) partes do espaço de busca, se for possível determinar que estas partes não têm qualquer possibilidade de conter a solução necessária.
  • 8. Força Bruta ANÁLISES E OTIMIZAÇÃO DE SISTEMAS • Geralmente, a força bruta é uma das estratégias mais fáceis de aplicar. • Apesar de ser raramente uma fonte de algoritmos eficientes ou brilhantes, é uma importante estratégia de projeto de algoritmos. • É aplicável a uma ampla variedade de problemas.
  • 9. Exemplo 1: Busca Sequencial ANÁLISES E OTIMIZAÇÃO DE SISTEMAS Comparar elementos sucessivos de uma dada lista com uma dada chave de busca até: • Encontrar um elemento similar (busca bem sucedida) ou; • A lista ser exaurida sem encontrar um elemento similar (busca mal sucedida).
  • 10. Algoritmo Geral de Força Bruta ANÁLISES E OTIMIZAÇÃO DE SISTEMAS 1. Listar todas as soluções potenciais para o problema de uma maneira sistemática. – Todas as soluções estão eventualmente listadas; – Nenhuma solução é repetida; 2. Avaliar as soluções, uma a uma, talvez, desqualificando as não práticas e mantendo a melhor encontrada até o momento. 3. Quando a busca terminar, retornar a solução encontrada.
  • 11. Exemplo 2: Caixeiro Viajante ANÁLISES E OTIMIZAÇÃO DE SISTEMAS Problema: dadas n cidades com distâncias conhecidas entre cada par, encontrar o trajeto mais curto que passe por todas as cidades exatamente uma vez antes de retornar a cidade de origem (Traveling Salesman Problem (TSP)).
  • 12. Exemplo 3: Problema da Mochila ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 13. Exemplo 3: Problema da Mochila ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 14. Exemplo 3: Problema da Mochila ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 15. Exemplo 3: Problema da Mochila ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 16. Par de Pontos mais Próximos ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 17. Par de Pontos mais Próximos ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 18. Força Bruta ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 19. Observação sobre Força Bruta ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 20. Observação sobre Força Bruta ANÁLISES E OTIMIZAÇÃO DE SISTEMAS
  • 21. Atividade Avaliativa – entrega 20/03 Crack de Senha: Escreva um programa que tente decifrar uma senha de 4 dígitos numéricos através de busca exaustiva. Subconjunto com Soma Específica: Dado um conjunto de números inteiros e um valor de soma, crie um algoritmo que encontre todos os subconjuntos possíveis cuja soma seja igual ao valor dado. Permutações de uma String: Implemente um algoritmo que gere todas as permutações possíveis de uma string dada. Combinações de Moedas: Dado um conjunto de valores de moedas e um valor total, encontre todas as maneiras possíveis de combinar as moedas para alcançar o valor total. Problema do Caixeiro Viajante: Implemente uma solução de força bruta para o Problema do Caixeiro Viajante, onde você deve encontrar o caminho mais curto que passa por todas as cidades uma única vez e retorna à cidade de origem. Máximo Subarray: Crie um algoritmo que encontre o subarray contíguo dentro de um array de números que tem a maior soma. Anagramas de Palavra: Dada uma palavra, escreva um programa que encontre todos os anagramas possíveis desta palavra. Horários de Reunião: Dada uma lista de horários disponíveis para um grupo de pessoas, encontre todos os intervalos de tempo possíveis onde todos podem se reunir. Quebra de Código de Cofre: Suponha que um cofre é aberto com uma sequência específica de N botões pressionados. Desenvolva um algoritmo que tente todas as combinações possíveis até encontrar a sequência correta. ALGORITMOS E LABORATÓRIO