Commit 92cf4ea9 by Stalin Munoz

Parcial UCS

parent e106ae9b
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 {\beamer@partpages {1}{5}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{5}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{5}}}
\@writefile{nav}{\headcommand {\beamer@documentpages {5}}}
\@writefile{nav}{\headcommand {\def \inserttotalframenumber {3}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{3}{3/5}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {3}{5}}}
\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 {\beamer@partpages {1}{5}}
\headcommand {\beamer@subsectionpages {1}{5}}
\headcommand {\beamer@sectionpages {1}{5}}
\headcommand {\beamer@documentpages {5}}
\headcommand {\def \inserttotalframenumber {3}}
\headcommand {\slideentry {0}{0}{3}{3/5}{}{0}}
\headcommand {\beamer@framepages {3}{5}}
......@@ -24,7 +24,7 @@
\DeclareMathOperator*{\argmax}{argmax}
\spanishdecimal{.}
\title{Algoritmo de búsqueda Bidireccional}
\title{Algoritmo de Costo Uniforme}
\author{Stalin Muñoz Gutiérrez}
\institute{
Centro de Ciencias de la Complejidad\\
......@@ -39,237 +39,65 @@ Centro de Ciencias de la Complejidad\\
{
\titlepage
\note<1>{
Hoy veremos el algoritmo de búsqueda bidireccional.
Hasta el momento hemos considerado la optimalidad como trayectorias más cortas medidas en número de acciones en el grafo de estados acciones.
Este es una variación interesante del algoritmo BFS.
Hoy vamos a ver como encontrar soluciones óptimas en grafos con acciones que tienen costos distintos.
Para poder aplicar el algoritmo vamos a requerir de condiciones adicionales.
Una condición es conocer el estado meta. Si no conocemos el estado meta o hay varios estados meta, no podemos aplicar el algoritmo directamente.
La otra condición es que para cualquier estado podamos conocer el conjunto de acciones y estados de los que es sucesor.
}
}
\begin{frame}[<+->]
\frametitle{Algoritmo de búsqueda bidireccional}
\begin{block}{Algoritmo basado en BFS}
Dos búsquedas por turnos.
\note<1>{
El algoritmo de búsqueda bidireccional, es en realidad dos búsquedas por turnos.
Las búsquedas podrían hacerse de manera paralela, pero requeriría modificar ligeramente el algoritmo que vamos a presentar.
}
\begin{itemize}
\item Una búsqueda progresiva o hacia adelante comenzando en el nodo inicial.
\note<2>{
La primera de las búsquedas es una búsqueda progresiva tipo BFS que comienza con el nodo inicial.
}
\item Otra búsqueda regresiva o hacia atrás comenzando con el nodo meta.
\note<3>{
La segunda búsqueda es una búsqueda regresiva o hacía atrás tipo BFS empezando del nodo meta.
}
\item El algoritmo termina cuando las búsquedas se encuentran a la mitad del camino.
\note<4>{
Cada dirección de exploración tiene una frontera de búsqueda.
El objetivo de cada exploración es descubrir un estado que es común a las dos fronteras.
Cuando dicha intersección se encuentra se puede conformar la ruta total a partir de las rutas parciales al estado común.
}
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Búsqueda bidireccional}
\only<1>{
\frametitle{Optimalidad de costo}
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-10.pdf}
\includegraphics[scale=0.4]{grafo-pesado.pdf}
\end{center}
}
\note<1>{
El estado inicial se agrega a la frontera de la búsqueda progresiva.
El estado meta se agrega a la frontera de la búsqueda regresiva.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-09.pdf}
\end{center}
}
\note<2>{
La búsqueda progresiva expande el nodo inicial.
La nueva frontera son todos los estados a profundidad 1.
La búsqueda progresiva busca que su frontera se intersecte con la frontera de la búsqueda regresiva.
Esto no ha pasado aún.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-08.pdf}
\end{center}
}
\note<3>{
Ahora es el turno de la búsqueda regresiva.
Si hacemos las búsquedas por turnos garantizamos que al intersectarse las fronteras, tendremos la solución óptima.
La búsqueda regresiva expande el estado meta.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-07.pdf}
\end{center}
}
\note<4>{
Turno de la búsqueda progresiva.
Generamos la frontera actual.
Todos los sucesores de los estados de la frontera anterior.
}
\only<5>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-06.pdf}
\end{center}
}
\note<5>{
Ahora es el turno de la búsqueda regresiva.
Agregamos todos los estados a profundidad 2.
Aún no se intersectan las fronteras.
}
\only<6>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-05.pdf}
\end{center}
}
\note<6>{
Hacia adelante con profundidad 3.
}
\only<7>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-04.pdf}
\end{center}
}
\note{
En un grafo pesado la trayectoria con menor número de pasos, no es necesariamente la más óptima.
\note<7>{
Hacia atrás con profundidad 3.
}
En este ejemplo la ruta más corta en número de pasos tiene un costo igual a la suma de 4 más 6 igual, esto es 10.
\only<8>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-03.pdf}
\end{center}
}
\note<8>{
Se alcanza profundidad 4 en la búsqueda progresiva.
La ruta indicada, sin embargo, tiene el doble de pasos y un costo total de 9.
No hay intersección todavía.
}
\only<9>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-02.pdf}
\end{center}
En este ejemplo, esta es la ruta óptima.
}
\end{frame}
\note<9>{
La búsqueda regresiva también alcanza profundidad 4.
\begin{frame}[<+->]
\frametitle{Algoritmo de Costo Uniforme (Uniform Cost Search)}
\begin{block}{Definido a partir de un BFS}
El algoritmo de Costo Uniforme (UCS), es como un algoritmo BFS con dos cambios:
\note<1>{
El algoritmo de costo uniforme también se conoce como UCS por sus siglas en inglés que significan \emph{Uniform Cost Search}.
Sin intersección.
}
Para definirlo partimos del algoritmo BFS como base.
\only<10>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-01.pdf}
\end{center}
Le haremos dos cambios.
}
\note<10>{
\begin{itemize}
\item la agenda es una cola de prioridad (\emph{priority queue}) con el estado de menor costo al frente.
Turno de la búsqueda hacia adelante.
\note<2>{
No mostramos todos los nodos a profundidad 5.
BFS utiliza un cola como estructura de datos para representar la agenda.
Únicamente el nodo de intersección entre las dos fronteras.
UCS utilizará una cola de prioridad.
}
Una cola de prioridad mantiene el estado de menor costo al frente de la agenda.
\only<11>{
\begin{center}
\includegraphics[scale=0.13]{bidireccional-diagrama-00.pdf}
\end{center}
}
\note<11>{
\item el algoritmo no se detiene cuando encuentra el objetivo, sino cuando el estado meta está al frente de la agenda.
Considerando que la intersección se encuentra tras expandir todos los estados a profundidad 5 en la frontera de la búsqueda progresiva,
y sumando el total de estados expandidos con el total de ambas fronteras,
tenemos que hemos expandido poco menos de 500 estados.
Dado que en este ejemplo la solución esta a profundidad 9,
un algoritmo BFS convencional habría expandido cerca de 30 mil estados para encontrar la solución.
\note<3>{
Esto es un ahorro significativo en memoria.
El algoritmo no se detiene al encontrar la meta.
Continua la ejecución hasta que la meta sea el nodo al frente de la cola de prioridad.
}
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Algoritmo Bidireccional}
\begin{center}
\includegraphics[scale=0.10]{pizarron.jpg}
\end{center}
\note{
Explicamos el algoritmo Bidireccional en el pizarrón.
}
\end{frame}
\begin{frame}
\frametitle{Análisis Asintótico del algoritmo Bidireccional}
\begin{center}
\includegraphics[scale=0.35]{analisis-bidireccional.pdf}
\end{center}
\end{frame}
\note{
El desempeño del algoritmo bidireccional es muy bueno.
A pesar de utilizar memoria exponencial, al dividirse la búsqueda en dos exploraciones por turnos, el crecimiento de memoria es $O(b^{d/2})$.
Este ahorro es sustancial.
Respecto del tiempo, crece a la par con la memoria.
El algoritmo nos da la solución óptima,
y es completo.
Para problemas grandes, aún este ahorro de memoria, puede no ser suficiente.
La desventaja más notable es que el algoritmo no es tan general como los otros.
Se requiere de conocer el estado meta y también de poder ir hacia atrás de los estados para recuperar los estados predecesores.
}
\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 Costo Uniforme}
\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>{
Hasta el momento hemos considerado la optimalidad como trayectorias más cortas medidas en número de acciones en el grafo de estados acciones.
Hoy vamos a ver como encontrar soluciones óptimas en grafos con acciones que tienen costos distintos.
}
}
\begin{frame}
\frametitle{Optimalidad de costo}
\begin{center}
\includegraphics[scale=0.4]{grafo-pesado.pdf}
\end{center}
\note{
En un grafo pesado la trayectoria con menor número de pasos, no es necesariamente la más óptima.
En este ejemplo la ruta más corta en número de pasos tiene un costo igual a la suma de 4 más 6 igual, esto es 10.
La ruta indicada, sin embargo, tiene el doble de pasos y un costo total de 9.
En este ejemplo, esta es la ruta óptima.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Algoritmo de Costo Uniforme (Uniform Cost Search)}
\begin{block}{Definido a partir de un BFS}
El algoritmo de Costo Uniforme (UCS), es como un algoritmo BFS con dos cambios:
\only<1>{
El algoritmo de costo uniforme también se conoce como UCS por sus siglas en inglés que significan \emph{Uniform Cost Search}.
Para definirlo partimos del algoritmo BFS como base.
Haremos dos cambios.
}
\begin{itemize}
\item la agenda es una cola de prioridad (\emph{priority queue}) con el estado de menor costo al frente.
\only<2>{
BFS utiliza un cola como estructura de datos para representar la agenda.
UCS utilizará una cola de prioridad.
Una cola de prioridad mantiene el estado de menor costo al frente de la agenda.
}
\item el algoritmo no se detiene cuando encuentra el objetivo, sino cuando el estado meta está al frente de la agenda.
\only<3>{
El algoritmo no se detiene al encontrar la meta.
Continua la ejecución hasta que la meta sea el nodo al frente de la cola de prioridad.
}
\end{itemize}
\end{block}
\end{frame}
\end{document}
\ No newline at end of file
\beamer@endinputifotherversion {3.36pt}
\select@language {spanish}
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