Commit c1d81c6d by Stalin Munoz

Se agrega material de algoritmo UCS

parent 92cf4ea9
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.
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.
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.
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.
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.
import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
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])
......@@ -30,10 +30,14 @@
\@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}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{4}{6/36}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {6}{36}}}
\@writefile{nav}{\headcommand {\beamer@partpages {1}{38}}}
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{38}}}
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{38}}}
\@writefile{nav}{\headcommand {\beamer@documentpages {38}}}
\@writefile{nav}{\headcommand {\def \inserttotalframenumber {5}}}
\@writefile{nav}{\headcommand {\slideentry {0}{0}{5}{37/38}{}{0}}}
\@writefile{nav}{\headcommand {\beamer@framepages {37}{38}}}
......@@ -3,10 +3,14 @@
\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}}
\headcommand {\slideentry {0}{0}{4}{6/36}{}{0}}
\headcommand {\beamer@framepages {6}{36}}
\headcommand {\beamer@partpages {1}{38}}
\headcommand {\beamer@subsectionpages {1}{38}}
\headcommand {\beamer@sectionpages {1}{38}}
\headcommand {\beamer@documentpages {38}}
\headcommand {\def \inserttotalframenumber {5}}
\headcommand {\slideentry {0}{0}{5}{37/38}{}{0}}
\headcommand {\beamer@framepages {37}{38}}
No preview for this file type
......@@ -99,5 +99,334 @@ Continua la ejecución hasta que la meta sea el nodo al frente de la cola de prio
\end{block}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: Encontrar ruta de B a P}
\only<1>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-00.pdf}
\end{center}
}
\note<1>{
Vamos a ver el algoritmo UCS en funcionamiento para el ejemplo de encontrar la ruta de la estación Bellas Artes a la estación Pino Suarez del metro.
Nos interesa la ruta óptima, entendida no como el número de pasos o acciones, sino como la ruta cuya suma de los costos sobre la trayectoria sea mínima.
El costo que estamos considerando es la distancia entre las estaciones.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-01.pdf}
\end{center}
}
\note<2>{
Ingresamos el estado inicial a la agenda.
UCS utiliza una cola de prioridad.
El nodo de menor costo, siempre es el primero en salir.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-02.pdf}
\end{center}
}
\note<3>{
Expandimos a $B$, lo agregamos al conjunto de expandidos.
Al agregar los nodos anotamos no solo de dónde vienen, como lo hemos estado haciendo, también indicamos con un superíndice el costo acumulado de la trayectoria desde el estado inicial.
En este caso son las distancias directas de la estación inicial en metros.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-03.pdf}
\end{center}
}
\note<4>{
Al sacar de la agenda, el estado que sale es $A$, la estación más cercana.
}
\only<5>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-04.pdf}
\end{center}
}
\note<5>{
Expandimos $A$.
Se agrega $Z$, su costo es la suma del costo acumulado en $A$ que es de 387 y la distancia de $A$ a $Z$ que es de 602.
}
\only<6>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-05.pdf}
\end{center}
}
\note<6>{
El siguiente nodo en salir es $H$.
}
\only<7>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-06.pdf}
\end{center}
}
\note<7>{
Agregamos 3 sucesores $R$, $J$ y $V$.
Cada uno acumula el costo del estado $H$ con el de la transición respectiva.
}
\only<8>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-07.pdf}
\end{center}
}
\note<8>{
Ahora $S$ es el de menor costo.
}
\only<9>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-08.pdf}
\end{center}
}
\note<9>{
Expandimos $S$, agregando el estado $O$.
}
\only<10>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-09.pdf}
\end{center}
}
\note<10>{
El estado de menor costo ahora es $G$.
Lo sacamos.
}
\only<11>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-10.pdf}
\end{center}
}
\note<11>{
Al expandirlo agregamos a $L$ y a $R$.
}
\only<12>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-11.pdf}
\end{center}
}
\note<12>{
El siguiente nodo en salir es $J$.
}
\only<13>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-12.pdf}
\end{center}
}
\note<13>{
Lo expandimos.
Agregamos a $D$.
}
\only<14>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-13.pdf}
\end{center}
}
\note<14>{
Ahora $O$ es el de menor costo.
Lo sacamos.
}
\only<15>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-14.pdf}
\end{center}
}
\note<15>{
Al expandir a $O$ agregamos a $I$ y a $D$.
}
\only<16>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-15.pdf}
\end{center}
}
\note<16>{
El que está al frente ahora es $Z$.
Lo sacamos.
}
\only<17>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-16.pdf}
\end{center}
}
\note<17>{
Encontramos el estado meta $P$.
Pero no hemos terminado...
Lo agregamos a la agenda.
}
\only<18>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-17.pdf}
\end{center}
}
\note<18>{
Terminaremos cuando el estado meta este al frente
de la cola de prioridad.
Ahora al frente queda $V$.
}
\only<19>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-18.pdf}
\end{center}
}
\note<19>{
Lo exapandimos.
Pero no genera sucesores que no se hayan expandido previamente.
}
\only<20>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-19.pdf}
\end{center}
}
\note<20>{
En este paso el estado de menor costo es $L$.
Lo sacamos.
}
\only<21>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-20.pdf}
\end{center}
}
\note<21>{
Agregamos a su sucesor $T$.
}
\only<22>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-21.pdf}
\end{center}
}
\note<22>{
Al frente queda $R$.
Lo sacamos.
}
\only<23>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-22.pdf}
\end{center}
}
\note<23>{
Agregamos al estado $U$.
}
\only<24>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-23.pdf}
\end{center}
}
\note<24>{
El siguiente al frente es $R$,
lo acambamos de expandir, no se agregan estados.
}
\only<25>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-24.pdf}
\end{center}
}
\note<25>{
Es el turno de $I$.
}
\only<26>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-25.pdf}
\end{center}
}
\note<26>{
Nos encontramos nuevamente con el estado meta $P$.
Lo agregamos y continuamos...
}
\only<27>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-26.pdf}
\end{center}
}
\note<27>{
Al frente queda $D$.
Lo sacamos.
}
\only<28>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-27.pdf}
\end{center}
}
\note<28>{
Agregamos a $C$.
}
\only<29>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-28.pdf}
\end{center}
}
\note<29>{
El de menor costo es nuevamente $D$.
Se desecha.
}
\only<30>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-29.pdf}
\end{center}
}
\note<30>{
El siguiente en salir de la agenda es $P$.
Nuestra meta.
Estamos listos para recuperar la ruta óptima.
}
\only<31>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-30.pdf}
\end{center}
}
\note<31>{
La ruta encontrada por el algoritmo es:
$B$, $S$, $O$, $I$, $P$.
Con un costo total de 1575 metros.
Observamos que en la agenda la primera ruta encontrada al estado meta es de 1734 metros.
UCS nos encontró la ruta óptima en distancia.
Desde luego en una aplicación de la vida real tendríamos que incluir los costos de los transbordos para cambiar de línea del metro.
Aún en este pequeño mapa, se puede apreciar que UCS toma mucho tiempo y requiere de mucha memoria.
}
\end{frame}
\begin{frame}[<+->]
\frametitle{Análisis asintótico de UCS}
\only<1>{
\begin{center}
\includegraphics[scale=0.35]{analisis-ucs.pdf}
\end{center}
}
\note<1>{}
\only<2>{
\begin{center}
\includegraphics[scale=0.35]{analisis-ucs-2.pdf}
\end{center}
}
\note<2>{
}
\end{frame}
\end{document}
\ No newline at end of file
......@@ -66,17 +66,17 @@ En este ejemplo, esta es la ruta óptima.
\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>{
\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}.
Para definirlo partimos del algoritmo BFS como base.
Haremos dos cambios.
Le 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>{
\note<2>{
BFS utiliza un cola como estructura de datos para representar la agenda.
......@@ -88,7 +88,7 @@ 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>{
\note<3>{
El algoritmo no se detiene al encontrar la meta.
......@@ -99,5 +99,321 @@ Continua la ejecución hasta que la meta sea el nodo al frente de la cola de prio
\end{block}
\end{frame}
\begin{frame}[<+->]
\frametitle{Ejemplo: Encontrar ruta de B a P}
\only<1>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-00.pdf}
\end{center}
}
\note<1>{
Vamos a ver el algoritmo UCS en funcionamiento para el ejemplo de encontrar la ruta de la estación Bellas Artes a la estación Pino Suarez del metro.
Nos interesa la ruta óptima, entendida no como el número de pasos o acciones, sino como la ruta cuya suma de los costos sobre la trayectoria sea mínima.
El costo que estamos considerando es la distancia entre las estaciones.
}
\only<2>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-01.pdf}
\end{center}
}
\note<2>{
Ingresamos el estado inicial a la agenda.
UCS utiliza una cola de prioridad.
El nodo de menor costo, siempre es el primero en salir.
}
\only<3>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-02.pdf}
\end{center}
}
\note<3>{
Expandimos a $B$, lo agregamos al conjunto de expandidos.
Al agregar los nodos anotamos no solo de dónde vienen, como lo hemos estado haciendo, también indicamos con un superíndice el costo acumulado de la trayectoria desde el estado inicial.
En este caso son las distancias directas de la estación inicial en metros.
}
\only<4>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-03.pdf}
\end{center}
}
\note<4>{
Al sacar de la agenda, el estado que sale es $A$, la estación más cercana.
}
\only<5>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-04.pdf}
\end{center}
}
\note<5>{
Expandimos $A$.
Se agrega $Z$, su costo es la suma del costo acumulado en $A$ que es de 387 y la distancia de $A$ a $Z$ que es de 602.
}
\only<6>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-05.pdf}
\end{center}
}
\note<6>{
El siguiente nodo en salir es $H$.
}
\only<7>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-06.pdf}
\end{center}
}
\note<7>{
Agregamos 3 sucesores $R$, $J$ y $V$.
Cada uno acumula el costo del estado $H$ con el de la transición respectiva.
}
\only<8>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-07.pdf}
\end{center}
}
\note<8>{
Ahora $S$ es el de menor costo.
}
\only<9>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-08.pdf}
\end{center}
}
\note<9>{
Expandimos $S$, agregando el estado $O$.
}
\only<10>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-09.pdf}
\end{center}
}
\note<10>{
El estado de menor costo ahora es $G$.
Lo sacamos.
}
\only<11>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-10.pdf}
\end{center}
}
\note<11>{
Al expandirlo agregamos a $L$ y a $R$.
}
\only<12>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-11.pdf}
\end{center}
}
\note<12>{
El siguiente nodo en salir es $J$.
}
\only<13>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-12.pdf}
\end{center}
}
\note<13>{
Lo expandimos.
Agregamos a $D$.
}
\only<14>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-13.pdf}
\end{center}
}
\note<14>{
Ahora $O$ es el de menor costo.
Lo sacamos.
}
\only<15>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-14.pdf}
\end{center}
}
\note<15>{
Al expandir a $O$ agregamos a $I$ y a $D$.
}
\only<16>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-15.pdf}
\end{center}
}
\note<16>{
El que está al frente ahora es $Z$.
Lo sacamos.
}
\only<17>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-16.pdf}
\end{center}
}
\note<17>{
Encontramos el estado meta $P$.
Pero no hemos terminado...
Lo agregamos a la agenda.
}
\only<18>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-17.pdf}
\end{center}
}
\note<18>{
Terminaremos cuando el estado meta este al frente
de la cola de prioridad.
Ahora al frente queda $V$.
}
\only<19>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-18.pdf}
\end{center}
}
\note<19>{
Lo exapandimos.
Pero no genera sucesores que no se hayan expandido previamente.
}
\only<20>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-19.pdf}
\end{center}
}
\note<20>{
En este paso el estado de menor costo es $L$.
Lo sacamos.
}
\only<21>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-20.pdf}
\end{center}
}
\note<21>{
Agregamos a su sucesor $T$.
}
\only<22>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-21.pdf}
\end{center}
}
\note<22>{
Al frente queda $R$.
Lo sacamos.
}
\only<23>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-22.pdf}
\end{center}
}
\note<23>{
Agregamos al estado $U$.
}
\only<24>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-23.pdf}
\end{center}
}
\note<24>{
El siguiente al frente es $R$,
lo acambamos de expandir, no se agregan estados.
}
\only<25>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-24.pdf}
\end{center}
}
\note<25>{
Es el turno de $I$.
}
\only<26>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-25.pdf}
\end{center}
}
\note<26>{
Nos encontramos nuevamente con el estado meta $P$.
Lo agregamos y continuamos...
}
\only<27>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-26.pdf}
\end{center}
}
\note<27>{
Al frente queda $D$.
Lo sacamos.
}
\only<28>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-27.pdf}
\end{center}
}
\note<28>{
Agregamos a $C$.
}
\only<29>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-28.pdf}
\end{center}
}
\note<29>{
El de menor costo es nuevamente $D$.
Se desecha.
}
\only<30>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-29.pdf}
\end{center}
}
\note<30>{
El siguiente en salir de la agenda es $P$.
Nuestra meta.
Estamos listos para recuperar la ruta óptima.
}
\only<31>{
\begin{center}
\includegraphics[scale=0.34]{UCS-ejemplo-30.pdf}
\end{center}
}
\note<31>{
La ruta encontrada por el algoritmo es:
$B$, $S$, $O$, $I$, $P$.
Con un costo total de 1575 metros.
Observamos que en la agenda la primera ruta encontrada al estado meta es de 1734 metros.
UCS nos encontró la ruta óptima en distancia.
Desde luego en una aplicación de la vida real tendríamos que incluir los costos de los transbordos para cambiar de línea del metro.
Aún en este pequeño mapa, se puede apreciar que UCS toma mucho tiempo y requiere de mucha memoria.
}
\end{frame}
\begin{frame}
\end{frame}
\end{document}
\ 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