Commit be571758 by Stalin Munoz

A*, consistencia y admisibilidad

parent c1d81c6d
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\catcode `"\active
\catcode `<\active
\catcode `>\active
\@nameuse{es@quoting}
\@writefile{toc}{\beamer@endinputifotherversion {3.36pt}}
\@writefile{nav}{\beamer@endinputifotherversion {3.36pt}}
\select@language{spanish}
\@writefile{toc}{\select@language{spanish}}
\@writefile{lof}{\select@language{spanish}}
\@writefile{lot}{\select@language{spanish}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {2}{2}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{3}{3/13}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {3}{13}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{4}{14/15}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {14}{15}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{5}{16/17}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {16}{17}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{6}{18/18}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {18}{18}}}
\@writefile{nav}{\headcommand {\beamer@partpages {1}{19}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{19}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{19}}}
\@writefile{nav}{\headcommand {\beamer@documentpages {19}}}
\@writefile{nav}{\headcommand {\def \inserttotalframenumber {7}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{7}{19/19}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {19}{19}}}
\beamer@endinputifotherversion {3.36pt}
\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
\headcommand {\beamer@framepages {1}{1}}
\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}
\headcommand {\beamer@framepages {2}{2}}
\headcommand {\slideentry {0}{0}{3}{3/13}{}{0}}
\headcommand {\beamer@framepages {3}{13}}
\headcommand {\slideentry {0}{0}{4}{14/15}{}{0}}
\headcommand {\beamer@framepages {14}{15}}
\headcommand {\slideentry {0}{0}{5}{16/17}{}{0}}
\headcommand {\beamer@framepages {16}{17}}
\headcommand {\slideentry {0}{0}{6}{18/18}{}{0}}
\headcommand {\beamer@framepages {18}{18}}
\headcommand {\beamer@partpages {1}{19}}
\headcommand {\beamer@subsectionpages {1}{19}}
\headcommand {\beamer@sectionpages {1}{19}}
\headcommand {\beamer@documentpages {19}}
\headcommand {\def \inserttotalframenumber {7}}
\headcommand {\slideentry {0}{0}{7}{19/19}{}{0}}
\headcommand {\beamer@framepages {19}{19}}
\documentclass[xcolor=dvipsnames]{beamer}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage[makeroom]{cancel}
% descomentar para generar handouts con notas
\setbeameroption{show notes on second screen=right}
\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
\usefonttheme[onlymath]{serif}
\usepackage{verbatim}
\usepackage{pifont}
\usetheme{Antibes}
\usecolortheme{lily}
\usepackage{graphicx}
\usepackage{hyperref}
\newcommand{\I}[1]{\mathit{#1}}
\newcommand{\cierto}{\I{cierto}}
\newcommand{\falso}{\I{falso}}
\DeclareMathOperator*{\argmax}{argmax}
\spanishdecimal{.}
\title{Algoritmo de búsqueda $A^*$}
\author{Stalin Muñoz Gutiérrez}
\institute{
Centro de Ciencias de la Complejidad\\
Universidad Nacional Aut\'onoma de Mexico (UNAM)}
\date{}
\begin{document}
\parindent 2em
\frame
{
\titlepage
\note<1>{
Vamos ahora a ver el algoritmo denominado A*.
El algoritmo $A^*$ fue propuesto por Peter Hart, Nils Nilsson y Bertram Raphael en los años 60's.
Aún sigue siendo uno de los algoritmos más utilizados para encontrar rutas en grafos pesados.
}
}
\begin{frame}
\frametitle{Algoritmo $A^*$}
\begin{block}{Basado en UCS}
El algoritmo {\color{blue}$A^*$} es como un algoritmo UCS, con dos cambios:
\begin{enumerate}
\item un parametro adicional que es la función heurística, $h:S \to \mathbb{R}$.
\item la cola de prioridad utiliza como criterio de ordenamiento la función $f:S \to \mathbb{R}$ definida como sigue:{\color{blue}
\begin{equation}
f(n) = g(n) + h(n)
\end{equation} }
$g(n)$ es el costo acumulado del estado inicial al estado $n$.
\end{enumerate}
\end{block}
\note{
$A^*$ es una modificación del algoritmo UCS.
Tiene dos cambios importantes.
Primero, recibe una función heurística $h$, que estima el costo de un estado al estado meta.
Segundo, el criterio de ordenamiento para la agenda, ahora es la suma del costo acumulado desde el estado inicial, calculado con la función $g(n)$ y la estimación del costo al estado meta, obtenida con la heuristica $h$.
Si $h(n)$ es igual a zero para todo estado $n$,
recuperamos el algoritmo UCS.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: juego del 15}
\only<1>{
\includegraphics[scale=0.45]{Astar-ejemplo-01.pdf}
}
\note<1>{
Vamos a ilustrar el funcionamiento del algoritmo
con el juego del 15.
Como función heurística usaremos el número
de fichas fuera de lugar.
La meta es el arreglo ordenado de los números de
menor a mayor.
}
\only<2>{
\includegraphics[scale=0.45]{Astar-ejemplo-02.pdf}
}
\note<2>{
$A^*$ esta basado en UCS, usaremos una cola de
prioridad como agenda.
Metemos el estado inicial a la agenda.
}
\only<3>{
\includegraphics[scale=0.45]{Astar-ejemplo-03.pdf}
}
\note<3>{
Lo sacamos de la agenda.
Agregamos a la lista de expandidos.
También es posible que eliminemos el conjunto de expandidos. En ese caso el algoritmo trabajará más
pero usará menos memoria.
}
\only<4>{
\includegraphics[scale=0.45]{Astar-ejemplo-04.pdf}
}
\note<4>{
Al expandir al estado $A$, Obtenemos 3 configuraciones $B$, $C$ y $D$.
Aquí en amarillo mostramos las fichas fuera de lugar.
Como superíndice indicamos la función $f$ para
cada estado.
En el caso de $B$ tenemos una $h(B) = 4$.
En todos los estados el costo acumulado es 1.
}
\only<5>{
\includegraphics[scale=0.45]{Astar-ejemplo-05.pdf}
}
\note<5>{
Al frente de la cola de prioridad queda $B$ con un
costo total de 5, los otros estados tienen costos mayores.
Expandimos a $B$, obteniendo el estado $E$.
}
\only<6>{
\includegraphics[scale=0.45]{Astar-ejemplo-06.pdf}
}
\note<6>{
$E$ resulta ser el de menor costo.
Lo expandimos generando dos sucesores: $F$ y $G$.
}
\only<7>{
\includegraphics[scale=0.45]{Astar-ejemplo-07.pdf}
}
\note<7>{
El siguiente estado en salir es $F$ con un costo acumulado de 3 y un costo estimado a la meta de 2.
$F$ generará 3 sucesores. El costo acumulado en todos ellos es de 4.
Hasta el momento el algoritmo no ha retrocedido.
Sigue avanzando en dirección a la meta.
}
\only<8>{
\includegraphics[scale=0.45]{Astar-ejemplo-08.pdf}
}
\note<8>{
Ahora al frente se encuentra el estado $I$.
Al expandirlo genera los estados $K$ y $L$.
$K$ es la meta.
Como en UCS, no hemos terminado, se agrega a la agenda.
Terminaremos cuando se encuentre al frente de la cola de prioridad.
Nos daremos cuenta al sacarlo.
}
\only<9>{
\includegraphics[scale=0.45]{Astar-ejemplo-09.pdf}
}
\note<9>{
Sacamos el estado de menor costo $f$.
Ahora si, dado que la meta es el estado de menor costo, estamos listos para recuperar la ruta y finalizar la ejecución del algoritmo.
}
\only<10>{
\includegraphics[scale=0.45]{Astar-ejemplo-10.pdf}
}
\note<10>{
Regresamos con los apuntadores a los estados predecesores.
La ruta esta dada por la secuencia A,B,E,F,I,K, para simplificar hemos omitido la anotar la acción necesaria para lograr cada estado.
}
\only<11>{
\includegraphics[scale=0.45]{Astar-ejemplo-11.pdf}
}
\note<11>{
Aquí la secuencia de movimientos que nos llevan a la meta.
La heurística guió al algoritmo en dirección a la meta. Llegamos muy rápido a la solución.
El éxito de la aplicación de $A^*$ depende mucho de la función heurística seleccionada.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Admisibilidad en $A^*$}
\only<1>{
\begin{center}
\includegraphics[scale=0.4]{admisible-01.pdf}
\end{center}
}
\note<1>{
La admisibilidad de una heurística consiste en que el valor de la función heurística para todo nodo de la red debe ser inferior o igual al valor mínimo de costo al obejtivo.
En este ejemplo vemos como la función heurística tanto de $C$ como de $D$ se mantinene cerca, pero no superan el costo real a la meta. La meta en el ejemplo es $B$.
Si calculamos el valor de $f$ para $C$ y $D$ observamos que es de 4 y 3 respectivamente.
Por lo tanto el agente prefiere tomar la ruta por $D$.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{admisible-02.pdf}
\end{center}
}
\note<2>{
En este ejemplo tenemos una heurística no admisible.
Pues está sobreestimando el costo para el nodo $D$, con ello conduciendo al agente por un camino más largo.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Consistencia en $A^*$}
\only<1>{
\begin{center}
\includegraphics[scale=0.4]{consistencia.pdf}
\end{center}
}
\note<1>{
Una heurística es consistente o monotónica si para cada sucesor de todo vertice del grafo de estados acciones, la heurística del vértice es menor o igual que la heurística de la suma del costo de la transición del vertice al sucesor con la heurística del sucesor.
En este ejemplo la heurística mostrada cumple con esta propiedad.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.4]{consistencia-02.pdf}
\end{center}
}
\note<2>{
Aquí ilustramos un ejemplo donde la heurística no es monotónica.
Si avanzamos en la dirección del objetivo por el camino $A$, $C$ y $B$.
Observamos que para el nodo $A$ la función $h$ no es menor que la suma del costo a $C$, que es 1, con la heurística del nodo $C$ que es 2.
Esto significa que el valor de $f(A) = g(A)+ 4$ es mayor que el valor $f(C) = g(A) + 1 + 2$. Esto al avanzar en la profundidad observamos que el valor $f$ no se incrementa, sino que disminuye.
Esto no es bueno para $A^*$, pues una heurística no monotónica puede llevarnos a soluciones subóptimas.
Admisibilidad de una heurística esta implicada si la heurística es consistente.
}
\end{frame}
\begin{frame}
\frametitle{Algoritmo $A^*$}
\begin{center}
\includegraphics[scale=0.10]{pizarron.jpg}
\end{center}
\note{
Explicamos el algoritmo $A^*$ en el pizarrón.
}
\end{frame}
\begin{frame}
\frametitle{Algoritmo $A^*$}
\begin{center}
\includegraphics[scale=0.4]{analisis-astar.pdf}
\end{center}
\note{
Respecto de la complejidad computacional de $A^*$,
el consumo de memoria es exponencial en la profundidad de la meta.
El tiempo también.
Al usar la cola de prioridad adolece de la complejidad adicional de la eliminación del mínimo en esta estructura de datos.
La calidad de la solución depende de que la heurística satisfaga dos condiciones:
la primera se denomina admisibilidad, la segunda monotonicidad.
Más adelante explicaremos que significan estas condiciones.
El algoritmo es completo, asumiendo que el estado meta es alcanzable.
}
\end{frame}
\end{document}
\ No newline at end of file
\documentclass[xcolor=dvipsnames]{beamer}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage[makeroom]{cancel}
% descomentar para generar handouts con notas
\setbeameroption{show notes on second screen=right}
\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
\usefonttheme[onlymath]{serif}
\usepackage{verbatim}
\usepackage{pifont}
\usetheme{Antibes}
\usecolortheme{lily}
\usepackage{graphicx}
\usepackage{hyperref}
\newcommand{\I}[1]{\mathit{#1}}
\newcommand{\cierto}{\I{cierto}}
\newcommand{\falso}{\I{falso}}
\DeclareMathOperator*{\argmax}{argmax}
\spanishdecimal{.}
\title{Algoritmo de búsqueda $A^*$}
\author{Stalin Muñoz Gutiérrez}
\institute{
Centro de Ciencias de la Complejidad\\
Universidad Nacional Aut\'onoma de Mexico (UNAM)}
\date{}
\begin{document}
\parindent 2em
\frame
{
\titlepage
\note<1>{
Vamos ahora a ver el algoritmo denominado A*.
El algoritmo $A^*$ fue propuesto por Peter Hart, Nils Nilsson y Bertram Raphael en los años 60's.
Aún sigue siendo uno de los algoritmos más utilizados para encontrar rutas en grafos pesados.
}
}
\begin{frame}
\frametitle{Algoritmo $A^*$}
\begin{block}{Basado en UCS}
El algoritmo {\color{blue}$A^*$} es como un algoritmo UCS, con dos cambios:
\begin{enumerate}
\item un parametro adicional que es la función heurística, $h:S \to \mathbb{R}$.
\item la cola de prioridad utiliza como criterio de ordenamiento la función $f:S \to \mathbb{R}$ definida como sigue:{\color{blue}
\begin{equation}
f(n) = g(n) + h(n)
\end{equation} }
$g(n)$ es el costo acumulado del estado inicial al estado $n$.
\end{enumerate}
\end{block}
\note{
$A^*$ es una modificación del algoritmo UCS.
Tiene dos cambios importantes.
Primero, recibe una función heurística $h$, que estima el costo de un estado al estado meta.
Segundo, el criterio de ordenamiento para la agenda, ahora es la suma del costo acumulado desde el estado inicial, calculado con la función $g(n)$ y la estimación del costo al estado meta, obtenida con la heuristica $h$.
Si $h(n)$ es igual a zero para todo estado $n$,
recuperamos el algoritmo UCS.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: juego del 15}
\only<1>{
\includegraphics[scale=0.45]{Astar-ejemplo-01.pdf}
}
\note<1>{
Vamos a ilustrar el funcionamiento del algoritmo
con el juego del 15.
Como función heurística usaremos el número
de fichas fuera de lugar.
La meta es el arreglo ordenado de los números de
menor a mayor.
}
\only<2>{
\includegraphics[scale=0.45]{Astar-ejemplo-02.pdf}
}
\note<2>{
$A^*$ esta basado en UCS, usaremos una cola de
prioridad como agenda.
Metemos el estado inicial a la agenda.
}
\only<3>{
\includegraphics[scale=0.45]{Astar-ejemplo-03.pdf}
}
\note<3>{
Lo sacamos de la agenda.
Agregamos a la lista de expandidos.
También es posible que eliminemos el conjunto de expandidos. En ese caso el algoritmo trabajará más
pero usará menos memoria.
}
\only<4>{
\includegraphics[scale=0.45]{Astar-ejemplo-04.pdf}
}
\note<4>{
Al expandir al estado $A$, Obtenemos 3 configuraciones $B$, $C$ y $D$.
Aquí en amarillo mostramos las fichas fuera de lugar.
Como superíndice indicamos la función $f$ para
cada estado.
En el caso de $B$ tenemos una $h(B) = 4$.
En todos los estados el costo acumulado es 1.
}
\only<5>{
\includegraphics[scale=0.45]{Astar-ejemplo-05.pdf}
}
\note<5>{
Al frente de la cola de prioridad queda $B$ con un
costo total de 5, los otros estados tienen costos mayores.
Expandimos a $B$, obteniendo el estado $E$.
}
\only<6>{
\includegraphics[scale=0.45]{Astar-ejemplo-06.pdf}
}
\note<6>{
$E$ resulta ser el de menor costo.
Lo expandimos generando dos sucesores: $F$ y $G$.
}
\only<7>{
\includegraphics[scale=0.45]{Astar-ejemplo-07.pdf}
}
\note<7>{
El siguiente estado en salir es $F$ con un costo acumulado de 3 y un costo estimado a la meta de 2.
$F$ generará 3 sucesores. El costo acumulado en todos ellos es de 4.
Hasta el momento el algoritmo no ha retrocedido.
Sigue avanzando en dirección a la meta.
}
\only<8>{
\includegraphics[scale=0.45]{Astar-ejemplo-08.pdf}
}
\note<8>{
Ahora al frente se encuentra el estado $I$.
Al expandirlo genera los estados $K$ y $L$.
$K$ es la meta.
Como en UCS, no hemos terminado, se agrega a la agenda.
Terminaremos cuando se encuentre al frente de la cola de prioridad.
Nos daremos cuenta al sacarlo.
}
\only<9>{
\includegraphics[scale=0.45]{Astar-ejemplo-09.pdf}
}
\note<9>{
Sacamos el estado de menor costo $f$.
Ahora si, dado que la meta es el estado de menor costo, estamos listos para recuperar la ruta y finalizar la ejecución del algoritmo.
}
\only<10>{
\includegraphics[scale=0.45]{Astar-ejemplo-10.pdf}
}
\note<10>{
Regresamos con los apuntadores a los estados predecesores.
La ruta esta dada por la secuencia A,B,E,F,I,K, para simplificar hemos omitido la anotar la acción necesaria para lograr cada estado.
}
\only<11>{
\includegraphics[scale=0.45]{Astar-ejemplo-11.pdf}
}
\note<11>{
Aquí la secuencia de movimientos que nos llevan a la meta.
La heurística guió al algoritmo en dirección a la meta. Llegamos muy rápido a la solución.
El éxito de la aplicación de $A^*$ depende mucho de la función heurística seleccionada.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Admisibilidad en $A^*$}
\only<1>{
\begin{center}
\includegraphics[scale=0.4]{admisible-01.pdf}
\end{center}
}
\note<1>{
La admisibilidad de una heurística consiste en que el valor de la función heurística para todo nodo de la red debe ser inferior o igual al valor mínimo de costo al obejtivo.
En este ejemplo vemos como la función heurística tanto de $C$ como de $D$ se mantinene cerca, pero no superan el costo real a la meta. La meta en el ejemplo es $B$.
Si calculamos el valor de $f$ para $C$ y $D$ observamos que es de 4 y 3 respectivamente.
Por lo tanto el agente prefiere tomar la ruta por $D$.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{admisible-02.pdf}
\end{center}
}
\note<2>{
En este ejemplo tenemos una heurística no admisible.
Pues está sobreestimando el costo para el nodo $D$, con ello conduciendo al agente por un camino más largo.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Consistencia en $A^*$}
\only<1>{
\begin{center}
\includegraphics[scale=0.4]{consistencia.pdf}
\end{center}
}
\note<1>{
Una heurística es consistente o monotónica si para cada sucesor de todo vertice del grafo de estados acciones, la heurística del vértice es menor o igual que la heurística de
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{admisible-02.pdf}
\end{center}
}
\note<2>{
En este ejemplo tenemos una heurística no admisible.
Pues está sobreestimando el costo para el nodo $D$, con ello conduciendo al agente por un camino más largo.
}
\end{frame}
\begin{frame}
\frametitle{Algoritmo $A^*$}
\begin{center}
\includegraphics[scale=0.10]{pizarron.jpg}
\end{center}
\note{
Explicamos el algoritmo $A^*$ en el pizarrón.
}
\end{frame}
\begin{frame}
\frametitle{Algoritmo $A^*$}
\begin{center}
\includegraphics[scale=0.4]{analisis-astar.pdf}
\end{center}
\note{
Respecto de la complejidad computacional de $A^*$,
el consumo de memoria es exponencial en la profundidad de la meta.
El tiempo también.
Al usar la cola de prioridad adolece de la complejidad adicional de la eliminación del mínimo en esta estructura de datos.
La calidad de la solución depende de que la heurística satisfaga dos condiciones:
la primera se denomina admisibilidad, la segunda monotonicidad.
Más adelante explicaremos que significan estas condiciones.
El algoritmo es completo, asumiendo que el estado meta es alcanzable.
}
\end{frame}
\end{document}
\ No newline at end of file
\beamer@endinputifotherversion {3.36pt}
\select@language {spanish}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
\relax
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\catcode `"\active
\catcode `<\active
\catcode `>\active
\@nameuse{es@quoting}
\@writefile{toc}{\beamer@endinputifotherversion {3.36pt}}
\@writefile{nav}{\beamer@endinputifotherversion {3.36pt}}
\select@language{spanish}
\@writefile{toc}{\select@language{spanish}}
\@writefile{lof}{\select@language{spanish}}
\@writefile{lot}{\select@language{spanish}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/7}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {2}{7}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{3}{8/8}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {8}{8}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{4}{9/12}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {9}{12}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{5}{13/14}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {13}{14}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{6}{15/15}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {15}{15}}}
\@writefile{nav}{\headcommand {\beamer@partpages {1}{16}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{16}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{16}}}
\@writefile{nav}{\headcommand {\beamer@documentpages {16}}}
\@writefile{nav}{\headcommand {\def \inserttotalframenumber {7}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{7}{16/16}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {16}{16}}}
\beamer@endinputifotherversion {3.36pt}
\beamer@endinputifotherversion {3.36pt}
\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
\headcommand {\beamer@framepages {1}{1}}
\headcommand {\slideentry {0}{0}{2}{2/7}{}{0}}
\headcommand {\beamer@framepages {2}{7}}
\headcommand {\slideentry {0}{0}{3}{8/8}{}{0}}
\headcommand {\beamer@framepages {8}{8}}
\headcommand {\slideentry {0}{0}{4}{9/12}{}{0}}
\headcommand {\beamer@framepages {9}{12}}
\headcommand {\slideentry {0}{0}{5}{13/14}{}{0}}
\headcommand {\beamer@framepages {13}{14}}
\headcommand {\slideentry {0}{0}{6}{15/15}{}{0}}
\headcommand {\beamer@framepages {15}{15}}
\headcommand {\beamer@partpages {1}{16}}
\headcommand {\beamer@subsectionpages {1}{16}}
\headcommand {\beamer@sectionpages {1}{16}}
\headcommand {\beamer@documentpages {16}}
\headcommand {\def \inserttotalframenumber {7}}
\headcommand {\slideentry {0}{0}{7}{16/16}{}{0}}
\headcommand {\beamer@framepages {16}{16}}
++ "b/curso-search/b\303\272squeda-informada.out"
++ "b/curso-search/b\303\272squeda-informada.snm"
\documentclass[xcolor=dvipsnames]{beamer}
\documentclass[xcolor=dvipsnames]{beamer}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage[makeroom]{cancel}
% descomentar para generar handouts con notas
\setbeameroption{show notes on second screen=right}
\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
\usefonttheme[onlymath]{serif}
\usepackage{verbatim}
\usepackage{pifont}
\usetheme{Antibes}
\usecolortheme{lily}
\usepackage{graphicx}
\usepackage{hyperref}
\newcommand{\I}[1]{\mathit{#1}}
\newcommand{\cierto}{\I{cierto}}
\newcommand{\falso}{\I{falso}}
\DeclareMathOperator*{\argmax}{argmax}
\spanishdecimal{.}
\title{Algoritmos de Búsqueda Informada}
\author{Stalin Muñoz Gutiérrez}
\institute{
Centro de Ciencias de la Complejidad\\
Universidad Nacional Aut\'onoma de Mexico (UNAM)}
\date{}
\begin{document}
\parindent 2em
\frame
{
\titlepage
\note<1>{
Hoy presentaremos a los denominados algoritmos de búsqueda informada.
A diferencia de los algoritmos de búsqueda ciega, los algoritmos de búsqueda informada utilizan conocimiento del dominio del problema para orientar la frontera de exploración en la dirección de la meta.
}
}
\begin{frame}[<+->]
\frametitle{Búsqueda ciega contra búsqueda informada}
\only<1>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama.pdf}
\end{center}
}
\note<1>{
Usaremos un diagrama para ilustrar la diferencia entre los tipos de algoritmos.
Comencemos con los algoritmos de búsqueda ciega.
Estos algoritmos disponen únicamente de información de los estados que van descubriendo durante la exploración.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama-2.pdf}
\end{center}
}
\note<2>{
Un algoritmo de la familia de DFS toma una dirección de búsqueda y avanza en la profundidad guiado por esa dirección.
Es muy probable que esa dirección no sea la dirección en la que se encuentra la meta.
De llegar a hacerlo, a esta familia de algoritmos les cuesta mucho tiempo descubrir la meta.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama-3.pdf}
\end{center}
}
\note<3>{
Algoritmos de la Familia BFS realizan exploraciones exhaustivas en todas direcciones.
Estos algoritmos nos dan las soluciones óptimas, pero consumen mucha memoria.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama-4.pdf}
\end{center}
}
\note<4>{
El problema es que desde el punto de vista del agente, todos los nodos a la misma profundidad, o costo en el caso del algoritmo UCS, son igualmente atractivos.
}
\only<5>{
\begin{center}
\includegraphics[scale=0.5]{b-informada-diagrama.pdf}
\end{center}
}
\note<5>{
La idea principal de los algoritmos informados es dotarlos con información adicional que pueda guiarlos más rápido a encontrar la meta.
En otras palabras, el objetivo es crear un sesgo en las decisiones del agente que lo orienten hacia la meta.
Esto se logra a través de \emph{funciones heurísticas}.
En este diagrama las curvas ilustran puntos que son igualmente atractivos para el algoritmo.
Se construyeron sumando el costo acumulado desde el estado inicial (aquí costo es igual a distancia euclideana) con la distancia al nodo meta multiplicada por un escalar pequeño.
Esta \emph{aproximación} del costo real a la meta sirve para crear un sesgo en la dirección correcta.
}
\only<6>{
\begin{center}
\includegraphics[scale=0.5]{b-informada-2-diagrama.pdf}
\end{center}
}
\note<6>{
Mejores aproximaciones crean sesgos mas grandes.
Sesgos más grandes son mejores porque permiten a los algoritmos, en especial los tipo BFS, llegar más rápido a la meta, consumiendo con ello menos memoria.
}
\end{frame}
\begin{frame}
\frametitle{Funciones heurísticas}
\begin{block}{Heurísticas [Judea Pearl 1984]}
Las heurísticas son criterios, métodos, o principios para decidir cuál entre multiples alternativas de lineas de acción promete ser la más efectiva para alcanzar una meta. Representan un balance entre dos requerimientos: la necesidad de hacer los criterios simples y, al mismo tiempo, el deseo de que discriminen correctamente entre elecciones buenas y malas.
\end{block}
\note{
Para definir las funciones heurísticas citaremos a Judea Pearl. En su libro \emph{Intelligent Search Strategies for Computer Problem Solving}, Pearl las define como criterios discriminatorios para toma de decisiones respecto a líneas de acción en la consecución de una meta.
Algo muy importante a considerar es que deben ser criterios simples.
En los humanos, eso que se conoce como \emph{el sentido común}, \emph{reglas de oro}, \emph{buenas practicas}, etc.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: Rutas en mapas}
\only<1>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-01.pdf}
\end{center}
}
\note<1>{
Consideremos como ejemplo un vehículo autónomo que desea encontrar la ruta óptima para llegar a la Ciudad de Colima desde la Ciudad de México.
Sin mayor información tendría que explorar en todas direcciones, descubriendo las carreteras y sus costos en el camino.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-02.pdf}
\end{center}
}
\note<2>{
Una heurística podría ser implementada con el uso de una brújula.
Si el agente ahora sabe que Colima está en el occidente del país y que la Ciudad de México en el centro. La brújula le proporcionaría información valiosa para ir en la dirección correcta.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-03.pdf}
\end{center}
}
\note<3>{
Aún mejor herística podría definirse utilizando información de un dispositivo GPS.
Este dispositivo le daría la latitud y longitud de cualquier lugar en el que se encuentre.
Si sabemos las coordenadas de Colima, esto puede guiar la búsqueda.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-04.pdf}
\end{center}
}
\note<4>{
Una heurística muy buena puede ser construida con la información de coordenadas GPS.
La distancia en línea recta puede servir para crear una preferencia de dirección.
El agente trataría de minimizar la distancia a la meta.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: el juego del 15}
\only<1>{
\begin{center}
\includegraphics[scale=0.5]{heuristica-15-puzzle-01.pdf}
\end{center}
}
\note<1>{
Pensemos ahora en el juego del 15.
Si conocemos la configuración de la meta,
podemos dar preferencia a una configuración sobre otra dependiendo de qué tan \emph{parecida} es la configuración a la configuración deseada.
En este caso la configuración B se parece más que la A.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{heuristica-15-puzzle-02.pdf}
\end{center}
}
\note<2>{
En este caso una función heurística que es informativa para la discriminación de buenas y malas configuraciones esta dada por el número de fichas fuera de su lugar, respecto del objetivo.
Vemos que la configuración A tiene 7 fichas fuera de su lugar,
mientras que para la configuración B se tienen sólo 2 fichas fuera de lugar.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: mundo de bloques}
\only<1>{
\begin{center}
\includegraphics[scale=0.4]{heuristica-robot.pdf}
\end{center}
}
\note<1>{
En este ejemplo, conocido como el mundo de bloques, el robot tiene que mover los bloques
hasta conseguir la configuración objetivo.
Es posible definir una heurística que nos permita
discriminar estados más cercanos a la meta que otros.
En este caso A es más cercano que B.
}
\end{frame}
\begin{frame}
\frametitle{La función heurística}
\begin{block}{Costo aproximado a la meta}
La función heurística es una estimación del costo que tendrá llegar a la meta desde un nodo particular.
La denotaremos con la letra $h$, $h:S \to \mathbb{R}$.
Estrictamente esta función depende del estado meta, pero no hacemos
esta relación explícita.
\end{block}
\note{
Para los algoritmos que presentaremos podemos pensar a la función heurística como una estimación del costo de un estado dado al estado meta.
Como recomienda Pearl, la función debe poder calcularse de manera eficiente y debe ser informativa para la correcta discriminación de estados.
}
\end{frame}
\end{document}
\ No newline at end of file
\documentclass[xcolor=dvipsnames]{beamer}
\documentclass[xcolor=dvipsnames]{beamer}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{pgfpages}
\usepackage[makeroom]{cancel}
% descomentar para generar handouts con notas
\setbeameroption{show notes on second screen=right}
\usepackage{tikz}
\tikzstyle{every picture}+=[remember picture]
\usefonttheme[onlymath]{serif}
\usepackage{verbatim}
\usepackage{pifont}
\usetheme{Antibes}
\usecolortheme{lily}
\usepackage{graphicx}
\usepackage{hyperref}
\newcommand{\I}[1]{\mathit{#1}}
\newcommand{\cierto}{\I{cierto}}
\newcommand{\falso}{\I{falso}}
\DeclareMathOperator*{\argmax}{argmax}
\spanishdecimal{.}
\title{Algoritmos de Búsqueda Informada}
\author{Stalin Muñoz Gutiérrez}
\institute{
Centro de Ciencias de la Complejidad\\
Universidad Nacional Aut\'onoma de Mexico (UNAM)}
\date{}
\begin{document}
\parindent 2em
\frame
{
\titlepage
\note<1>{
Hoy presentaremos a los denominados algoritmos de búsqueda informada.
A diferencia de los algoritmos de búsqueda ciega, los algoritmos de búsqueda informada utilizan conocimiento del dominio del problema para orientar la frontera de exploración en la dirección de la meta.
}
}
\begin{frame}[<+->]
\frametitle{Búsqueda ciega contra búsqueda informada}
\only<1>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama.pdf}
\end{center}
}
\note<1>{
Usaremos un diagrama para ilustrar la diferencia entre los tipos de algoritmos.
Comencemos con los algoritmos de búsqueda ciega.
Estos algoritmos disponen únicamente de información de los estados que van descubriendo durante la exploración.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama-2.pdf}
\end{center}
}
\note<2>{
Un algoritmo de la familia de DFS toma una dirección de búsqueda y avanza en la profundidad guiado por esa dirección.
Es muy probable que esa dirección no sea la dirección en la que se encuentra la meta.
De llegar a hacerlo, a esta familia de algoritmos les cuesta mucho tiempo descubrir la meta.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama-3.pdf}
\end{center}
}
\note<3>{
Algoritmos de la Familia BFS realizan exploraciones exhaustivas en todas direcciones.
Estos algoritmos nos dan las soluciones óptimas, pero consumen mucha memoria.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.5]{b-ciega-diagrama-4.pdf}
\end{center}
}
\note<4>{
El problema es que desde el punto de vista del agente, todos los nodos a la misma profundidad, o costo en el caso del algoritmo UCS, son igualmente atractivos.
}
\only<5>{
\begin{center}
\includegraphics[scale=0.5]{b-informada-diagrama.pdf}
\end{center}
}
\note<5>{
La idea principal de los algoritmos informados es dotarlos con información adicional que pueda guiarlos más rápido a encontrar la meta.
En otras palabras, el objetivo es crear un sesgo en las decisiones del agente que lo orienten hacia la meta.
Esto se logra a través de \emph{funciones heurísticas}.
En este diagrama las curvas ilustran puntos que son igualmente atractivos para el algoritmo.
Se construyeron sumando el costo acumulado desde el estado inicial (aquí costo es igual a distancia euclideana) con la distancia al nodo meta multiplicada por un escalar pequeño.
Esta \emph{aproximación} del costo real a la meta sirve para crear un sesgo en la dirección correcta.
}
\only<6>{
\begin{center}
\includegraphics[scale=0.5]{b-informada-2-diagrama.pdf}
\end{center}
}
\note<6>{
Mejores aproximaciones crean sesgos mas grandes.
Sesgos más grandes son mejores porque permiten a los algoritmos, en especial los tipo BFS, llegar más rápido a la meta, consumiendo con ello menos memoria.
}
\end{frame}
\begin{frame}
\frametitle{Funciones heurísticas}
\begin{block}{Heurísticas [Judea Pearl 1984]}
Las heurísticas son criterios, métodos, o principios para decidir cuál entre multiples alternativas de lineas de acción promete ser la más efectiva para alcanzar una meta. Representan un balance entre dos requerimientos: la necesidad de hacer los criterios simples y, al mismo tiempo, el deseo de que discriminen correctamente entre elecciones buenas y malas.
\end{block}
\note{
Para definir las funciones heurísticas citaremos a Judea Pearl. En su libro \emph{Intelligent Search Strategies for Computer Problem Solving}, Pearl las define como criterios discriminatorios para toma de decisiones respecto a líneas de acción en la consecución de una meta.
Algo muy importante a considerar es que deben ser criterios simples.
En los humanos, eso que se conoce como \emph{el sentido común}, \emph{reglas de oro}, \emph{buenas practicas}, etc.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: Rutas en mapas}
\only<1>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-01.pdf}
\end{center}
}
\note<1>{
Consideremos como ejemplo un vehículo autónomo que desea encontrar la ruta óptima para llegar a la Ciudad de Colima desde la Ciudad de México.
Sin mayor información tendría que explorar en todas direcciones, descubriendo las carreteras y sus costos en el camino.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-02.pdf}
\end{center}
}
\note<2>{
Una heurística podría ser implementada con el uso de una brújula.
Si el agente ahora sabe que Colima está en el occidente del país y que la Ciudad de México en el centro. La brújula le proporcionaría información valiosa para ir en la dirección correcta.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-03.pdf}
\end{center}
}
\note<3>{
Aún mejor herística podría definirse utilizando información de un dispositivo GPS.
Este dispositivo le daría la latitud y longitud de cualquier lugar en el que se encuentre.
Si sabemos las coordenadas de Colima, esto puede guiar la búsqueda.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.21]{cdmx-colima-04.pdf}
\end{center}
}
\note<4>{
Una heurística muy buena puede ser construida con la información de coordenadas GPS.
La distancia en línea recta puede servir para crear una preferencia de dirección.
El agente trataría de minimizar la distancia a la meta.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: el juego del 15}
\only<1>{
\begin{center}
\includegraphics[scale=0.5]{heuristica-15-puzzle-01.pdf}
\end{center}
}
\note<1>{
Pensemos ahora en el juego del 15.
Si conocemos la configuración de la meta,
podemos dar preferencia a una configuración sobre otra dependiendo de qué tan \emph{parecida} es la configuración a la configuración deseada.
En este caso la configuración B se parece más que la A.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.5]{heuristica-15-puzzle-02.pdf}
\end{center}
}
\note<2>{
En este caso una función heurística que es informativa para la discriminación de buenas y malas configuraciones esta dada por el número de fichas fuera de su lugar, respecto del objetivo.
Vemos que la configuración A tiene 7 fichas fuera de su lugar,
mientras que para la configuración B se tienen sólo 2 fichas fuera de lugar.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: mundo de bloques}
\only<1>{
\begin{center}
\includegraphics[scale=0.4]{heuristica-robot.pdf}
\end{center}
}
\note<1>{
En este ejemplo, conocido como el mundo de bloques, el robot tiene que mover los bloques
hasta conseguir la configuración objetivo.
Es posible definir una heurística que nos permita
discriminar estados más cercanos a la meta que otros.
En este caso A es más cercano que B.
}
\end{frame}
\begin{frame}
\frametitle{La función heurística}
\begin{block}{Costo aproximado a la meta}
Para los algoritmos que presentaremos podemos pensar a la función heurística como una estimación del costo que tendrá llegar a la meta desde un nodo particular.
La denotaremos con la letra $h$, $h:S \to \mathbb{R}$.
Estrictamente esta función depende del estado meta, pero no hacemos
esta relación explícita.
\end{block}
\note{
Para los algoritmos que presentaremos
}
\end{frame}
\end{document}
\ No newline at end of file
\beamer@endinputifotherversion {3.36pt}
\beamer@endinputifotherversion {3.36pt}
\select@language {spanish}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -2,13 +2,17 @@ import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import math
delta = 0.025
x = np.arange(-1.0, 6.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z = np.sqrt(X**2+Y**2)+0.6*np.sqrt((X-5)**2+Y**2)
CS = ax.contour(X, Y, Z)
plt.show()
plt.plot([0 5],[0,0])
def doplot(k=0):
delta = 0.025
x = np.arange(-4, 4, delta)
y = np.arange(-2, 6, delta)
X, Y = np.meshgrid(x, y)
Z = np.sqrt(X**2+Y**2)+k*np.sqrt((X-5)**2+Y**2)
fig1, ax1 = plt.subplots()
ax1.axis('equal')
ax1.contour(X,Y,Z)
plt.plot([0,math.inf,5],[0,math.inf,0],color='r',marker = 'o')
plt.show()
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{amsmath}
\setcounter{MaxMatrixCols}{20}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment