recursion casi fin

This commit is contained in:
Vladimir Lemus 2024-02-15 11:01:20 -06:00
parent daee14f119
commit d0381581e9
5 changed files with 89 additions and 31 deletions

Binary file not shown.

View File

@ -23,7 +23,7 @@
\title{Inducción y recursión}
\begin{document}
\maketitle
\section*{Preliminares}
\section{Preliminares}
Antes de empezar con el tema, que seguro es nuevo o al menos tiene aspectos nuevos para todos ustedes, debemos de partir de un suelo en común, las bases. Algunas no las cubriremos pues confiamos en que sus profesores de semestres pasados las dejaron muy claras, pero si no pueden acercarse, mandar un correo y podemos apoyarles en la medida de lo posible.
@ -31,7 +31,7 @@ Hay dos conceptos que seguro ya vieron, pero que nos interesa regresar a ellos p
En primer lugar hay algunas funciones que se definen de esta forma y que en esta materia tendrán importancia, tanto de forma inductiva como recursiva. Pero además durante el resto de la carrera necesitarán de estos conceptos y seguramente durante su desempeño profesional les serán útiles, ya más adelante les comentaré al respecto.
\subsection*{Relaciones}
\subsection{Relaciones}
Empecemos con las ideas básicas:
@ -140,7 +140,7 @@ Siendo más quisquillosos podemos hablar de los enteros positivos, que estarán
Si hablamos de secuencias y el conjunto índice son los naturales, la secuencia $(A_i)_{i\in I}$ es una secuencia contable, en el caso de que $I$ sea $[n]$ para algún $n\in \mathbb{N}$ entonces es una secuencia finita.
\section{Relaciones de equivalencia}
\subsection{Relaciones de equivalencia}
\begin{defi}
\begin{itemize}
@ -185,7 +185,7 @@ Vamos a un ejercicio:
\emph{De derecha a izquierda}: Es similar, por definiciones.
\section*{Órdenes parciales y totales}
\subsection{Órdenes parciales y totales}
Nos vamos acercando poco a poco a lo que es el tema de esta sección, pero requerimos tener claras las definiciones. Van unas pocas más.
\begin{defi}
@ -330,33 +330,6 @@ Entonces aplicamos la inducción:
\item \textbf{Paso inductivo:} Probemos que se cumple para $n+1$. Para este caso por definición $f(n+1)=(n+1)n!$, como supusimos que $n!$ está valuado por consiguiente $(n+1)n!$ está valuado también, es solo una multiplicación de naturales que da un natural $\square$.
\end{itemize}
\begin{figure}
\begin{center}
\begin{tikzpicture}
[
%level 1/.style = {sibling distance = 2.0cm, level distance = 0.8cm}
level 2/.style = {sibling distance = 0.5cm, level distance = 0.8cm}
]
\node {S}
child {node {A}
child {node {$a_1$}}
child {node {$a_2$}}
child {node {$a_3$}}}
child {node {B}
child {node {$b_1$}}
child {node {$b_2$}}
child {node {$b_3$}}}
child {node {C}
child {node {$c_1$}}
child {node {$c_2$}}
child {node {$c_3$}}};
\end{tikzpicture}
\caption{Árbol ternario.}
\label{fig:tree1}
\end{center}
\end{figure}
\subsection{Orden lexicográfico}
\begin{defi}
@ -434,6 +407,8 @@ Seré telegráfico en esta sección, pues seguro estas definiciones ya las viero
\section{Árboles}
Los árboles son una estructura útil para acomodar conjuntos de datos, relacionarlos y agilizar la búsqueda.
\subsection{Dominio de árboles}
\begin{defi}
@ -451,11 +426,94 @@ Un ejemplo es el dominio de árbol $\{\epsilon, 1,2,11,21,22,221,222,2211\}$.
Dado un conjunto $\Sigma$ de etiquetas, un $\Sigma-$árbol (o simplemente árbol) es una función total $t:D\rightarrow \Sigma$ donde $D$ es un dominio de árbol.
\end{defi}
Noten que el dominio del árbol muestra que es un conjunto de cadenas ordenadas, el árbol tal cual es este mismo arreglo ordenado pero con cualquier etiqueta en sus elementos. El orden de cierta forma está implícito aunque puede tener cualquier etiqueta. El dominio se denota como $dom(t)$, cada cadena $u\in dom(t)$ es llamada un nodo.
\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.5\linewidth]{tree.jpg}
\caption{Imagen de \href{https://xkcd.com/835}{xkcd} con licencia CC-BY-NC.}
\label{fig:noether}
\end{center}
\end{figure}
\begin{defi}
El rango o ramificación $d(u)$ del nodo $u$ es la cardinalidad del conjunto $\{i| ui\in dom(t)\}$.
\end{defi}
\begin{itemize}
\item Un árbol de rango $0$ es una \emph{hoja}.
\item El nodo con dirección $\epsilon$ es la \emph{raíz} del árbol.
\item Un árbol $t$ es finito si su dominio $dom(t)$ es finito.
\item Dado un nodo $u$ en $dom(t)$, todo nodo de la forma $ui$ en $dom(t)$ con $i\in\mathbb{N}_+$ es un hijo de $u$.
\end{itemize}
\textbf{Ejercicio:} Sea $T$ un árbol binario con altura $h$ y $n$ nodos. Entonces $n\leq 2^{h+1}-1$.
\textbf{Respuesta:} Hacemos inducción sobre $h$, la altura del árbol.
\textbf{Caso base:} El caso base es cuando $h=0$, en ese caso hay un nodo, es decir $n=1$, y dado que $h=0$ entonces $2^{h+1}-1=2^1-1=1$, $n=1\leq h=1$, de manera estricta $1=1$, lo cumple.
\textbf{Paso inductivo:} Suponemos que se cumple para toda $h>0$, debemos demostrar que se cumple para $h+1$. Debemos verlo por casos
\begin{itemize}
\item \emph{Caso 1:} $T$ consiste de una raíz más un subárbol $X$. $x$ tiene una altura $h-1$ (es el árbol sin la raíz). De tal forma que $h$ máximo $2^h-1$ nodos, así que $T$ contiene máximo $2^h$ nodos, que es menor que $2^{h+1}-1$ ya que $2^{h+1}-1=2*2^h-1$ que sin importar cuanto vale $h$ cumple $2^h\leq 2^{h+1}-1$.
\item \emph{Caso 2:} $T$ consiste de una raíz y dos subárboles $X$ y $Y$, los cuales tienen alturas $p$ y $q$ respectivamente, tales que $p,q< h$. Por el paso inductivo sabemos que $X$ y $Y$ cumplen la relación, es decir que $X$ tiene a lo más $2^{p+1}-1$ nodos y $Y$ a lo más $2^{q+1}-1$ nodos. Pero como $p,q< h$ entonces ambos árboles tienen una cantidad de nodos tales que $\leq 2^h-1$. El número total de nodos es la suma de los nodos de $X$ y $Y$ más la raíz, es decir que el número total de nodos es $\leq 1+ (2^p-1)+(2^q-1)\leq 1+2(2^h-1) = 1-2^{h+1}-2=2^{h+1}-1$. Así que el número total de nodos de $T$ es $\leq 2^{h+1}-1.\square$
\end{itemize}
\begin{figure}
\begin{center}
\begin{tikzpicture}
[
%level 1/.style = {sibling distance = 2.0cm, level distance = 0.8cm}
level 2/.style = {sibling distance = 0.5cm, level distance = 0.8cm}
]
\node {S}
child {node {A}
child {node {$a_1$}}
child {node {$a_2$}}
child {node {$a_3$}}}
child {node {B}
child {node {$b_1$}}
child {node {$b_2$}}
child {node {$b_3$}}}
child {node {C}
child {node {$c_1$}}
child {node {$c_2$}}
child {node {$c_3$}}};
\end{tikzpicture}
\caption{Árbol ternario.}
\label{fig:tree1}
\end{center}
\end{figure}
\subsection{Inducción estructural sobre árboles}
Cuando se puede establecer un orden entre nodos, por ejemplo si el árbol se llena con números naturales, y el padre siempre tiene un valor mayor que los hijos, se dice que el árbol tiene una propiedad de pila (\emph{heap}). Para verlo concentremos nuestra atención en un árbol binario.
\textbf{Proposición:} Si un árbol binario tiene la propiedad de pila entonces el valor en su raíz es cuando menos tan grande como cualquier valor en los nodos del árbol.
Sea $v(a)$ el valor en uno de los nodos del árbol, para demostrarlo se usa la estructura recursiva de un árbol.
\textbf{Caso base:} Si el árbol contiene uyn sólo nodo, la raíz, es claro que se cumple.
\textbf{Paso inductivo:} Suponemos es cierto para los árboles $X$ y $Y$, con ello probamos que es cierto para el árbol $T$ que consiste en un nodo raís y los subárboles $X$ y $Y$. Sea $r$ la raíz de $T$ y $p$ y $q$ los hijos de esta raíz, es decir, la raíz de los árboles $X$ y $Y$ respectivamente. Como suponemos que $T$ tiene la propiedad de pila entonces se cumple $v(r)\geq v(p)$ y $v(r)\geq v(q)$.
Ahora sea $x$ cualquier nodo del árbol $T$, probamos que $v(r)\geq v(x)$ por casos:
\begin{itemize}
\item $x=r$ es el caso obvio.
\item $x$ es un nodo en el subárbol $X$, por la hipótesis inductiva $v(p)\geq v(x)$ y como sabemos que $v(r)\geq v(p)$ entonces se cumple $v(r)\geq v(x)$.
\item $x$ es un nodo en el subárbol $Y$, por la hipótesis inductiva $v(q)\geq v(x)$ y como sabemos que $v(r)\geq v(q)$ entonces se cumple $v(r)\geq v(x).\square$
\end{itemize}
\section{Definiciones inductivas}
\begin{thebibliography}{10}
\bibitem{Gallier2003} Gallier, Jean. ``Logic for computer science. Foundations of automatic theorem proving'' University of Pensylvania (2003) \url{https://www.researchgate.net/publication/31634432_Logic_for_computer_science_foundations_of_automatic_theorem_proving_JH_Gallier}
\bibitem{Lemus} Lemus, Vladimir. ``Notas para el curso de programación funcional para la física computacional'', \url{https://git.disroot.org/vladomiro/notas-tsfc}.
\bibitem{Pagina} \url{https://courses.engr.illinois.edu/cs173/fa2010/Lectures/trees.pdf} Consultada el 14 de febrero de 2024.
\end{thebibliography}

BIN
tree.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
tree.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
trees.pdf Normal file

Binary file not shown.