[SER222] Recurrences (4/7): Guessing a Growth Function

Ruben Acuna
22 Sept 201705:55

Summary

TLDREn este video, se analiza cómo formular una función de crecimiento para el algoritmo de la Torre de Hanói. El presentador comienza explicando cómo f(n) representa el número de movimientos requeridos para resolver el problema con n discos, destacando que f(1) es igual a 1. Luego, explora la recurrencia f(n) = 2f(n-1) + 1, explicando el comportamiento recursivo del algoritmo. Se sugiere una solución cerrada aproximada, f(n) = 2^n - 1, y se introduce el concepto de usar la inducción matemática para probar que esta conjetura es correcta en el siguiente video.

Takeaways

  • 🔍 El video trata de descubrir la función de crecimiento del algoritmo de pseudocódigo del Torre de Hanoi.
  • 📐 La función f(n) representa el número de movimientos necesarios para resolver el problema del Torre de Hanoi con n discos.
  • 👉 f(1) se define como 1, ya que mover un disco de un lado a otro requiere un solo movimiento.
  • 🔄 La función f(n) para n > 1 se describe como f(n) = 2 * f(n-1) + 1, basada en los pasos recursivos del algoritmo.
  • 💡 Se sugiere que f(n) podría ser una función cerrada que resulte en un número de movimientos que se asemeje a una potencia de dos.
  • 📊 Se utiliza una tabla en Excel para calcular valores de f(n) y buscar patrones que ayuden a formular una función cerrada.
  • 🤔 Se plantea la posibilidad de que f(n) = 2^n - 1, basándose en los patrones observados en los cálculos manuales.
  • 🔄 El algoritmo es de tiempo exponencial, ya que cada llamada recursiva duplica la cantidad de trabajo.
  • 🧮 Se menciona que la función propuesta f(n) = 2^n - 1 es solo una suposición y requiere prueba matemática para verificar su corrección.
  • 📘 Se anuncia que en el próximo video se probará matemáticamente que f(n) = 2^n - 1 y f(n) = 2 * f(n-1) + 1 son equivalentes utilizando la inducción matemática.

Q & A

  • ¿Qué es la función de crecimiento que se busca analizar en el video?

    -La función de crecimiento que se busca analizar es f(n), donde n es el número de discos en el problema de la Torre de Hanoi, y f(n) representa el número de movimientos necesarios para resolverlo.

  • ¿Cuál es el valor de f(1) y por qué?

    -El valor de f(1) es 1, ya que con un solo disco, el algoritmo de la Torre de Hanoi requiere solo un movimiento para completarse.

  • ¿Cómo se puede expresar f(n) en el caso general?

    -El caso general de f(n) se expresa como f(n) = 2 * f(n - 1) + 1, lo que indica que se deben hacer dos movimientos recursivos para un subconjunto de discos, más un movimiento adicional.

  • ¿Qué representa el término '2 * f(n - 1)' en la fórmula recursiva?

    -El término '2 * f(n - 1)' representa dos movimientos necesarios para mover las torres de tamaño n-1 dos veces, una para mover la torre al destino intermedio y otra para moverla al destino final.

  • ¿Qué se busca lograr con una función en forma cerrada para f(n)?

    -Se busca una función en forma cerrada para f(n) que permita calcular directamente el número de movimientos sin recurrencia, simplificando así el cálculo y obteniendo una solución más eficiente.

  • ¿Cómo se identifica un patrón en los valores calculados de f(n)?

    -El patrón en los valores calculados de f(n) muestra que parecen seguir una secuencia de potencias de dos, lo que sugiere una función exponencial debido al hecho de que el algoritmo realiza el doble de trabajo en cada llamada recursiva.

  • ¿Cuál es la propuesta inicial para la forma cerrada de f(n)?

    -La propuesta inicial para la forma cerrada de f(n) es f(n) = 2^n - 1, basada en el patrón observado en los cálculos.

  • ¿Por qué no es suficiente con adivinar la función cerrada?

    -No es suficiente con adivinar la función cerrada porque, aunque la propuesta parece correcta para valores pequeños de n, no hay garantía de que sea precisa para valores más grandes, y se necesita una prueba formal para confirmarlo.

  • ¿Qué método se sugiere para probar la corrección de la función propuesta?

    -Se sugiere usar inducción matemática para probar que la función propuesta f(n) = 2^n - 1 es correcta y coincide con la fórmula recursiva original.

  • ¿Por qué se dice que el algoritmo de la Torre de Hanoi es de tiempo exponencial?

    -Se dice que el algoritmo es de tiempo exponencial porque el número de movimientos necesarios crece de forma exponencial a medida que aumenta el número de discos, ya que en cada paso se duplican los movimientos requeridos.

Outlines

00:00

🤔 Introducción al problema de la función de crecimiento en Tower of Hanoi

En este video, se analiza la función de crecimiento del algoritmo de pseudocódigo de Tower of Hanoi previamente presentado. Se busca definir una función f(n) donde 'n' es el número de discos, y f(n) es el número de movimientos necesarios. Se parte del caso base f(1) = 1, ya que para un solo disco, se realiza un único movimiento. Luego, se plantea el desafío de encontrar una expresión para f(n) en el caso general, que incluye pasos recursivos. El orador sugiere que la función para f(n) es 2*f(n-1) + 1, ya que implica mover torres de tamaño n-1 en cada paso.

05:04

🔢 De una solución recursiva a una posible función cerrada

Aunque la fórmula recursiva es correcta, no es ideal ya que implica una solución abierta. Para simplificar, se intenta obtener una función cerrada que evite la recurrencia, lo cual no siempre es posible. El orador propone calcular algunos valores de f(n) utilizando herramientas como Excel. A partir de los resultados, se observa un patrón que sugiere que f(n) podría estar relacionado con potencias de dos debido a las llamadas recursivas dobles del algoritmo, lo que lleva a la conjetura de que f(n) podría ser 2^n - 1.

📊 Verificación de la conjetura mediante inducción

Aunque se ha conjeturado que f(n) = 2^n - 1, esto solo es una hipótesis basada en un patrón observado para valores pequeños de n. El orador enfatiza la necesidad de verificar que esta fórmula es correcta para cualquier valor de n. Para hacerlo, se utilizará una prueba por inducción en el siguiente video, donde se demostrará que la conjetura coincide con la fórmula recursiva planteada. Esto requerirá un análisis matemático más técnico y detallado.

Mindmap

Keywords

💡Función de crecimiento

Una función de crecimiento describe cómo aumenta la cantidad de recursos o tiempo necesarios para resolver un problema a medida que aumenta el tamaño del mismo. En el video, la función de crecimiento busca calcular el número de movimientos necesarios para resolver el problema de la Torre de Hanoi, en función del número de discos.

💡Torre de Hanoi

La Torre de Hanoi es un famoso problema matemático y de algoritmos, donde el objetivo es mover una torre de discos de una varilla a otra, siguiendo reglas específicas. En el video, el pseudocódigo del algoritmo de la Torre de Hanoi se usa como ejemplo para explorar la función de crecimiento de un problema recursivo.

💡F de n (f(n))

f(n) es una función matemática que representa el número de movimientos necesarios para resolver la Torre de Hanoi con 'n' discos. La función f(1) es igual a 1, ya que mover un solo disco requiere un solo movimiento. Para valores mayores de n, la función incluye un enfoque recursivo, y el video explora cómo se puede definir f(n) de manera más general.

💡Recursión

La recursión es una técnica de programación en la que una función se llama a sí misma para resolver subproblemas más pequeños. En este caso, la función f(n) depende de la solución de f(n-1), lo que genera una recurrencia en la resolución del problema de la Torre de Hanoi.

💡Función cerrada

Una función cerrada es una expresión matemática que permite calcular el resultado de manera directa, sin recurrencia. En el video, se busca transformar la definición recursiva de f(n) en una función cerrada que facilite el cálculo del número de movimientos sin necesidad de computar todas las llamadas recursivas.

💡Algoritmo exponencial

Un algoritmo exponencial es aquel cuyo tiempo de ejecución crece de manera exponencial con respecto al tamaño del problema. En el video, el algoritmo de la Torre de Hanoi se clasifica como exponencial, ya que el número de movimientos se duplica con cada incremento en el número de discos.

💡Propuesta (Conjetura)

Una propuesta o conjetura en matemáticas es una suposición que se basa en observaciones y que aún no se ha demostrado formalmente. En el video, se hace una conjetura sobre la forma de la función f(n), sugiriendo que podría ser 2^n - 1, basada en la observación de patrones en los resultados.

💡Inducción matemática

La inducción matemática es una técnica utilizada para probar que una afirmación es verdadera para todos los números naturales. En el video, se menciona que se usará la inducción para demostrar que la conjetura de f(n) = 2^n - 1 es correcta para todos los valores de n.

💡Evaluación de funciones

La evaluación de funciones consiste en calcular el valor de una función para un número específico de entradas. En el video, se usan herramientas como Excel para calcular manualmente los valores de f(n) y compararlos con los resultados obtenidos por el algoritmo recursivo, a fin de verificar patrones.

💡Patrón de potencias de dos

El patrón de potencias de dos se refiere a la observación de que los valores de f(n) parecen seguir la forma 2^n. Esto ocurre porque el algoritmo de la Torre de Hanoi duplica el trabajo en cada nivel de recursión, lo que genera un crecimiento exponencial, similar a una potencia de dos.

Highlights

The goal is to find a growth function for the Tower of Hanoi pseudocode algorithm.

f(n) represents the number of moves required for n disks.

For n = 1, the number of moves is 1, since only one move is needed.

The recursive case is expressed as f(n) = 2 * f(n-1) + 1.

The recursive process involves moving a smaller tower of size n-1 twice.

The algorithm calculates the total moves recursively, making it difficult to solve directly.

A closed-form function for f(n) is desired to avoid the complexity of recursive calculations.

The speaker suggests calculating values for f(n) manually, possibly using Excel.

A pattern emerges where f(n) resembles powers of two, indicating exponential growth.

The speaker hypothesizes that f(n) could be approximated by 2^n - 1.

The recursive structure of the algorithm results in exponential time complexity.

The guess for the closed-form function f(n) = 2^n - 1 needs verification through mathematical proof.

The next step involves using mathematical induction to verify that the proposed function is correct.

The speaker acknowledges that a guess is insufficient without rigorous proof, especially for large n.

The video concludes by promising a deeper dive into proving the function through induction in the next segment.

Transcripts

play00:04

- In this video, we're gonna try

play00:05

and figure out what exactly would be a growth function,

play00:07

for the Tower of Hanoi pseudocode algorithm

play00:09

that we gave before.

play00:11

So that same code is on the right-hand side.

play00:12

Let's try analyzing it.

play00:14

So what we want to write, is an f of n function

play00:15

where n is the number of disks,

play00:18

right, that's our problem size,

play00:19

and the result of it, right,

play00:20

f of n itself, is the number

play00:22

of moves that are required to get there.

play00:25

So think about this for yourself for a second.

play00:27

What would f of one be?

play00:29

What might that be said equal to?

play00:32

So think about that.

play00:34

So that's actually going to be said equal to

play00:38

one, and then where that comes from

play00:40

is we see, f of one corresponds

play00:43

to this over here, right?

play00:44

N is equal to one, the algorithm says do this.

play00:47

Do this happens to be, make one move.

play00:49

So that one move that's made,

play00:50

that is what should be used for the f of one function.

play00:54

So f of one equal one.

play00:55

When the tower is one high, I make one move.

play00:58

All right, that's the easy one,

play00:59

what about the harder one?

play01:00

How could f of n be written?

play01:02

Think about that for one second.

play01:04

All right, this is the more general case,

play01:05

this is the case that involves the recursive steps.

play01:09

(deep breathe)

play01:15

So that will be a little more tricky.

play01:16

That will be, f of n equal

play01:20

two

play01:23

f of n

play01:24

(computer mouse clicking)

play01:28

minus one

play01:30

plus one.

play01:32

So these lines of code here, right.

play01:34

I have three lines of code.

play01:35

On the first line of code, right

play01:36

is moving a size n minus one tower.

play01:38

So that would cost me f of n minus one.

play01:41

But then I move a second tower also

play01:43

of size n minus one that will also cost me

play01:46

f of n minus one size.

play01:49

F of n minus one moves.

play01:52

So there that's what gets me this term

play01:54

in front over here, the two of n minus one.

play01:58

Gets over here, looks like I forgotten my one,

play01:59

so let me add that in there,

play02:00

and then the plus one comes from

play02:02

the fact that I had one move that has to happen here,

play02:05

so that ends up getting me that plus one there at the end.

play02:12

Okay, so that's what we have.

play02:13

F of one equal one, f of n equal 2,

play02:16

f of n minus one plus one.

play02:17

So that's what we have, and it's great

play02:20

because it gives us the right answer,

play02:21

but it's not great because it's a open solution.

play02:24

I still have this recurrence there where every time

play02:27

I want to valuate, you know, a lesser value.

play02:32

So it makes it hard, basically to--

play02:33

it make it's difficult for me to use this function.

play02:35

So what I would like to do is try

play02:36

and guess from that a closed-loop function, right,

play02:39

or a closed form function for it.

play02:42

Although just do this purely by guessing.

play02:45

Which is something that will work,

play02:47

if we're very, very lucky,

play02:48

which isn't very common.

play02:49

So, we'll just be happy though for this

play02:52

for this example we can be happy right,

play02:54

that we can do it this way.

play02:55

It won't always be the case.

play02:57

So what we could do, is we could calculate

play02:59

out by hand some values for f of n.

play03:02

And so, by hand I don't really mean

play03:04

on a piece of paper but throw it in Excel, right?

play03:06

Always, if you have tools for something,

play03:07

use the tools, make your life easier,

play03:09

don't make your life harder.

play03:12

So over here we have a column here.

play03:15

On the first column I have a table.

play03:18

The first column I have is basically n, right, problem size.

play03:20

The next thing I have is actually the evaluation of

play03:27

our function that we figured out earlier,

play03:30

our f of n equal two f of n minus one plus one.

play03:33

I have the valuation of that.

play03:35

Right so I can kind of put these side by side.

play03:37

So ideally what I would have is I have

play03:38

a very simple function that would take in n

play03:40

and then would produce the values in the right hand side.

play03:42

So if with something that takes in 10

play03:43

and then returns 1,023.

play03:46

That's what I would like, that's what I really, really want.

play03:49

Here you might notice just a little bit of a pattern,

play03:51

there's actually something that looks like

play03:52

a power two number merging on the right-hand side.

play03:55

This is actually an exponential time algorithm by the way.

play03:58

It takes really, really long time to run.

play04:02

Actually, yeah, maybe ask yourself for a second.

play04:03

Why might look like a power of two?

play04:06

Why?

play04:07

Maybe go back and look at the code for a second.

play04:09

Why might this look like a power of two?

play04:13

Actually it's not so bad here.

play04:15

The reason it looks like a power of two is

play04:17

because it makes two recursive calls.

play04:19

So every time you run it, it doubles

play04:20

the amount of work it has to do.

play04:22

So, if you're doubling, doubling, doubling,

play04:23

well that's like a power of two.

play04:26

So, we have something that looks like two of the n.

play04:30

Okay, so on the right-hand side, maybe from that

play04:33

kinda sequence, you would guess that,

play04:35

"Hey, f of n looks like two of the n."

play04:37

So we might think that for starters,

play04:38

f of n equals two of the n,

play04:40

then it looks like each of these numbers is off

play04:42

by one, so let's throw our negative one there as well.

play04:44

So our proposal would be from this chart

play04:47

just guessing the pattern that

play04:48

f of n equal two n minus one.

play04:50

This would be our guess.

play04:53

That's great, but of course there's this little snag here.

play04:58

That is a guess, and a guess really isn't what we need.

play05:03

We want to be right, we want to write a growth function

play05:06

that we know for absolutely certain is

play05:08

the correct growth function,

play05:10

because it could be the case when n becomes really large,

play05:12

oh hey, all of a sudden those things don't match up

play05:14

by our algorithm computer recursively

play05:16

doesn't have the same value as this two

play05:19

of the n minus one over guessing.

play05:21

That could happen, I don't have any evidence, right?

play05:24

My chart only goes up so far, only goes up to 16.

play05:26

Beyond that I don't have any evidence

play05:28

that this thing is actually correct.

play05:30

So when I do that in order to verify

play05:32

this function is actually correct

play05:33

and that it does actually match the recurrence,

play05:36

we're going to have to break our induction, okay?

play05:38

So in the next video, we're going to talk through

play05:40

is proving mathematically that these two functions

play05:43

the f of n, two the n minus one

play05:45

and f of n equal two f of n minus one plus one

play05:47

are the same, and we'll do that using induction.

play05:50

So we'll do that next; it will be a little bit

play05:51

involved from kinda the technical math-y perspective.

Rate This

5.0 / 5 (0 votes)

相关标签
AlgoritmosCrecimientoTorre de HanoiRecursiónInducción matemáticaFunciones matemáticasAnálisis computacionalTiempo exponencialFórmula cerradaProgramación
您是否需要英文摘要?