feat: added tutorial file
This commit is contained in:
BIN
knight-moves/knight-moves-tutorial.pdf
Normal file
BIN
knight-moves/knight-moves-tutorial.pdf
Normal file
Binary file not shown.
38
knight-moves/knight-moves-tutorial.tex
Normal file
38
knight-moves/knight-moves-tutorial.tex
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
\documentclass[10pt]{article}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{amsmath,amsthm,amssymb}
|
||||||
|
\usepackage{fullpage}
|
||||||
|
\usepackage{url}
|
||||||
|
\pagenumbering{gobble}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
|
||||||
|
\title{ Tutorial: Movimento do Cavalo}
|
||||||
|
\author{Spoj NAKANJ - Minimum Knight moves}
|
||||||
|
\date{}
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
Para resolver o problema de encontrar o número mínimo de movimentos que um cavalo precisa para ir de uma posição inicial a uma posição de destino em um tabuleiro de xadrez $8 \times 8$, podemos modelar o tabuleiro como um grafo.
|
||||||
|
|
||||||
|
\subsection*{Observações importantes}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Cada casa do tabuleiro representa um vértice do grafo.
|
||||||
|
\item Cada movimento válido do cavalo corresponde a uma aresta entre dois vértices.
|
||||||
|
\item O objetivo é encontrar o menor número de arestas que conectam a posição inicial à posição de destino.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection*{Estratégia de solução}
|
||||||
|
|
||||||
|
O problema de encontrar o menor caminho em um grafo sem pesos nas arestas pode ser resolvido eficientemente usando \textbf{Busca em Largura (BFS, \textit{Breadth-First Search})}.
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Inicialize uma fila com a posição inicial do cavalo.
|
||||||
|
\item Mantenha uma matriz de visitados para marcar as posições já exploradas.
|
||||||
|
\item Para cada posição na fila, tente todos os oito movimentos possíveis do cavalo:
|
||||||
|
\begin{itemize}
|
||||||
|
\item $(+2, +1)$, $(+2, -1)$, $(-2, +1)$, $(-2, -1)$
|
||||||
|
\item $(+1, +2)$, $(+1, -2)$, $(-1, +2)$, $(-1, -2)$
|
||||||
|
\end{itemize}
|
||||||
|
\item Se a nova posição estiver dentro do tabuleiro e ainda não tiver sido visitada, marque-a como visitada e adicione-a à fila.
|
||||||
|
\item Continue até alcançar a posição de destino.
|
||||||
|
\end{enumerate}\end{document}
|
||||||
Binary file not shown.
@@ -21,7 +21,7 @@ Sua tarefa é ajudar Anjali a determinar o número mínimo de movimentos necess
|
|||||||
\Entrada
|
\Entrada
|
||||||
|
|
||||||
A primeira linha contém um inteiro $T$ ($1 \leq T \leq 100$), o número de casos de teste.
|
A primeira linha contém um inteiro $T$ ($1 \leq T \leq 100$), o número de casos de teste.
|
||||||
Cada uma das próximas $T$ linhas contém duas strings — \texttt{inicio} e \texttt{destino} — separadas por um espaço.
|
Cada uma das próximas $T$ linhas contém duas strings, \texttt{inicio} e \texttt{destino}, separadas por um espaço.
|
||||||
|
|
||||||
Cada string representa uma casa válida do tabuleiro:
|
Cada string representa uma casa válida do tabuleiro:
|
||||||
o primeiro caractere é uma letra de `a' a `h', e o segundo é um dígito de `1' a `8'.
|
o primeiro caractere é uma letra de `a' a `h', e o segundo é um dígito de `1' a `8'.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
A primeira linha contém um inteiro $T$ ($1 \leq T \leq 100$), o número de casos de teste.
|
A primeira linha contém um inteiro $T$ ($1 \leq T \leq 100$), o número de casos de teste.
|
||||||
Cada uma das próximas $T$ linhas contém duas strings — \texttt{inicio} e \texttt{destino} — separadas por um espaço.
|
Cada uma das próximas $T$ linhas contém duas strings, \texttt{inicio} e \texttt{destino}, separadas por um espaço.
|
||||||
|
|
||||||
Cada string representa uma casa válida do tabuleiro:
|
Cada string representa uma casa válida do tabuleiro:
|
||||||
o primeiro caractere é uma letra de `a' a `h', e o segundo é um dígito de `1' a `8'.
|
o primeiro caractere é uma letra de `a' a `h', e o segundo é um dígito de `1' a `8'.
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
Para resolver o problema de encontrar o número mínimo de movimentos que um cavalo precisa para ir de uma posição inicial a uma posição de destino em um tabuleiro de xadrez $8 \times 8$, podemos modelar o tabuleiro como um grafo.
|
||||||
|
|
||||||
|
\subsection*{Observações importantes}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Cada casa do tabuleiro representa um vértice do grafo.
|
||||||
|
\item Cada movimento válido do cavalo corresponde a uma aresta entre dois vértices.
|
||||||
|
\item O objetivo é encontrar o menor número de arestas que conectam a posição inicial à posição de destino.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection*{Estratégia de solução}
|
||||||
|
|
||||||
|
O problema de encontrar o menor caminho em um grafo sem pesos nas arestas pode ser resolvido eficientemente usando \textbf{Busca em Largura (BFS, \textit{Breadth-First Search})}.
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Inicialize uma fila com a posição inicial do cavalo.
|
||||||
|
\item Mantenha uma matriz de visitados para marcar as posições já exploradas.
|
||||||
|
\item Para cada posição na fila, tente todos os oito movimentos possíveis do cavalo:
|
||||||
|
\begin{itemize}
|
||||||
|
\item $(+2, +1)$, $(+2, -1)$, $(-2, +1)$, $(-2, -1)$
|
||||||
|
\item $(+1, +2)$, $(+1, -2)$, $(-1, +2)$, $(-1, -2)$
|
||||||
|
\end{itemize}
|
||||||
|
\item Se a nova posição estiver dentro do tabuleiro e ainda não tiver sido visitada, marque-a como visitada e adicione-a à fila.
|
||||||
|
\item Continue até alcançar a posição de destino.
|
||||||
|
\end{enumerate}
|
||||||
BIN
sliding-puzzle/sliding-puzzle-tutorial.pdf
Normal file
BIN
sliding-puzzle/sliding-puzzle-tutorial.pdf
Normal file
Binary file not shown.
43
sliding-puzzle/sliding-puzzle-tutorial.tex
Normal file
43
sliding-puzzle/sliding-puzzle-tutorial.tex
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
\documentclass[10pt]{article}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{amsmath,amsthm,amssymb}
|
||||||
|
\usepackage{fullpage}
|
||||||
|
\usepackage{url}
|
||||||
|
\pagenumbering{gobble}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
|
||||||
|
\title{ Tutorial: 6 Puzzle}
|
||||||
|
\author{Leetcode 773}
|
||||||
|
\date{}
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
O problema apresentado é uma versão simplificada do \textit{sliding puzzle}. Nosso objetivo é determinar o número mínimo de movimentos para organizar um tabuleiro $2 \times 3$ a partir de um estado inicial qualquer.
|
||||||
|
|
||||||
|
\subsection*{Representação do estado}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Cada configuração do tabuleiro pode ser representada como uma sequência linear de números, por exemplo, $[1, 2, 3, 4, 5, 0]$ para o estado final.
|
||||||
|
\item A posição do $0$ indica onde a casa vazia está localizada e determina quais movimentos são válidos.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection*{Estratégia de solução usando BFS}
|
||||||
|
|
||||||
|
Podemos modelar o problema como um grafo, onde cada nó é uma configuração do tabuleiro e cada aresta corresponde a um movimento válido do $0$. Uma abordagem eficiente é iniciar a BFS a partir do \textbf{estado final}:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Inicialize a fila com o estado final $[1,2,3,4,5,0]$ e marque-o como visitado com distância $0$.
|
||||||
|
\item Para cada estado na fila:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Identifique a posição do $0$ e calcule todas as posições adjacentes (horizontal e vertical) para trocas.
|
||||||
|
\item Gere os estados resultantes dessas trocas.
|
||||||
|
\item Se algum novo estado corresponder ao estado inicial fornecido, retorne a distância armazenada, que representa o número mínimo de movimentos.
|
||||||
|
\item Caso contrário, adicione o novo estado à fila e marque-o como visitado.
|
||||||
|
\end{itemize}
|
||||||
|
\item Se a fila se esvaziar sem encontrar o estado inicial, retorne $-1$.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\subsection*{Complexidade}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Espacial:} $O(6!)$, pois existem $6! = 720$ possíveis permutações do tabuleiro $2 \times 3$.
|
||||||
|
\end{itemize}\end{document}
|
||||||
Binary file not shown.
@@ -0,0 +1,30 @@
|
|||||||
|
O problema apresentado é uma versão simplificada do \textit{sliding puzzle}. Nosso objetivo é determinar o número mínimo de movimentos para organizar um tabuleiro $2 \times 3$ a partir de um estado inicial qualquer.
|
||||||
|
|
||||||
|
\subsection*{Representação do estado}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Cada configuração do tabuleiro pode ser representada como uma sequência linear de números, por exemplo, $[1, 2, 3, 4, 5, 0]$ para o estado final.
|
||||||
|
\item A posição do $0$ indica onde a casa vazia está localizada e determina quais movimentos são válidos.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection*{Estratégia de solução usando BFS}
|
||||||
|
|
||||||
|
Podemos modelar o problema como um grafo, onde cada nó é uma configuração do tabuleiro e cada aresta corresponde a um movimento válido do $0$. Uma abordagem eficiente é iniciar a BFS a partir do \textbf{estado final}:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Inicialize a fila com o estado final $[1,2,3,4,5,0]$ e marque-o como visitado com distância $0$.
|
||||||
|
\item Para cada estado na fila:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Identifique a posição do $0$ e calcule todas as posições adjacentes (horizontal e vertical) para trocas.
|
||||||
|
\item Gere os estados resultantes dessas trocas.
|
||||||
|
\item Se algum novo estado corresponder ao estado inicial fornecido, retorne a distância armazenada, que representa o número mínimo de movimentos.
|
||||||
|
\item Caso contrário, adicione o novo estado à fila e marque-o como visitado.
|
||||||
|
\end{itemize}
|
||||||
|
\item Se a fila se esvaziar sem encontrar o estado inicial, retorne $-1$.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\subsection*{Complexidade}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textbf{Espacial:} $O(6!)$, pois existem $6! = 720$ possíveis permutações do tabuleiro $2 \times 3$.
|
||||||
|
\end{itemize}
|
||||||
Reference in New Issue
Block a user