[SER222] Recurrences (1/7): Analyzing Recursive Methods

Ruben Acuna
22 Sept 201703:32

Summary

TLDREn este video, se analiza cómo abordar métodos recursivos desde un punto de vista analítico. El presentador explica que, hasta ahora, los métodos revisados no han sido recursivos, pero destaca que muchos problemas del mundo real sí lo son, como la búsqueda binaria recursiva. Se introduce el concepto de una función de crecimiento o recurrencia, que describe el número de operaciones necesarias. Aunque el curso no exige resolver estas recurrencias para obtener una fórmula cerrada, sí se espera que los estudiantes comprendan las implicaciones de la recursividad en el análisis de algoritmos.

Takeaways

  • 😀 El video explica cómo analizar métodos recursivos de forma analítica.
  • 🤖 Hasta ahora, se han evitado los métodos recursivos por simplicidad.
  • 🔁 La recursividad implica que una función se llama a sí misma, lo que complica su análisis.
  • 🔍 Un ejemplo común es la búsqueda binaria, que puede implementarse de manera recursiva.
  • 🧮 Para la búsqueda binaria, el crecimiento se puede representar como f(n) = f(n/2) + 1.
  • 📈 El crecimiento de funciones recursivas se llama recurrencia, porque f(n) aparece en ambos lados de la ecuación.
  • 🤯 Resolver una recurrencia para obtener una fórmula de crecimiento cerrada es complejo.
  • 📚 En la clase SER222, no se espera que los estudiantes resuelvan fórmulas cerradas para funciones recursivas.
  • 📝 Se espera que los estudiantes puedan analizar una función recursiva y entender su impacto en el análisis del algoritmo.
  • 🚀 El video introduce el proceso de análisis paso a paso con un ejemplo de algoritmo recursivo.

Q & A

  • ¿Qué distingue a los métodos recursivos de los no recursivos en términos de análisis?

    -Los métodos recursivos se distinguen porque se llaman a sí mismos, lo que añade complejidad en su análisis. En cambio, los métodos no recursivos simplemente contienen todas las líneas de código en un solo bloque, sin llamarse a sí mismos.

  • ¿Por qué el análisis de métodos recursivos es más difícil que el de métodos no recursivos?

    -El análisis de métodos recursivos es más difícil porque la función se refiere a sí misma, lo que lleva a ecuaciones recursivas. Estas ecuaciones pueden ser complicadas de resolver y entender, ya que involucran múltiples llamadas a la misma función con diferentes parámetros.

  • ¿Qué es una función de crecimiento en el contexto de la recursividad?

    -Una función de crecimiento describe cuántas operaciones realiza un algoritmo a medida que cambia el tamaño de la entrada. Para algoritmos recursivos, la función de crecimiento puede estar expresada como una recurrencia, que se refiere a la función original en ambos lados de la ecuación.

  • ¿Cómo se podría escribir la función de crecimiento para una búsqueda binaria recursiva?

    -La función de crecimiento para la búsqueda binaria recursiva podría escribirse como f(n) = f(n/2) + 1, donde f(n) representa el número de comparaciones que se hacen al dividir la entrada en mitades y realizar una comparación adicional.

  • ¿Qué se entiende por una 'recurrencia' en el análisis de algoritmos recursivos?

    -Una recurrencia es una ecuación que define una función en términos de sí misma. En el caso de algoritmos recursivos, una recurrencia indica cómo el tamaño de la entrada afecta al número de operaciones necesarias para completar el algoritmo.

  • ¿Por qué es importante obtener una solución en forma cerrada para una recurrencia?

    -Obtener una solución en forma cerrada para una recurrencia es importante porque proporciona una fórmula directa para calcular el número de operaciones necesarias, sin tener que recurrir a resolver la recurrencia repetidamente. Esto facilita el análisis del algoritmo.

  • ¿Qué expectativas tiene el curso SER222 con respecto al análisis de funciones recursivas?

    -En el curso SER222, se espera que los estudiantes comprendan las implicaciones de las funciones recursivas en el análisis de algoritmos y puedan escribir funciones de crecimiento. Sin embargo, no se espera que los estudiantes deduzcan o resuelvan formalmente las recurrencias para obtener una solución en forma cerrada.

  • ¿Qué tipo de análisis no se les pedirá a los estudiantes realizar en este curso?

    -No se les pedirá a los estudiantes que resuelvan recurrencias o que encuentren la solución en forma cerrada para funciones recursivas, ya que esto se considera más complejo de lo que cubre el curso.

  • ¿Cuál es el propósito de introducir ejemplos paso a paso para analizar algoritmos recursivos?

    -El propósito de introducir ejemplos paso a paso es facilitar la comprensión del análisis de algoritmos recursivos, permitiendo que los estudiantes sigan el proceso y vean cómo se desarrollan las funciones de crecimiento sin necesidad de resolverlas formalmente.

  • ¿Qué enfoque sigue el curso SER222 para el análisis de funciones recursivas?

    -El curso SER222 se enfoca en que los estudiantes entiendan el impacto de la recursividad en el análisis de algoritmos y sean capaces de interpretar funciones de crecimiento, sin profundizar en la resolución matemática detallada de las recurrencias.

Outlines

00:00

🧑‍💻 Introducción a los métodos recursivos

El orador introduce el concepto de métodos recursivos y menciona que hasta ahora se han evitado estos métodos para simplificar el proceso de aprendizaje. Sin embargo, en el mundo real, hay funciones recursivas y es necesario aprender a analizarlas, ya que pueden ser difíciles de comprender debido a su naturaleza repetitiva.

🔄 Ejemplo del uso de la recursividad: búsqueda binaria

Se menciona la búsqueda binaria como un ejemplo de función recursiva. A diferencia de la versión iterativa, la versión recursiva divide el dominio en mitades sucesivas, haciendo llamadas recursivas para continuar la búsqueda. Este tipo de funciones son comunes en la programación.

📈 La función de crecimiento en búsqueda binaria

Se presenta una posible función de crecimiento para la búsqueda binaria, f(n) = f(n/2) + 1, donde el trabajo requerido en cada paso implica hacer una comparación y decidir si continuar la búsqueda a la izquierda o derecha. Esta función refleja la naturaleza recursiva del proceso.

📚 Introducción a las recurrencias

Se introduce el concepto de recurrencia, donde la función de crecimiento para un método recursivo se refiere a sí misma, lo que la hace diferente de las funciones no recursivas. Aunque escribir estas funciones no es tan complicado, resolverlas puede ser un desafío, ya que requieren obtener una forma cerrada, lo cual está fuera del alcance de la clase.

🎯 Expectativas del curso sobre métodos recursivos

El orador establece las expectativas del curso SER222: los estudiantes deben ser capaces de entender el impacto de una función recursiva en el análisis algorítmico y escribir una función de crecimiento. Sin embargo, no se espera que deduzcan o resuelvan una fórmula de forma cerrada para estas funciones debido a la complejidad matemática involucrada.

🔎 Próximos pasos: ejemplo práctico

Para ilustrar el análisis de un algoritmo recursivo, el orador indica que se procederá con un ejemplo paso a paso que resolverá un problema específico. Esto permitirá aplicar los conceptos discutidos de manera práctica y comprensible.

Mindmap

Keywords

💡Métodos recursivos

Los métodos recursivos son aquellos que se llaman a sí mismos durante su ejecución. En el video, el presentador destaca que estos métodos pueden ser más complejos de entender y analizar en comparación con los métodos iterativos. Un ejemplo mencionado es la búsqueda binaria recursiva.

💡Búsqueda binaria

La búsqueda binaria es un algoritmo eficiente para encontrar un elemento en una lista ordenada dividiendo repetidamente el espacio de búsqueda en mitades. En el video, se hace referencia a su versión recursiva, donde en cada llamada se reduce el tamaño de la entrada a la mitad.

💡Función de crecimiento

La función de crecimiento mide el número de operaciones que un algoritmo realiza en función del tamaño de la entrada. El presentador menciona que es posible escribir una función de crecimiento para representar el número de comparaciones que realiza un algoritmo como la búsqueda binaria.

💡Recurrencia

Una recurrencia es una ecuación que define una función en términos de sí misma. En el contexto de métodos recursivos, el presentador explica que la recurrencia describe el comportamiento de la función de crecimiento de un algoritmo recursivo, como f(n) = f(n/2) + 1 para la búsqueda binaria.

💡Fórmula de bucle cerrado

Una fórmula de bucle cerrado es la solución final de una recurrencia, donde se expresa el comportamiento del algoritmo sin referencias a sí mismo. El presentador menciona que obtener esta fórmula es un proceso complicado que está fuera del alcance de la clase, pero es importante entender su existencia.

💡SER222

SER222 es el curso al que hace referencia el presentador, probablemente un curso de análisis de algoritmos o estructuras de datos. En este curso, los estudiantes aprenden a analizar métodos recursivos y sus implicaciones sin necesariamente resolver recurrencias complejas.

💡Análisis de algoritmos

El análisis de algoritmos implica evaluar la eficiencia de un algoritmo en términos de tiempo y espacio. El presentador menciona que el propósito de la clase es que los estudiantes puedan analizar las implicaciones de los métodos recursivos y escribir funciones de crecimiento.

💡Comparaciones

Las comparaciones se refieren a las operaciones que realiza un algoritmo para verificar si un elemento coincide con el que se está buscando. En la búsqueda binaria recursiva, se realiza una comparación en cada llamada recursiva para determinar si el elemento está en la mitad izquierda o derecha.

💡Solución iterativa

La solución iterativa es una forma de resolver problemas utilizando bucles en lugar de llamadas recursivas. El presentador contrasta la solución iterativa de la búsqueda binaria, que usa un bucle, con su contraparte recursiva, que divide el problema en subproblemas más pequeños.

💡Implicaciones matemáticas

El presentador menciona las implicaciones matemáticas de resolver y analizar métodos recursivos, como la deducción de funciones de crecimiento y la resolución de recurrencias. Aunque estos conceptos son complejos, es importante que los estudiantes comprendan su relevancia en el análisis de algoritmos.

Highlights

Introduction to analyzing recursive methods.

Previous methods have avoided recursion for simplicity.

Recursive methods involve calling the function within itself.

Real-world functions often require recursion, and understanding how to analyze them is essential.

Recursive functions can become difficult to understand and analyze.

Binary search is presented as an example of a recursive function.

In binary search, the input domain is divided in half recursively.

A recurrence relation for binary search might be written as f(n) = f(n/2) + 1.

The recurrence represents the number of operations required for binary search.

Analyzing recursive methods requires understanding their growth function, also known as the recurrence.

Recurrence functions are different from non-recursive growth functions because they refer to themselves.

Solving recurrence relations can be complex, as it requires finding a closed-form solution.

For the course (SER222), students are not expected to solve recurrence relations but should understand their implications.

Students should be able to write a growth function for recursive functions, but not necessarily derive the closed-form solution.

An example algorithm solving a problem will be analyzed step-by-step in future discussions.

Transcripts

play00:04

- In this video, I wanna discuss how we can analyze,

play00:08

analytically, recursive methods.

play00:10

So up until now, all the methods we've seen have,

play00:12

conveniently enough, not been recursive.

play00:14

So basically, all the code there is just

play00:16

in that one, you know, code block,

play00:19

right all the lines are there.

play00:20

I'm not really calling any functions at all, right?

play00:22

I'm not calling any functions at all.

play00:24

I'm also not calling myself.

play00:25

I'm calling myself, right, what makes it recursive

play00:27

is really where we get an issue.

play00:29

We've kind of just been avoiding this

play00:30

for the sake of simplicity.

play00:32

Now, of course, we're going to have, you know,

play00:33

plenty of real world functions that are recursive

play00:35

we're going to need a way to analyze them.

play00:37

The issue is that they can become

play00:39

very, very, very, very difficult to understand.

play00:42

So given a function, right, we can say,

play00:44

maybe we have something for example, binary search, right.

play00:46

We've seen binary search in terms of kind of

play00:47

the iterative solution that uses a loop.

play00:49

There's also another version of it that's recursive.

play00:51

Basically, every time you divide your domain in half,

play00:53

right, and you go looking for something,

play00:55

you make another recursive call.

play00:57

Those functions are pretty common, right?

play00:59

They are recursive.

play01:00

Well for a function like that,

play01:01

one thing we can hope to do,

play01:02

is maybe write a growth function that could at least

play01:04

represent how many operations it'll take.

play01:07

In general these things are called, the recurrence.

play01:09

Because you'll have your f of n basically on both sides.

play01:12

So, just, I'll suppose for a second,

play01:14

I don't know if this is one percent right,

play01:16

but let's say for binary search recurrence

play01:17

may look something like this.

play01:19

f of n equal f of n over two plus one, right?

play01:28

So if I'm running binary search

play01:30

on a particular input of size n,

play01:34

the amount of work it needs to do, right,

play01:35

the number of operations,

play01:36

number of comparisons that it needs to do

play01:38

is the number of comparisons to do binary search

play01:40

on one half, right, 'cause you know how the mechanisms,

play01:42

the outcomes are going to look on one half plus one,

play01:45

all right, because you need basically compare

play01:46

that current element and decide do I go,

play01:48

is it what I want or do I go left or do I go right?

play01:51

So, the growth function for something like binary search.

play01:56

Binary search, just say binary s, okay?

play02:02

Is f of n equal f of n divided by two plus one.

play02:06

We'll suppose that.

play02:07

I think I might be off on one or two, but that's okay.

play02:10

Point is, this is a little bit different

play02:12

than what we've seen before

play02:12

because our growth function that we would write

play02:15

for recursive methods is actually now referring to itself,

play02:18

right, it's a recurrence, so we have f of n on both sides.

play02:22

So it's not always that bad to write them,

play02:25

but what is bad is to solve them

play02:26

because this by itself is kind of,

play02:28

it's a recursive mathematical formula.

play02:31

All we really want is a closed loop solution, right?

play02:34

Or a closed loop form of it

play02:36

and that takes some work to get.

play02:37

We'll talk about that a little bit,

play02:39

really though, it's something that's out of the scope

play02:40

of this class.

play02:43

So, I guess, just to expound on that,

play02:45

for this class, for SER222,

play02:46

my expectation is that you can look at a recursive function

play02:49

and kind of understand what are the implications

play02:51

on algorithm analysis.

play02:52

Maybe we'll write a growth function

play02:54

for the recursive function,

play02:55

but what I'm not expecting you to do

play02:56

is to be able to actually, you know,

play03:00

go through the process of deducing the growth function

play03:02

for it and then getting the closed loop for it.

play03:04

So you should be able to answer questions about it.

play03:06

You should be able to understand it,

play03:07

but don't expect to actually be asked to do something,

play03:10

don't expect to actually be asked to find

play03:13

a closed loop formula solution, right?

play03:16

It's a little bit more complicated than what we're doing

play03:19

in this class, in terms of the math work.

play03:21

So what we're going to do, to introduce this whole thing

play03:25

is we're going to actually go step-by-step

play03:26

through an example of analyzing an algorithm

play03:28

that solves a (unintelligible) problem.

Rate This

5.0 / 5 (0 votes)

Etiquetas Relacionadas
algoritmosmétodos recursivosanálisis de códigobúsqueda binariafunción de crecimientorecurrenciamatemáticascomplejidadSER222soluciones iterativas