Last active
May 16, 2022 17:59
-
-
Save NonWhite/2f310e557c3796e70960 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| \documentclass{article} | |
| \usepackage{lmodern} | |
| \usepackage[]{algorithm2e} | |
| \usepackage[T1]{fontenc} | |
| \usepackage[utf8]{inputenc} | |
| \usepackage[portuguese]{babel} | |
| \usepackage{mathtools} | |
| \usepackage{enumitem} | |
| \usepackage{listings} | |
| \title{Lista 1 de Inteligência Artificial} | |
| \author{9410313 - Walter Perez Urcia} | |
| \begin{document} | |
| \maketitle | |
| \section{Tetris} | |
| \subsection{Declaração} | |
| Existem muitas variações do jogo Tetris, para esse exercício adotaremos as seguintes regras: | |
| \begin{enumerate} | |
| \item O tabuleiro é uma matriz contendo com 10 colunas e 22 linhas | |
| \item Todos os tetraminós começam no meio do tabuleiro na linha superior | |
| \item Existem 7 tipos de tetraminós "I", "O", "J", "L", "S", "Z", "T" | |
| \item O tempo é discreto e cada ação (incluindo a ação no-op, que não causa alteração no estado) consome uma unidade de tempo | |
| \item A posição, rotação e tipo de peça atual, assim como o estado do tabuleiro são conhecidos (e nada mais) | |
| \end{enumerate} | |
| Desenvolva os seguintes items: | |
| \begin{enumerate}[ label = \alph*. ] | |
| \item Descreva a formulação do problema de uma jogada de Tetris, ou seja, de mover a peça da posição inicial até uma posição alvo no tabuleiro previamente definida | |
| \item Defina as funções necessárias para implementar uma busca genérica | |
| \item Estime o número de nós expandidos no pior caso para uma busca em profundidade e uma busca em largura | |
| \item Estime o número de nós expandidos no melhor caso para uma busca em profundidade e uma busca em largura quando o tabuleiro está vazio | |
| \item Descreva uma heurística não admissível e uma admissível para uma estratégia de busca informada | |
| \end{enumerate} | |
| \subsection{Solução a} | |
| A formulação para uma jogada de Tetris é a seguinte: | |
| \begin{itemize} | |
| \item Estados: Posição $( x , y )$ da peça + rotação $r$ | |
| \item Estado inicial: Posição $( x_i , y_i )$ + rotação $r_i$ | |
| \item Meta: Posição $( X_f , Y_f )$ no tabuleiro + rotação $R_f$ | |
| \item Ações: Rodar peça, mover esquerda, mover direita, no-op | |
| \end{itemize} | |
| A posição $( x , y $) de uma peça é definida por o quadrado inferior esquerdo, $x$ a coluna e $y$ a linha no tabuleiro. | |
| \subsection{Solução b} | |
| Podemos definir uma função ${buscaGenerica}$( $estado\_inicial$ , $estado\_meta$ , $função\_transição$ , $estratégia$ ) da seguinte forma: | |
| \begin{enumerate} | |
| \item ${estado}$ = ${estado\_inicial}$ | |
| \item Enquanto ${estado}$ diferente de ${estado\_meta}$ fazer | |
| \begin{enumerate} | |
| \item Encontrar as ações possíveis para ${estado}$ | |
| \item Encontrar os ${possíveis\_estados}$ usando a ${função\_transição}$ e as ações possíveis | |
| \item Se ${possíveis\_estados}$ é uma lista vazia retorne falha | |
| \item Seleccionar ${novo\_estado}$ usando ${estratégia}$ | |
| \item ${estado}$ = ${estado\_novo}$ | |
| \end{enumerate} | |
| \item Retornar solução | |
| \end{enumerate} | |
| \subsection{Solução c} | |
| O número de nós expandidos no pior caso são os seguintes: | |
| \begin{itemize} | |
| \item Busca em profundidade: $b^m$ | |
| \item Busca em largura: $b^{m+1}$ | |
| \end{itemize} | |
| Onde $b$ é o fator de ramificação máximo de cada estado, neste casso $b = 4$ porque só tem 4 possíveis ações. Da mesma forma $m$ é a profundidade máxima que pode ter um estado no árvore de busca. | |
| \subsection{Solução d} | |
| O número de nós expandidos no melhor caso quando o tabuleiro está vazio são os seguintes: | |
| \begin{itemize} | |
| \item Busca em profundidade: $d$ | |
| \item Busca em largura: $b^{d+1}$ | |
| \end{itemize} | |
| Os valores de $b$ e $m$ são iguais que na pergunta anterior. Além disso, $d$ é a profundidade da solução menos profunda. | |
| \subsection{Solução e} | |
| Uma heurística admissível pode ser | |
| \[ h( n ) = dist( ( n.x , n.y ) , ( X_f , Y_f ) ) ,\] | |
| onde ${dist}( p1 , p2 )$ é a distancia euclidiana entre os pontos $p1$ e $p2$. Por outro lado, uma heurística não admissível pode ser | |
| \[ h( n ) = w_1 | n.x - X_f | + w_2 | n.y - Y_f | + w_3 | r - R_f | ,\] | |
| onde $w_1, w_2, w_3 \geq 1$ e todas constantes porque o menor custo poderia ser quando elas tem valor igual a 1. | |
| Para ambos casos, se assume que um nó $n$ contem a posição $( x , y )$ e a rotação $r$ da peça. | |
| \section{Labirinto} | |
| \subsection{Declaração} | |
| O objetivo é dirigir o robô para fora de um labirinto. O robô inicia no meio do labirinto em direção ao norte. Você pode virar o robô em direção ao norte, sul, leste ou oeste. O robô pode ser comandado para mover uma certa distância para frente, apesar que irá parar antes de bater no muro. | |
| \begin{enumerate}[ label = \alph*. ] | |
| \item Formule esse problema. Qual é o tamanho do espaço de estados? | |
| \item Ao navegar pelo labirinto, é necessário virar apenas na interseção de dois ou mais corredores. Reformule esse problema usando essa observação. Qual será o tamanho do espaço de estados agora? Estado inicial: Robô em coordenadas $(0,0)$, apontando para Norte | |
| \item De qualquer ponto do labirinto, podemos mover em qualquer uma das quatro direções, até ter alcançado um ponto de virar e essa é a única ação que precisa ser feita. Reformule o problema usando essas ações. É necessário acompanhar a orientação do robô para resolver esse problema? | |
| \item Na descrição inicial do problema já abstraímos do mundo real, restringindo as ações e removendo os detalhes. Liste três simplificações que fizemos | |
| \end{enumerate} | |
| \subsection{Solução a} | |
| A formulação do problema é a seguinte: | |
| \begin{itemize} | |
| \item Estados: Posição (coordenadas) do robô no labirinto + direção | |
| \item Estado inicial: Posição $(X_m,Y_m)$ no meio do labirinto + direção norte | |
| \item Meta: Qualquer estado com posição $(X_f,Y_f)$ fora do labirinto | |
| \item Ações: Virar, mover para frente | |
| \item Função de transição: Em caso a ação seja virar, só vai mudar a direção no estado atual. Caso contrário (mover para frente) mudará a posição do robô se tem caminho na direção frente dele | |
| \end{itemize} | |
| Considerando um labirinto de dimensões $N \times M$ e as 4 possíveis direções: norte, sul, leste e oeste temos que o espaço de estados tem tamanho $4 \times N \times M$. | |
| \subsection{Solução b} | |
| Com as novas considerações a formulação do problema é a seguinte: | |
| \begin{itemize} | |
| \item Estados: Posição (coordenadas) do robô no labirinto + direção | |
| \item Estado inicial: Posição $(0,0)$ + direção norte | |
| \item Meta: Qualquer estado com posição $(X_f,Y_f)$ fora do labirinto | |
| \item Ações: Virar (só em interseções), mover para frente | |
| \item Função de transição: Em caso a ação seja virar, só vai mudar a direção no estado atual. Caso contrário (mover para frente) mudará a posição do robô se tem caminho na direção frente dele | |
| \end{itemize} | |
| Assumindo que temos $V$ pontos de interseção no labirinto, o tamanho do espaço de estados é igual a $4 \times V + 2 \times ( N \times M - V )$. Para cada posição de interseção é possível ter até 4 direções diferentes. Para as posições restantes só vai ser possível ter duas direções possíveis (dependendo da posição que vem o robô). | |
| \subsection{Solução c} | |
| Considerando as alterações no problema, sua formulação é a seguinte: | |
| \begin{itemize} | |
| \item Estados: Posição (coordenadas) do robô no labirinto | |
| \item Estado inicial: Posição $(0,0)$ | |
| \item Meta: Qualquer estado com posição $(X_f,Y_f)$ fora do labirinto | |
| \item Ações: mover para uma direção | |
| \item Função de transição: Mudará a posição do robô | |
| \end{itemize} | |
| O tamanho do espaço de estados é $N \times M$. Não precisa colocar a orientação do robô no estado porque ele pode mover para qualquer direção em qualquer posição. | |
| \subsection{Solução d} | |
| As simplificações que foram feitas são: | |
| \begin{itemize} | |
| \item O labirinto é considerado como um tabuleiro com coordenadas inteiras | |
| \item As distancias entre uma posição e outra não são importantes, só os movimentos para sair | |
| \item O tempo que tarda em fazer cada uma das ações (virar e mover) | |
| \end{itemize} | |
| \section{Coloração de mapas} | |
| \subsection{Declaração} | |
| Forneça uma formulação completa do problema para cada um dos seguintes itens. Escolha a formulação suficientemente precisa para ser implementada: | |
| \begin{enumerate}[ label = \alph*. ] | |
| \item Usando apenas 4 cores, colorir um mapa plano de tal forma que das regiões adjacentes não tenham a mesma cor | |
| \item Um macaco com 30 cm está em uma sala onde tem algumas bananas suspensas em um teto de 80 cm. Ele gostaria de pegar as bananas. A sala contém dois engradados móveis e escaláveis com 30 cm de altura que podem ser empilhados | |
| \item Existe um programa que exibe a mensagem "registro de entrada inválido" ao alimentar determinado arquivo com registros de entrada. Você sabe que o processamento de cada registro é independente de outros registros e deseja descobrir qual registro é inválido | |
| \item Existem três jarras que medem 12, 8 e 3 galões e uma torneira de água. As jarras podem ser enchidas ou esvaziadas uma da outra ou para o chão. Medir exatamente um galão, somente com essas operações | |
| \end{enumerate} | |
| \subsection{Solução a} | |
| \begin{itemize} | |
| \item Estados: Mapa com algumas regiões coloridas | |
| \item Estado inicial: Mapa sem pintar | |
| \item Meta: Mapa completo colorido | |
| \item Ações: Colorir uma região | |
| \item Função de transição: Dado um mapa com $n$ regiões coloridas, retorna um mapa com $n+1$ regiões coloridas tal que as regiões adjacentes não tenham a mesma cor | |
| \end{itemize} | |
| \subsection{Solução b} | |
| \begin{itemize} | |
| \item Estados: Altura do macaco | |
| \item Estado inicial: Não é mencionada a altura inicial do macaco | |
| \item Meta: 80 cm | |
| \item Ações: Empilhar engradados, mover engradado | |
| \item Função de transição: Não é muito precisa | |
| \end{itemize} | |
| Não é suficientemente precisa porque não diz sobre como o macaco pega a banana ou se precisa chegar até uma determinada altura. Alem disso, não menciona se os 30 cm são a altura dos pés do macaco ou altura de sua cabeça. | |
| \subsection{Solução c} | |
| \begin{itemize} | |
| \item Estados: Posição no arquivo + válido/inválido | |
| \item Estado inicial: Inicio do arquivo | |
| \item Meta: Qualquer estado com inválido | |
| \item Ações: Processar registro (e dizer se é válido ou não) | |
| \item Função de transição: Se o registro é válido, retorna a seguinte posição. Caso contrário só muda de válido a inválido o estado | |
| \end{itemize} | |
| \subsection{Solução d} | |
| \begin{itemize} | |
| \item Estados: Quantidade de galões em cada torneira | |
| \item Estado inicial: Não é mencionada | |
| \item Meta: Qualquer estado com uma torneira com exatamente um galão | |
| \item Ações: Enchidar uma torneira, esvaziar uma torneira | |
| \end{itemize} | |
| A formulação suficientemente precisa para ser implementada é a primeira, aquela para colorir o mapa com 4 cores. | |
| \section{Estado e nó} | |
| \subsection{Declaração} | |
| Qual é a diferença entre um estado do mundo, uma descrição do estado e nó de busca? Por que é útil essa distinção? | |
| \subsection{Solução} | |
| Um estado do mundo é a representação simplificada da situação atual no mundo, enquanto uma descrição do estado é a interpretação desse estado no mundo. Por último um, nó de busca é um estado que pode ser expandido a outro baseado em uma estratégia de busca e é parte de um árvore de busca. A distinção é útil porque o primeiro da uma ideia sobre como está o mundo em termos gerais. O segundo ajuda a conhecer com mais detalhes a situação do mundo e os nós de busca ajudam para encontrar uma solução ao problema dependendo da estratégia de busca. | |
| \section{Estratégias de busca} | |
| \subsection{Declaração} | |
| Qual das seguintes alternativas são falsas e quais são verdadeiras? Explique suas respostas. | |
| \begin{enumerate}[ label = \alph*. ] | |
| \item A busca em profundidade sempre expande pelo menos tantos nós quanto a busca $A^*$ com uma heurística admissível | |
| \item $h( n ) = 0$ é uma heurística admissível para o quebra cabeças de 8 peças | |
| \item Em robótica, $A^*$ não é útil porque as percepções, estados e ações são contínuas | |
| \item A busca em largura é completa mesmo se os custos de passos iguais a zero forem permitidos | |
| \item Assuma que a torre pode se mover em um tabuleiro de xadrez qualquer quantidade de quadrados em linha reta, verticalmente ou horizontalmente, mas não pode pular sobre as peças. A distância de Manhatam é uma heurística admissível para o problema de movimentar a torre do quadrado A para o B no menor número de movimentos | |
| \end{enumerate} | |
| \subsection{Solução a} | |
| Falso. A busca em profundidade expande um nó ao mesmo tempo enquanto $A^*$ expande todos os nós vizinhos. Além disso, a busca em profundidade é incompleta e $A^*$ é completa. | |
| \subsection{Solução b} | |
| Verdadeiro. Uma heurística $h( n )$ é admissível se $h( n ) \leq C( n )$, onde $C( n )$ é o custo para chegar ao nó $n$. | |
| \subsection{Solução c} | |
| Falso. $A^*$ usa duas funções: uma heurística $h( n )$ que diz o custo estimado para chegar ao estado $n$ à meta e uma função de custo $C( n )$ que diz quanto custa chegar do início ao estado $n$. Aquelas funções podem retornar valores contínuos e também $n$ pode ser um valor contínuo. | |
| \subsection{Solução d} | |
| Verdadeiro. A busca em largura pode ser usada ainda se tem custos de passos iguais a zero só que aqueles nós tem que ser colocados ao início da fila e não ao final porque tem menor profundidade. | |
| \subsection{Solução e} | |
| Verdadeiro. Uma heurística $h( n )$ é admissível se $h( n ) \leq C( n )$, onde $C( n )$ é o custo para chegar ao nó $n$. Se no caminho para ir de $A$ a $B$ não tem peças $h( n ) = C( n )$, caso contrario $h( n ) < C( n )$. | |
| \end{document} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment