Sunteți pe pagina 1din 29

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

INSTITUTO TECNOLOGICO DE CUAUTLA


UNIDAD I: FUNCIONES RECURSIVAS MATERIA: PROGRAMACION NUMERICA CARRERA: ING. MECATRONICA SEMESTRE: CUARTO SEMESTRE ALUMNOS: VALLE PEREZ HECTOR ALAN ABASOLO CARRERA ISMAEL CORONEL MENDOZA ZURISADAI

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

INDICE
1.1 Aplicacin al modelado de problemas

.. 3 1.2 Nmeros de Fibonacci ..4 1.3 Nmeros de Cataln ..7 1.4 Torre de Hani .10 1.5 Particiones de nmeros conjuntos13 1.6 Nmeros de Stirling primera clase.18 y y

segunda

1.7 Problema de Josephus ..23

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

APLICACIN AL MODELADO DE PROBLEMAS


INTRODUCCION Existen varios tipos de modelos, que interesa distinguir en esta presentacin. Consideremos en primer lugar los modelos conceptuales. La interpretacin de las observaciones y resultados de fenmenos fsicos es realizada a travs de un proceso que incluye: la construccin terica de ciertas entidades como sistemas objeto de estudio (por ejemplo luz, partcula, onda, fotn...), la descripcin de esas entidades empleando conceptos asociados a ciertos atributos (energa, masa, carga elctrica...), y otros que establecen relaciones entre aquellos conceptos (fuerza, trabajo, potencial...) y que dan cuenta de los procesos y estados involucrados. Se construyen de este modo modelos conceptuales (modelos de cuerpo rgido, de fluido ideal, de orbital...) que, integrados en una teora (teora newtoniana, mecnica cuntica...) sirven para explicar y predecir el comportamiento de los sistemas fsicos que son objeto de estudio. DESARROLLO Los pasos para modelar un problema son los siguientes: Paso 1: Se determinan las variables de decisin y se expresan algebraicamente. Paso 2: Se determinan las restricciones y se expresan como ecuaciones o inecuaciones de las variables de decisin:

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Paso 3: Se expresan todas las condiciones implcitamente establecidas por la naturaleza de las variables: que no puedan ser negativas, que sean enteras, que solo puedan tomar determinados valores,... son nmeros enteros, o son booleanos,...

Paso 4: Se determina la funcin objetivo. Maximizar o minimizar

CONCLUSIONES: El modelado de problemas nos ayuda mucho para tener en prctica como resolver problemas y saber qu hacer en un problema cotidiano. Saber este proceso nos facilita desde saber que podemos hacer cuando nos enfrentamos algn problema y as saber qu hacer cuando estamos en l, o simplemente saber algn proceso o generar algn proceso.

SUCESION FIBONACCI La sucesin de Fibonacci es una secuencia de nmeros enteros descubierta por matemticos hindes hacia el ao 1135 y descrita por primera vez en europa gracias a Fibonacci (Leonardo de Pisa). La sucesin se describe de la forma sigueinte: F(0)=0; F(1)=1; F(n)=F(n-1)+F(n-2) Lo..que..da..la..recurrenciasiguiente: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 Aparte de que esta sucesin tiene varias propiedades interesantes, como que se puede formar cualquier nmero natural mediante la suma
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

de trminos de la sucesin, sin que ninguno se repita, lo ms curioso de esta sucesin es su presencia en la naturaleza. La sucesin de Fibonacci est muy ligado a la vida y estos hechos lo demuestran: Los machos de una colmena de abejas tienen un rbol genealgico que cumple con esta sucesin. El hecho es que los znganos, el macho de la abeja, no tiene padre (1), pero s que tiene una madre (1, 1), dos abuelos, que son los padres de la reina (1, 1, 2), tres bisabuelos, ya que el padre de la reina no tiene padre (1, 1, 2, 3), cinco tatarabuelos (1, 1, 2, 3, 5), ocho tataratatarabuelos (1, 1, 2, 3, 5, 8) y as sucesivamente, cumpliendo con la sucesindeFibonacci. En la mano humana tambin se encuentra esta recurrencia, la longitud del metacarpo es la suma de las dos falanges proximales y la longitud de la primera falange es la suma de las dos..falanges..distales. El nmero de ptalos de una flor es generalmente un trmino de Fibonacci. Hay flores con 2 ptalos, 3, 5, 8, 13, 21, 34, pero muy rara vez es un nmero que no est en esta sucesin.

Figura A ejemplo de la serie fibonacci

PROGRAMA DE SERIE FIBONACCI EN C++

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

#include <iostream.h> #include <stdio.h> #include <conio.h> /* Programa para calcular la serie del fibonacci por medio de un ciclo */ void FibonacciNormal(int Num) { long i,b1=1,b2=0,Aux; for (i=1;i<=Num;i++) { Aux=b2; printf("%ld + %ld = %ld\n\r",b1,b2,b1+b2); b2= b1 + b2; b1= Aux; } }

void main() { int Numero; int Fib; clrscr(); printf("\n\n*** PROGRAMA PARA CALCULAR E IMPRIMIR LA SERIE DEL FI BONACCI *** \n\n "); printf("Cuantos dgitos deseas calcular: "); cin >> Numero; FibonacciNormal(Numero); printf("\n\n\rPresiona una tecla..."); getch(); } EJECUCI ON

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Fig.1 Esquema donde se representan las pruebas obtenidas aplicando el cdigo en c++ correctamente.

CONCLUSION Las extraas apariciones de las series de fibonacci han dado lugar a interminables especulaciones y anlisis, tenemos muchas aplicaciones para esta serie como en los caparazones de caracoles, manifestaciones en artes plsticas, obras poticas entre muchas ms.

NUMEROS DE CATALAN En combinatoria, los nmeros de cataln forman una secuencia de nmeros naturales que aparece en varios problemas de conteo que habitualmente son recursivos. Obtienen su nombre del matemtico belga Eugne Charles Cataln (18141894). El n-simo nmero de cataln se obtiene, binomiales, a partir de la siguiente frmula: aplicando coeficientes

PROPIEDADES Una expresin alternativa para Cn es

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Esta otra expresin muestra que Cn es un nmero natural, lo cual no resulta obvio a priori mirando la primera frmula dada. Los nmeros de cataln satisfacen la siguiente relacin de recurrencia:

Y tambin satisfacen:

Que puede ser una forma ms eficiente de calcularlos. La expresin en forma de recursin, seria:

Asintticamente, los nmeros de cataln crecen como:

Considerando que el cociente entre el n-simo nmero de Cataln y la expresin de la derecha tiende hacia 1 cuando n (esto puede probarse usando la frmula de Stirling).

PROGRAMA DE NUMERO CATALAN EN C++ #include <stdio.h> int Catalan(int n) { if(n<=0) return 1;
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

else return (2*(2*n-1)*Catalan(n-1))/(n+1); } void main( ) { int n; printf(Que numero Cataln quieres calcular?); scanf(%d,&n); printf(Cataln(%d) = %d,n,Catalan(n)); printf(\n); } EJECUCION

Fig.2 En esta figura se muestra la prueba realizada con el nmero cataln CONCLUSION Con este tipo de nmeros tengo presente que se utilizan para reducir problemas numricos de distintos tipos.

TORRE DE HANOI Las Torres de Hani es un rompecabezas o juego matemtico inventado en 1883 por el matemtico francs duard Lucas.1 Este solitario se trata
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

de un juego de ocho discos de radio creciente que se apilan insertndose en una de las tres estacas de un tablero. El objetivo del juego es crear la pila en otra de las estacas siguiendo unas ciertas reglas. El problema es muy conocido en laciencia de la computacin y aparece en muchos libros de texto como introduccin a la teora de algoritmos. El juego, en su forma ms tradicional, consiste en tres varillas verticales. En una de las varillas se apila un nmero indeterminado de discos (elaborados de madera) que determinar la complejidad de la solucin, por regla general se consideran ocho discos. Los discos se apilan sobre una varilla en tamao decreciente. No hay dos discos iguales, y todos ellos estn apilados de mayor a menor radio en una de las varillas, quedando las otras dos varillas vacantes. El juego consiste en pasar todos los discos de la varilla ocupada (es decir la que posee la torre) a una de las otras varillas vacantes. Para realizar este objetivo, es necesario seguir tres simples reglas: 1. Slo se puede mover un disco cada vez.

2. Un disco de mayor tamao no puede descansar sobre uno ms pequeo que l mismo. 3. Slo puedes desplazar el disco que se encuentre arriba en cada varilla. Existen diversas formas de realizar la solucin final, todas ellas siguiendo estrategias diversas. Se cuenta que un templo de Benars (Uttar Pradesh, India), se encontraba una cpula que sealaba el centro del mundo. All estaba una bandeja sobre la cual existan tres agujas de diamante. En una maana lluviosa, un rey mand a poner 64 discos deoro, siendo ordenados por tamao: el mayor en la base de la bandeja y el menor arriba de todos los discos.Tras la colocacin, los sacerdotes del templo intentaron mover los discos entre las agujas, segn las leyes que se les haban entregado: "El sacerdote de turno no debe mover ms de un disco a la vez, y no puede situar un disco de mayor dimetro encima de otro de menor dimetro". Hoy no existe tal templo, pero el juego an perdur en el tiempo...
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Otra leyenda cuenta que Dios al crear el mundo, coloc tres varillas de diamante con 64 discos en la primera. Tambin cre un monasterio con monjes, los cuales tienen la tarea de resolver esta Torre de Hani divina. El da que estos monjes consigan terminar el juego, el mundo acabar. No obstante, esta leyenda result ser un invento publicitario del creador del juego, el matemtico duard Lucas. En aquella poca, era muy comn encontrar matemticos ganndose la vida de forma itinerante conjuegos de su invencin, de la misma forma que los juglares hacan con su msica. No obstante, la falacia result ser tan efectista y tan bonita, que ha perdurado hasta nuestros das. Adems, invita a realizarse la pregunta: "si la leyenda fuera cierta, cundo ser el fin del mundo?". El mnimo nmero de movimientos que se necesita para resolver este problema es de 264-1. Si los monjes hicieran un movimiento por segundo, los 64 discos estaran en la tercera varilla en algo menos de 585 mil millones de aos. Como comparacin para ver la magnitud de esta cifra, la Tierra tiene como 5 mil millones de aos, y el Universo entre 15 y 20 mil millones de aos de antigedad, slo una pequea fraccin de esa cifra. == Origen == problema El problema matemtico de las torres de Hanoi fue inventada por Edward Lucas. Se publica en el volumen 3 de hisMathematical Recreationspublished pstumamente en 1892. Anunci que este problema se debe a uno de sus amigos, N. Claus de Siam, allegedlyProfessor en el Colegio deLi-Sou-Stian (doble anagrama ofLucasAmiens, su lugar de nacimiento, y San Luis de la escuela secundaria, donde ense , Lucas). Bajo el ttulo "LaBrahminsfall, Lucas dice que" N. Claus de Siam ha visto en sus viajes a los escritos del famoso hierro-hierro-Tam-Tam, en el gran templo de Benars, por debajo de la cpula que marca el centro del mundo, tres agujas de diamante, plantado en una losa de bronce, de un codo de altura y tan grueso como el cuerpo de una abeja. En una de estas agujas, Dios puso en el principio de los tiempos, 64 discos de oro puro, el metal de base ms amplia, y otras ms estrechas a la litera de arriba. Es la torre sagrada Brahma. Noche y da, los sacerdotes se siguen en los pasos del altar, dedicada al transporte de la vuelta de la primera
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

aguja en la tercera, sin apartarse de las reglas fijas que acabamos de indicar, que fueron impuestas por Brahma . Cuando todo est terminado, la torre se caer y los brahmanes, y esto ser el fin del mundo! ". Como se seala ms adelante, un juego de 64 unidades requiere un mnimo de 2 exp {{| 64}} -1 desplazamientos. Si se asume que la culpa de 1 segundo para mover un disco, que es 86.400 viajes por da, al final del juego se llevara a cabo despus de 213.000 millones de das, equivalentes a 584.5 mil millones de aos, o 43 veces la edad estimada del Universo (13.7 mil millones aos segn algunas fuentes)

PROGRAMA DE LA TORRE DE HANOI EN C++ #include <stdio.h> #include <stdlib.h> void hanoi(char inicial, char central, char final, int n){ printf(\"\\n =================================\\n\\n\"); printf(\"ini= %c cent= %c fin= %c n= %d \\n\",inicial,central, final,n); if(n==1) { printf(\" mover %d desde %c hasta %c\\n\",n,inicial,final); } else{

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

hanoi(inicial,final,central, n-1); printf(\" mover %d desde %c hasta %c\\n\",n,inicial,final); hanoi(inicial,final,central, n-1); } } main(){ hanoi(\'A\',\'B\',\'C\',3); printf(\"\\n\\n fin prog\\n\"); system(\"PAUSE\"); return 0; } EJECUCION

Fig. 3. En esta figura se representa la prueba realizada con 8 discos.

CONCLUSION
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

En conclusin tenemos que la torre de Hani consiste en pasar por todos los discos de una extremidad a otra sin que un disco mayor que encima de uno mas pequeo. Esta torre posee varias formas para resolverse, una d ellas es la recursiva la cual podemos decir que es la ms limitada en cuanto al tiempo de realizacin ya que su ejecucin depender de algunos factores para hacerla ms fcil y eficaz.

PARTICIONES DE NUMEROS Y DE CONJUNTOS

En matemticas discretas, una particin de un entero positivo n es una forma de descomponer n como suma de enteros positivos. Dos sumas se considerarn iguales si solo difieren en el orden de los sumandos. De modo ms riguroso, una particin de un nmero entero positivo n es una secuencia de enteros positivos (1,2,...,m) tal que . Las posibles particiones de un entero n pueden visualizarse con los diagramas conocidos como diagramas de Ferrers o diagramas de Young.

EJEMPLO: Las cinco particiones de 4 seran: 4=3+1=2+2=2+1+1=1+1+1+1 Y las once particiones de 6 son: 6 = 5 + 1 = 4 +2 = 4 + 1 + 1 = 3 + 3 = 3 + 2 + 1 = =3+1+1+1=2+2+2=2+2+1+1=2+1+1+1+1=1+ 1 + 1 + 1 + 1 +1 FUNCION DE PARTICION: a funcin de particin p(n) representa el nmero p de posibles particiones de un nmero entero positivo n; as, p(4) = 5 y p(6) = 11. Por

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

convenio, se define p(0) = 1, p(n) = 0 para n negativo. Los valores de esta funcin forman la (sucesin A000041 enOEIS). Los valores de p(n) crecen muy rpidamente con el valor de n. De hecho

p(100) = 190,569,292 p(200) = 3,972,999,029,388 p(1000) = 24,061,467,864,032,622,473,692,149,727,991 2.4


31

10

Una expresin asinttica Hardy y Ramanujan en 1918 Uspensky en 1920:

de p(n) fue obtenida por G. H. y de forma independiente por J. V.

PROGRAMA DE PARTCION DE NUMERO Y CONJUNTOS EN C++

double n,c; double np(double x);

void main() { C = 0; While (c <= 15) { clrscr(); cout<<"------------------------------------\n"; cout<<"*----- Particion de un numero -----*\n"; cout<<"------------------------------------\n\n\n";

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

cout<<"Ingrese el numero qe desee para calcular su nmero de particiones : "; cin >>n; if (n == 0) cout<<"\n El numero de particiones es 0"; else cout<< "\n EL numero de particiones de ese nmero es: "<< np(n); c++; getch(); } abort(); } double np(double x) { Double r r = fmod(x, 2); if (r == 0) if (x == 2) return 2; else - 1); else if (x == 1) return 1; else return 2 * np (x - 1) - np(x - 2); } EJECUCION return ((2 * np (x-1)) - np(x-2)) + ((x/2)

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Fig. 4. En esta figura se muestra la prueba realizada con el numero 10 para la particin de nmeros. PARTICIONES DE CONJUNTOS // este programa mostrara el resultado de un conjunto de a cuerdo al nmero que se quiera calcular// #include <iostream.h> #include <conio.h>

long int num; long int h = 1; long double p(long int n,long int k); long double f(long int n); void main() { cout<<"\n\n\n\n\n\t*** PROGRAMA PARA CALCULAR EL CONJUNTO DE UN NUMERO *** \n\n"; getch(); while ( h < 10) {
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

clrscr(); cout<<"\t\n\n INTRODUZCA UN NUMERO: "; cin>>num; cout<<"\n\t\t EL CONJUNTO DE "<<num<<" ES "<<p(num 1,num - 1); cout<<"\n\t\t-----------------------"; getch(); h ++; }

} long double p(long int n,long int k) { if ((n) <= 1) return 1; else { return((n - 1) * p (n - 1, k)) + p( n - 1, k - 1);

} } EJECUCION

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Fig. 5. En esta imagen se muestra la prueba realizada con el nmero 10 de particiones de conjuntos.

CONCLUSION Concluimos que las funciones recursivas son una clase de funciones de los nmeros naturales que son computables en un sentido intuitivo. De hecho en teora de la contabilidad se demuestra que las funciones recursivas son precisamente las funciones que puede ser calculadas con el formalismo de computo mas general conocido como lo son las maquinas de touring.

NUMEROS DE STIRLING PRIMERA Y SEGUNDA CLASE Los nmeros de Stirling se basan en la descomposicin de potencias. Si tenemos una potencia factorial de una variable, esta puede descomponerse en una combinacin lineal de potencias ordinarias de la variable x es decir: un polinomio de grado n sin trmino independiente.
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Los coeficientes asociados a la potencia n se denominan nmeros de Stirling de primera clase. De forma semejante una potencia entera -n- de una variable puede descomponerse en combinacin lineal de potencias factoriales cuyo mximo grado es n. y los coeficientes asociados se denominan nmeros de Stirling de segunda clase. Nmeros de..Stirling..de..primera..clase. Ejemplo Las permutaciones de 1,2 y 3 descompuestas en ciclos disjuntos son (1, 2, 3), (1, 3, 2), (1)(2,3), (2)(1,3), (3)(1,2) y (1)(2)(3). Por lo tanto: [(3@1)]=2, [(3@2)]=3, [(3@3)]=1 Propiedadeselementales: [(n@1)]=(n-1)! [(n@n)]=1 [(n@n-1)]=((n@2)) Relacinderecurrencia: [(n@k)]= [(n-1@k-1)]+(n-1)[(n-1@k)] Los Nmeros de Stirling de segunda especie, junto con los Nmeros de Stirling de primera especie, son uno de los dos tipos de Nmeros de Stirling. Comnmente aparecen en el estudio de la combinatoria, en la que se cuenta el nmero de permutaciones posibles. Los Nmeros de Stirling de segunda especie S(n,k) se definen como la cantidad de maneras que existen de hacer una particin de un conjunto de n elementos en k subconjuntos. La suma

es el n-simo Nmero de Bell. Si tomamos la frmula

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

(en particular, (x)0 = 1 porque se trata de un producto vaco), podemos caracterizar los nmeros de Stirling de segundo tipo mediante

A continuacin se muestra una tabla de valores para los Nmeros de Stirling de segunda especie: n\k 0 1 2 3 4 5 6 7 8 9 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 3 7 15 31 1 6 25 90 1 10 65 1 15 1 21 1 28 1 36 1 1 2 3 4 5 6 7 8 9

63 301 350 140

1 127 966 1 255

170 105 266 1 0

302 777 695 264 462 5 0 1 6

PROGRAMA DE NUMEROS DE STIRLING PRIMERA Y SEGUNDA CLASE EN C++

// este programa calcula el numero de Stirling de primera clase de acuerdo al nmero de particiones y el intervalo deseado// #include <iostream.h> #include <conio.h>

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

int n, j; float s1(int n, int k); float fact(int num);

void main() { clrscr(); cout<<" \n\n Introduzca el numero de particiones que desea: "; cin>>n; cout<< " \n\n El intervalos de: " ; cin>>j; cout<< " \n\n STIRLING DE PRIMERA CLASE DE " << n << "\n\n es: " <<s1((n),(j)); getch(); }

float s1(int n, int k) {

if (n == 0 && k ==0) return 1; if (k == n) //||k ==1)

return 1; else
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

if (k == 0) return 0; else return((n - 1) * s1(n - 1, k) + s1(n - 1, k - 1));

} EJECUCION

Fig. 6. En esta figura se muestra la prueba realizada con el numero 5, intervalo 2 para Stirling de primera clase

SEGUNDA CLASE // este programa calcula el numero de Stirling de segunda clase de acuerdo al nmero de particiones y el intervalo deseado// #include <iostream.h> #include <conio.h>

int n,j; float s2(int n, int k); float fact(int num);


28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

void main() { clrscr(); cout<<" \n\n Introduzca el numero de particiones que desea: ";

cin>>n; cout<< " \n\n El intervalos de: " ; cin>>j; cout<< " \n\n STIRLING: " << n << "\n\n es: " <<s2((n),(j)); getch(); }

float s2(int n, int k) {

if (n == 0 && k == 0) return 1; if (k == n||k == 1) return 1;

else if (k == 0) return 0;
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

else return( s2 (n - 1, k - 1) + k * s2( n - 1, k));

} EJECUCION

Fig. 7. En esta figura se presenta la prueba realizada con el numero 5, intervalo de 2 para Stirling segunda clase.

CONCLUSION

Los nmeros de Stirling nos sirven para saber si dado el grupo de permutacin sobre un conjunto de n elementos identificar cuantas permutaciones se pueden componer exactamente en k ciclos.

PROBLEMA DE JOSEPHUS Cuenta una leyenda sobre el historiador Josephus Flavius que, durante las guerras judeo-romanas, l y otros 40 soldados judos quedaron atrapados en una cueva rodeados por los romanos.
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Visto que tenan pocas posibilidades de salir con vida, decidieron suicidarse. Josephus y un amigo suyo no estaban muy felices con esa idea. As pues, propusieron que si haba que hacerlo, se hiciera con cierto orden: se colocaran en crculo y se iran suicidando por turno cada tres empezando a contar por uno determinado. Josephus y su amigo se colocaron de tal forma que fueron los dos ltimos y as, como ya nadie les poda llevar la contraria, decidieron seguir viviendo. La escena que sigue servir para simular esta historia, olvidndonos del amigo. Se trata de colocar a Josephus (punto amarillo) en la posicin adecuada para que sea el nico superviviente. Una vez se haya colocado a Josephus, pulsando sobre <Animar> se irn "suicidando" los puntos verdes (pasarn a rojo). Se empieza a contar desde el punto superior de la escena, ste ser el nmero uno, siguiendo el sentido de las agujas del reloj. El primero en caer ser el nmero 3, luego el nmero 6, ... El control "mseg" permite acelerar o no la animacin. Este problema se puede generalizar fcilmente a un nmero distinto de 41 y a un paso distinto de 3. El nmero mnimo de soldados judos que se permite en esta simulacin es 4 y el mximo, 80; y para el "paso", cualquier valor entero comprendido entre 1 y 99999. Al pulsar sobre el botn "Nuevo" estar listo nuestro nuevo problema. En Internet se puede encontrar mucha literatura sobre este problema, tanto en ingls como en espaol. En espaol tambin se le conoce con el nombre de "El problema de Jos".

PROGRAMA DE EL PROBLEMA DE JOSEPHUS EN C++ // este programa resolver el problema de Josephus de acuerdo con el nmero de personas que se introduzca y el numero de intervalos// #include <stdio.h> #include <conio.h>

#include <math.h>
28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

#include <iostream.h> void main() { int max_total[200], num, intervalo, baja = 0, ultimo, cont = 0, muert1, muert, muert2, aux = 0; cout<<"NUMERO DE PERSONAS: "; cin>>num; cout<<"\nINTERVALO DE BAJA: "; cin>>intervalo; for( muert = 0; muert < num; muert ++) max_total [muert]= muert + 1; cout<<"\n\n ORDEN DE BAJA:"; while (baja! = num -1) { For (muert1 = 0; muert1 < num; muert1 ++) { If (max_total [muert1]! = 0) { Cont = cont + 1; If (cont == intervalo) { 0; aux + 1; \n"<<aux<<".\t"<<max_total[muert1]; al [muert1] = 0; max_tot
28

Cont = Aux = cout<<"

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

= baja + 1; }

baja

} } } for(muert2 = 0; muert2 < num; muert2 ++) { If (max_total [muert2]! = 0) Ultimo = max_total [muert2]; } cout<<"\n\n LA PERSONA NUMERO "<< ultimo<<" ES LA ULTIMA";; getch (); } EJECUCION

28

PROGRAMACION NUMERICA Instituto Tecnolgico de Cuautla

Fig. 8 En esta figura se muestra la prueba realizada con un numero de 8 personas y un interval de baja de 2.

CONCLUSIONES Concluimos que el problema de josephus es una clase de problema de sucesin y serie. De hecho, se llega a la conclusin de que es un problema terico que se encuentra en matemticas y ciencias de la computacin.

28

S-ar putea să vă placă și