Está en la página 1de 13

COEFICIENTE BINOMIAL

El coeficiente binomial es el nmero de formas en que se pueden extraer subconjuntos a partir de un conjunto dado. Estos se representan de la siguiente forma:

Tambin se le como coeficiente binomial ya que

COEFICIENTE BINOMIAL
Para su clculo utilizamos el tringulo de Pascal:

COEFICIENTE BINOMIAL
Otra manera de expresar el tringulo

COEFICIENTE BINOMIAL

De un caso de tamao M = n + k, pasamos a dos de tamao (M-1) y (M-2) Los sub-casos se solapan

COEFICIENTE BINOMIAL

COEFICIENTE BINOMIAL
Mantiene en memoria los subcasos para no repetir sus clculos Usa mucha ms memoria El algoritmo se aproxima a la solucin calculando soluciones de los subproblemas (principio de optimalidad)

MORALEJA: La programacin dinmica utiliza ms memoria para ir ms rpido

En c++:

#include<conio.h> #include<stdio.h> main(){ printf("\t\t triangulo de pascal\n"); int trian[100][100]={0}, h, n, i, j; do{ printf("Ingrese el Alto del Triangulo[1-25]= "); scanf("%d",&h); }while(h<1 || h>100); n=(2*h)-1; trian[0][h-1]=1; for (i=1; i<=h; i++){ for (j=h+1-i; j <= i-h+n ; j++){ trian[i][j]= trian[i-1][j-1] + trian[i-1][j+1]; } } for (i=1;i<=h;i++){ for (j=1;j<=n;j++){ if (trian[i][j]!=0){ printf("%2d",trian[i][j]); } else{ printf(" "); } } printf("\n"); } getch(); }

Devolver Cambio
Supongamos que compramos un artculo en una tienda el artculo cuesta s/. 4.37 y pagamos con un billete de s/.10 , entonces nos tienen que devolver s/. 5.63 Cmo nos devuelve el cambio con menor nmero de monedas? Normalmente solucionamos este tipo de problemas mediante algoritmos voraces, este es eficiente mas no eficaz. Si hay monedas de 1, 4 y 6 cntimos hay que devolver 8 cntimos el algoritmo voraz devuelve 1 moneda de 6 cntimos 2 monedas de 1 cntimo, pero la solucin ptima es 2 monedas de 4 cntimos

Devolver Cambio
Para resolverlo con PD:
Los tipos de monedas estn ordenadas segn su valor Construimos una tabla, tabla[1..n][0..N] tabla[i][j] es el nmero mnimo de monedas para
devolver una cantidad j < N utilizando los tipo de monedas 1; 2; : : : ; i

la solucin es tabla[n][N] tabla[i][j]=min{ tabla[i-1][j], 1+tabla[i][j-di]} tabla[i][0]=0 rellenamos la tabla por filas o por columnas

Devolver Cambio
Monedas: d1 = 1 cntimo, d2 = 4 cntimos, d3 = 6 cntimos Devolver: 8 cntimos

Devolver Cambio
Claramente es secuencial y cumple el POB. En cada paso Calculamos una subsolucin ptima Presenta una definicin recursiva
o Tabla[i][j]=min{ tabla[i-1][j] , 1+tabla[i][j-di]}

La solucin ptima se calcula usando la tabla. El nmero s, y el tipo de monedas?

Devolver Cambio
Hasta el momento no aadimos nada

Se aade una moneda de 4 centimos

Devolver Cambio
Se culmina el algoritmo con 2 monedas de 4 cntimos

También podría gustarte