Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stephanyecunto/quebra_cabeca_dijkstra-aestrela
Solucionador de quebra-cabeça deslizante 3x3 em JS com Dijkstra e A*. Compara algoritmos e fornece soluções detalhadas.
https://github.com/stephanyecunto/quebra_cabeca_dijkstra-aestrela
Last synced: about 1 month ago
JSON representation
Solucionador de quebra-cabeça deslizante 3x3 em JS com Dijkstra e A*. Compara algoritmos e fornece soluções detalhadas.
- Host: GitHub
- URL: https://github.com/stephanyecunto/quebra_cabeca_dijkstra-aestrela
- Owner: StephanyeCunto
- Created: 2024-09-13T19:42:43.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-13T19:55:02.000Z (4 months ago)
- Last Synced: 2024-09-14T10:44:39.987Z (4 months ago)
- Language: JavaScript
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Solucionador de Quebra-Cabeça Deslizante
Este projeto implementa um solucionador para o clássico quebra-cabeça deslizante 3x3 (também conhecido como quebra-cabeça de 8) usando dois algoritmos diferentes: o algoritmo de Dijkstra e a busca A*. O solucionador é implementado em JavaScript e pode ser executado em um ambiente Node.js.
## Índice
- [Visão Geral](#visão-geral)
- [Funcionalidades](#funcionalidades)
- [Requisitos](#requisitos)
- [Detalhes dos Algoritmos](#detalhes-dos-algoritmos)
- [Comparação de Desempenho](#comparação-de-desempenho)## Visão Geral
O quebra-cabeça deslizante é um jogo popular onde você tem uma grade com peças numeradas e um espaço vazio. O objetivo é deslizar as peças para organizá-las em uma ordem específica (geralmente em ordem numérica) usando o espaço vazio.
Este solucionador recebe um estado inicial do quebra-cabeça e encontra a solução ótima para alcançar o estado objetivo:
```
1 2 3
4 5 6
7 8 0
```Onde `0` representa o espaço vazio.
## Funcionalidades
- Resolve quebra-cabeças deslizantes 3x3 usando dois algoritmos:
- Algoritmo de Dijkstra
- Busca A*
- Imprime a solução passo a passo
- Mede e compara o tempo de execução de ambos os algoritmos## Requisitos
- Node.js (versão 12.0 ou superior recomendada)
## Detalhes dos Algoritmos
### Algoritmo de Dijkstra
O algoritmo de Dijkstra é usado aqui para encontrar o caminho mais curto do estado inicial ao estado objetivo. Ele explora todos os movimentos possíveis, mantendo o controle do número de movimentos realizados, e garante encontrar a solução ótima.
### Busca A*
A busca A* é um algoritmo de busca informada que usa uma função heurística para guiar a busca em direção ao estado objetivo. Nesta implementação, a heurística da distância de Manhattan é usada para estimar a distância do estado atual até o estado objetivo.
## Comparação de Desempenho
O script inclui medições de tempo para ambos os algoritmos. Geralmente, espera-se que a busca A* seja mais rápida que o algoritmo de Dijkstra para este problema, especialmente para estados iniciais mais complexos, devido ao uso da função heurística para guiar a busca.