Recursión en la solución de Problemas

Anuncio
Matemáticas Discretas
TC1003
Recursión: Solución de Problemas
Departamento de Matemáticas / Centro de Sistema Inteligentes
ITESM
Recursión: Solución de Problemas
Matemáticas Discretas - p. 1/7
Recursión: Las Torres de Hanoi
En 1883 el matemático francés Édouard Lucas (4/april/18423/october/1891) inventó un rompecabezas que llamó Las Torres
de Hanoi.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 2/7
Recursión: Las Torres de Hanoi
En 1883 el matemático francés Édouard Lucas (4/april/18423/october/1891) inventó un rompecabezas que llamó Las Torres
de Hanoi. El juego consistía de
ocho discos de madera con hoyos
en su centro, los cuales se apilaban en tamaño decreciente en un
poste en una fila de tres postes.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 2/7
Recursión: Las Torres de Hanoi
En 1883 el matemático francés Édouard Lucas (4/april/18423/october/1891) inventó un rompecabezas que llamó Las Torres
de Hanoi. El juego consistía de
ocho discos de madera con hoyos
en su centro, los cuales se apilaban en tamaño decreciente en un
poste en una fila de tres postes.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 2/7
Recursión: Las Torres de Hanoi
En 1883 el matemático francés Édouard Lucas (4/april/18423/october/1891) inventó un rompecabezas que llamó Las Torres
de Hanoi. El juego consistía de
ocho discos de madera con hoyos
en su centro, los cuales se apilaban en tamaño decreciente en un
poste en una fila de tres postes. El
jugador debería cambiar todos los
discos de un poste a otro,
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 2/7
Recursión: Las Torres de Hanoi
En 1883 el matemático francés Édouard Lucas (4/april/18423/october/1891) inventó un rompecabezas que llamó Las Torres
de Hanoi. El juego consistía de
ocho discos de madera con hoyos
en su centro, los cuales se apilaban en tamaño decreciente en un
poste en una fila de tres postes. El
jugador debería cambiar todos los
discos de un poste a otro, siempre
moviendo de uno en uno y
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 2/7
Recursión: Las Torres de Hanoi
En 1883 el matemático francés Édouard Lucas (4/april/18423/october/1891) inventó un rompecabezas que llamó Las Torres
de Hanoi. El juego consistía de
ocho discos de madera con hoyos
en su centro, los cuales se apilaban en tamaño decreciente en un
poste en una fila de tres postes. El
jugador debería cambiar todos los
discos de un poste a otro, siempre
moviendo de uno en uno y nunca apilando un disco sobre otro de
menor tamaño.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 2/7
Las Torres de Hanoi: Portada Juego
THE TOWER OF
HANOÏ
Hanoi
Portada
Links
Solución
AUTHENTIC BRAIN
TEASER OF THE
ANAMITES
A GAME BROUGHT
BACK FROM
TONKIN
BY PROFESSOR N.
CLAUS (OF SIAM)
Mandarin of the
College of
Li-Sou-Stian!
Recursión: Solución de Problemas
Matemáticas Discretas - p. 3/7
Las Torres de Hanoi: Links
■
■
■
Un applet en:
http://www.mazeworks.com/hanoi/
Un juego interactivo en:
http://www.ability.org.uk/tower.html
Información:
http://www.cut-theknot.org/recurrence/hanoi.shtml
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 4/7
Las Torres de Hanoi: Solución
Suponga 3 postes:
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 5/7
Las Torres de Hanoi: Solución
Suponga 3 postes:
■ Poste origen: donde se encuentran ahora los
discos.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 5/7
Las Torres de Hanoi: Solución
Suponga 3 postes:
■ Poste origen: donde se encuentran ahora los
discos.
■ Poste meta: donde se deberán colocar los
discos.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 5/7
Las Torres de Hanoi: Solución
Suponga 3 postes:
■ Poste origen: donde se encuentran ahora los
discos.
■ Poste meta: donde se deberán colocar los
discos.
■ Poste auxiliar: donde se pueden hacer
movimientos.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 5/7
Las Torres de Hanoi: Solución
Suponga 3 postes:
■ Poste origen: donde se encuentran ahora los
discos.
■ Poste meta: donde se deberán colocar los
discos.
■ Poste auxiliar: donde se pueden hacer
movimientos.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 5/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 6/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Hanoi
Portada
Links
Solución
Paso Inductivo
Suponga un pilar con k + 1 discos en un poste
“origen” y que se desean colocar en el poste
“meta”.
Recursión: Solución de Problemas
Matemáticas Discretas - p. 6/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Hanoi
Portada
Links
Solución
Paso Inductivo
Suponga un pilar con k + 1 discos en un poste
“origen” y que se desean colocar en el poste
“meta”. Suponga también que se tiene una forma
de colocar k discos de un poste cualquiera a otro
poste cualquiera usando un poste auxiliar para
movimientos (Hipótesis Inductiva).
Recursión: Solución de Problemas
Matemáticas Discretas - p. 6/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Hanoi
Portada
Links
Solución
Paso Inductivo
Suponga un pilar con k + 1 discos en un poste
“origen” y que se desean colocar en el poste
“meta”. Suponga también que se tiene una forma
de colocar k discos de un poste cualquiera a otro
poste cualquiera usando un poste auxiliar para
movimientos (Hipótesis Inductiva). Entonces una
estrategia de solución será:
Recursión: Solución de Problemas
Matemáticas Discretas - p. 6/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Hanoi
Portada
Links
Solución
Paso Inductivo
Suponga un pilar con k + 1 discos en un poste
“origen” y que se desean colocar en el poste
“meta”. Suponga también que se tiene una forma
de colocar k discos de un poste cualquiera a otro
poste cualquiera usando un poste auxiliar para
movimientos (Hipótesis Inductiva). Entonces una
estrategia de solución será:
■
Mover los k primeros discos del poste origen al poste auxiliar con
el proceso solución dado en la hipótesis inductiva,
Recursión: Solución de Problemas
Matemáticas Discretas - p. 6/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Hanoi
Portada
Links
Solución
Paso Inductivo
Suponga un pilar con k + 1 discos en un poste
“origen” y que se desean colocar en el poste
“meta”. Suponga también que se tiene una forma
de colocar k discos de un poste cualquiera a otro
poste cualquiera usando un poste auxiliar para
movimientos (Hipótesis Inductiva). Entonces una
estrategia de solución será:
■
Mover los k primeros discos del poste origen al poste auxiliar con
el proceso solución dado en la hipótesis inductiva,
■
Una vez liberado el disco k + 1, moverlo del poste origen al poste
meta, y
Recursión: Solución de Problemas
Matemáticas Discretas - p. 6/7
Caso Base
Si hay un sólo disco (n=1) sólo colóquelo en en
poste meta.
Hanoi
Portada
Links
Solución
Paso Inductivo
Suponga un pilar con k + 1 discos en un poste
“origen” y que se desean colocar en el poste
“meta”. Suponga también que se tiene una forma
de colocar k discos de un poste cualquiera a otro
poste cualquiera usando un poste auxiliar para
movimientos (Hipótesis Inductiva). Entonces una
estrategia de solución será:
■
Mover los k primeros discos del poste origen al poste auxiliar con
el proceso solución dado en la hipótesis inductiva,
■
Una vez liberado el disco k + 1, moverlo del poste origen al poste
meta, y
■
Mover los k discos del poste auxiliar al poste meta con el proceso
de la hipótesis inductiva.
Recursión: Solución de Problemas
Matemáticas Discretas - p. 6/7
Hanoi( n, origen, distino, auxiliar)
if (n == 1) then
printf(“Disco %d: de %d
a %d\n”,1,origen,destino);
else
Hanoi(n-1,origen,auxiliar,destino);
printf(“Disco %d: de %d
a %d\n”,n,origen,destino);
Hanoi(n-1,auxiliar,destino,origen);
end if
Recursión: Solución de Problemas
Hanoi
Portada
Links
Solución
Matemáticas Discretas - p. 7/7
Hanoi( n, origen, distino, auxiliar)
if (n == 1) then
printf(“Disco %d: de %d
a %d\n”,1,origen,destino);
else
Hanoi(n-1,origen,auxiliar,destino);
printf(“Disco %d: de %d
a %d\n”,n,origen,destino);
Hanoi(n-1,auxiliar,destino,origen);
end if
Ejecutar
Hanoi
Portada
Links
Solución
Hanoi(8,1,2,3)
Recursión: Solución de Problemas
Matemáticas Discretas - p. 7/7
Hanoi( n, origen, distino, auxiliar)
if (n == 1) then
printf(“Disco %d: de %d
a %d\n”,1,origen,destino);
else
Hanoi(n-1,origen,auxiliar,destino);
printf(“Disco %d: de %d
a %d\n”,n,origen,destino);
Hanoi(n-1,auxiliar,destino,origen);
end if
Ejecutar
Hanoi
Portada
Links
Solución
Hanoi(8,1,2,3)
¿¿Total de movimientos para mover n discos??
Recursión: Solución de Problemas
Matemáticas Discretas - p. 7/7
Hanoi( n, origen, distino, auxiliar)
if (n == 1) then
printf(“Disco %d: de %d
a %d\n”,1,origen,destino);
else
Hanoi(n-1,origen,auxiliar,destino);
printf(“Disco %d: de %d
a %d\n”,n,origen,destino);
Hanoi(n-1,auxiliar,destino,origen);
end if
Ejecutar
Hanoi
Portada
Links
Solución
Hanoi(8,1,2,3)
¿¿Total de movimientos para mover n discos??
a1 = 1, y ak+1 = ak + 1 + ak = 2 ak + 1
Recursión: Solución de Problemas
Matemáticas Discretas - p. 7/7
Documentos relacionados
Descargar