Relatório técnico

Pentamino Lab — Grafos, Buscas e AVL

Disciplina: Estruturas de Dados e Análise de Algoritmos

0. Métricas reais da última execução

Rode uma busca em /solve ou /lab para preencher esta seção.

1. Modelagem do problema como grafo

O puzzle de pentaminós é modelado como um grafo implícito de estados. Cada nó é um estado (PuzzleState) contendo o tabuleiro parcial e as peças usadas. Cada aresta representa o posicionamento válido de uma peça em uma orientação e posição. Resolver o puzzle equivale a encontrar um caminho do estado inicial (tabuleiro vazio) até um estado final (tabuleiro completo).

2. Representação do tabuleiro

Matriz Cell[][] onde cada célula é "." (vazia) ou o ID da peça que a cobre. Funções principais: makeBoard, canPlace, placePiece,removePiece, isComplete, regionsDivisibleBy5.

3. Representação das peças

As 12 pentaminós (F, I, L, N, P, T, U, V, W, X, Y, Z) são definidas por coordenadas relativas. Cada peça contém todas as orientações únicas pré-computadas.

4. Geração de rotações e reflexões

rotate(shape) aplica (r,c) → (c, -r). reflect(shape) aplica (r,c) → (r, -c).normalize(shape) traduz para origem e ordena. generateOrientationscombina 4 rotações × 2 reflexões e remove duplicatas via shapeKey.

5. Implementação da DFS

Pilha explícita; expande o último estado inserido. Verifica AVL antes de inserir filhos (poda por estado já visto). Respeita MaxStates, registra profundidade máxima e pico da pilha. Para se findAll=false ao achar primeira solução.

6. Implementação da BFS

Fila FIFO; explora nível a nível, garantindo solução de menor profundidade. Mesma poda via AVL e mesmas métricas que DFS, mais o pico da fila.

7. Implementação da AVL

Árvore AVL implementada do zero (arquivo core/avl.ts). Nós contêm chave string e altura. Rotações simples (LL, RR) e duplas (LR, RL). Métricas internas: insertions, searches, rotations,size, height(). A AVL garante busca O(log n) para detectar estados visitados, evitando explosão combinatória.

8. Serialização dos estados

Cada estado é serializado de forma determinística:linha0/linha1/.../linhaN|peca1,peca2,.... A ordenação das peças usadas garante chaves únicas para estados equivalentes.

9. Análise de desempenho

Tabuleiros maiores que 6×10 sem heurística costumam estourar MaxStates. A heurística "primeira célula vazia" reduz drasticamente o fator de ramificação, pois força que a próxima peça cubra a célula vazia mais à esquerda/topo. A poda por região (regiões vazias com tamanho não múltiplo de 5 são impossíveis) também reduz estados gerados.

10. Comparação entre DFS e BFS

DFS atinge profundidade máxima rapidamente e tende a achar uma solução com menos memória (pilha O(profundidade)). BFS garante solução de menor profundidade mas armazena toda a "fronteira", crescendo exponencialmente. Para encontrar QUALQUER solução de pentaminós, DFS é tipicamente mais eficiente em memória; BFS é melhor para análises de grafo por níveis. A página Laboratório mostra esses números lado a lado.

11. Dificuldades e soluções

O maior desafio foi controlar a explosão de estados. Soluções aplicadas: AVL para deduplicação O(log n), poda por regiões inválidas, heurística opcional de primeira célula vazia, e parâmetro MaxStates com mensagem clara de interrupção.

12. Uso de IA

Assistente de IA foi usado para apoio na estruturação do projeto, revisão das funções de rotação/reflexão e na geração da UI. Toda a lógica algorítmica (AVL, DFS, BFS, geração de vizinhos) foi implementada explicitamente e revisada manualmente.

13. Relação com a temática Banco de Estados

A temática de banco é apenas uma metáfora visual. A implementação real usa grafos, DFS, BFS e AVL para resolver o problema dos pentaminós.


A temática de banco (apibanks.com → pentamino.apibanks.com) foi usada apenas como apoio visual. O banco representa o conjunto de estados do grafo. Cada estado visitado é registrado em uma árvore AVL, que funciona como uma estrutura balanceada de consulta. As operações de busca e inserção da AVL simulam a auditoria de estados já explorados, evitando processamento redundante. Termos como crédito algorítmico, risco combinatório,rendimento de combo e taxa de erro são apenas rótulos lúdicos sobre os mesmos mecanismos de poda, profundidade e exploração do grafo.