https://github.com/enzoconsulo/python.mecanismosbusca-8puzzle
PUC-Campinas (5º Período Engenharia de Computação): este projeto teve como objetivo desenvolver uma aplicação interativa para resolução automática do 8-Puzzle utilizando algoritmos clássicos de busca e Inteligencia Artificial. Foram explorados, de forma prática, conceitos fundamentais de mecanismos de busca, estruturas de dados.
https://github.com/enzoconsulo/python.mecanismosbusca-8puzzle
8puzzle algoritmos busca-a-estrela busca-em-largura busca-em-profundidade inteligencia-artificial python tkinter
Last synced: 29 days ago
JSON representation
PUC-Campinas (5º Período Engenharia de Computação): este projeto teve como objetivo desenvolver uma aplicação interativa para resolução automática do 8-Puzzle utilizando algoritmos clássicos de busca e Inteligencia Artificial. Foram explorados, de forma prática, conceitos fundamentais de mecanismos de busca, estruturas de dados.
- Host: GitHub
- URL: https://github.com/enzoconsulo/python.mecanismosbusca-8puzzle
- Owner: enzoconsulo
- Created: 2025-05-07T22:12:52.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-05-07T22:34:34.000Z (about 1 month ago)
- Last Synced: 2025-05-07T23:25:47.809Z (about 1 month ago)
- Topics: 8puzzle, algoritmos, busca-a-estrela, busca-em-largura, busca-em-profundidade, inteligencia-artificial, python, tkinter
- Language: Python
- Homepage:
- Size: 26.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 8-Puzzle, Resolução Por Mecanismos de Busca e Inteligencia Artificial
Este projeto implementa o clássico quebra-cabeça 8-Puzzle (jogo dos 8) em Python, utilizando mecanismos de busca clássicos para encontrar a solução de forma **automática**. A interface gráfica é feita com `tkinter`, permitindo interagir manualmente ou observar a resolução passo a passo pelos algoritmos.
## Funcionalidades
- **Geração aleatória** de estados sempre solucionáveis.
- **Movimentação manual** das peças via clique ou setas do teclado.
- Neste caso os movimentos serão salvos em caminhos.txt, para caso queira ser feita uma analise
- **Embaralhar** para reiniciar o puzzle com nova configuração.
- **Resolver automaticamente** utilizando três **mecanismos de busca**:
- **Busca em Largura (BFS)**: explora o nível completo de cada profundidade antes de avançar.
- **Busca em Profundidade (DFS)**: explora um ramo até o fim antes de retroceder.
- **A\*** (A-Star): usa a heurística de Distância de Manhattan para priorizar estados mais promissores.
- Exibição de **quantidade de movimentos** e **estados visitados** por cada algoritmo.
- **Animação** da sequência de movimentos após encontrar a solução.
- **Restaurar** o estado anterior ao início da resolução automática (undo).## Destaque: Mecanismos de Busca
O coração do solver está na implementação genérica de busca (`busca_generica`), que adapta a estrutura de dados e as operações de inserção/remoção para cada algoritmo:
- **BFS** usa uma fila (`deque`) para garantir exploração em largura.
- **DFS** usa uma pilha (lista) para exploração em profundidade.
- **A\*** usa uma fila de prioridade (`heapq`), combinando custo e heurística (Distância de Manhattan).Essa arquitetura modular permite comparar desempenho, profundidade de busca e eficiência de cada método.
## Pré-requisitos
- Python 3.7 ou superior
- Biblioteca `tkinter` (instalada por padrão na maioria das distribuições)## Instalação e Execução
1. Clone ou baixe este repositório e abra o terminal na pasta do projeto:
```bash
git clone https://github.com/enzoconsulo/Python.MecanismosBusca-8puzzle.git
cd Python.MecanismosBusca-8puzzle## Como Usar
Mover manualmente: clique na peça adjacente ao espaço vazio ou use as setas do teclado.Embaralhar: clique em “Embaralhar” para uma nova configuração.
Resolver: clique em “Resolver”, escolha o algoritmo de busca e veja:
- Janela com número de movimentos e estados visitados.
- Puzzle sendo resolvido automaticamente em animação.
Restaurar: botão “Restaurar Puzzle Anterior” retorna ao estado pré-solução.
## Estrutura de Arquivos
Python.MecanismosBusca-8puzzle/
─ puzzle8.py # Código-fonte principal com implementação de mecanismos de busca
─ README.md # Documentação do projeto