martes, 13 de julio de 2010

BFS Distancia
Recorrer un grafo consiste en “visitar”cada uno de los nodos a través de las aristas del mismo. Se trata de realizar recorridos de grafos de manera eficiente. Para ello, se pondrá una marca en un nodo en el momento en que es visitado, de tal manera que, inicialmente, no esta marcado ningún nodo del grafo.

BFS es un algoritmo de búsqueda que empezando en un nodo fuente, procede a procesar todos sus vecinos. Luego procesa todos los vecinos de sus vecinos y así sucesivamente hasta encontrar su destino. Es decir que primero procesa a todos los nodos que están a distancia k antes que procesar a los nodos a distancia k + 1.

La idea del procedimiento BFS(G, v) es la siguiente:
• Se marca el nodo v.
• Si todos los nodos adyacentes a v están marcados, entonces TERMINAR; si no,
marcar todos los nodos v1, v2, . . . , vk adyacentes a v que no estén marcados.
• Repetir el proceso con los nodos adyacentes a los nodos que se han marcado en el paso anterior.

miércoles, 7 de julio de 2010

Factoriales y aproximación de e

La serie de Taylor de una función f de números reales o complejos que es infinitamente diferenciable en un entorno de números reales o complejos a, es la serie de potencias


Un ejemplo

En estos términos, la recta tangente y la parábola tangente, vienen siendo los polinomios de Taylor para f de grados 1 y 2 respectivamente.

En la siguiente tabla compararemos a la función exponencial (última columna) con los polinomios de Taylor correspondientes de grados 1 hasta 4. Obsérvese que la segunda columna corresponde a la recta tangente y la tercera columna a la parábola tangente.

x

1+x

1

2

2.5

2.666666

2.7083333

2.718281828

0.5

1.5

1.625

1.645833

1.6484375

1.6487212707

0.3

1.3

1.345

1.3495

1.3498375

1.34985880757

0.1

1.1

1.105

1.10516667

1.10517083

1.10517091807

0.01

1.01

1.01005

1.01005017

1.01005017

1.010050167

0.001

1.001

1.0010005

1.00100050000

1.00100050017

1.00100050016

Si analizamos con detenimiento la información proporcionada por esta tabla, veremos lo siguiente:

1. En cada columna, vemos que la aproximación del correspondiente polinomio de Taylor es mejor cuanto más cercano se encuentre x a 0.

2. En cada renglón, vemos que para cada valor fijo de x, no importa si está cerca o no de 0, la aproximación va mejorando conforme aumentamos el grado del polinomio de Taylor.


Codigo:
#include
#include
#include

float k; //es la potencia y variable
float n; //limitante para el ciclo
float x; //es un dato
float e; //es el resultado
float factorial = 1;

int main(int factorial, char** exponencial) {

printf("\tPrograma para calcular la aproximacion de e\n\n\n");
printf("Dame un numero x: ");
scanf("%f", &x);
printf("Numero de iteraciones: ");
scanf("%f", &n);

for(k = 0; k < n; k += 1) ///(variable que incrementa; la condicion; el incremento)
{

factorial = factorial*k; ///funcion para calcular el valor factorial
if(factorial == 0)
{

factorial = 1; ///Si factorial es igual a 0 entonces factorial debe ser 1
} ///para que se cumpla el valor factorial de 0!

e += (pow(x,k)/factorial); ///la razon de acumulacion aproximacion

printf("%f\n", e);

}

getch();

return 2;
}

Factoriales y aproximación de e

La serie de Taylor de una función f de números reales o complejos que es infinitamente diferenciable en un entorno de números reales o complejos a, es la serie de potencias

Un ejemplo

En estos términos, la recta tangente y la parábola tangente, vienen siendo los polinomios de Taylor para f de grados 1 y 2 respectivamente.

En la siguiente tabla compararemos a la función exponencial (última columna) con los polinomios de Taylor correspondientes de grados 1 hasta 4. Obsérvese que la segunda columna corresponde a la recta tangente y la tercera columna a la parábola tangente.


x

1+x

1

2

2.5

2.666666

2.7083333

2.718281828

0.5

1.5

1.625

1.645833

1.6484375

1.6487212707

0.3

1.3

1.345

1.3495

1.3498375

1.34985880757

0.1

1.1

1.105

1.10516667

1.10517083

1.10517091807

0.01

1.01

1.01005

1.01005017

1.01005017

1.010050167

0.001

1.001

1.0010005

1.00100050000

1.00100050017

1.00100050016

Si analizamos con detenimiento la información proporcionada por esta tabla, veremos lo siguiente:

1. En cada columna, vemos que la aproximación del correspondiente polinomio de Taylor es mejor cuanto más cercano se encuentre x a 0.

2. En cada renglón, vemos que para cada valor fijo de x, no importa si está cerca o no de 0, la aproximación va mejorando conforme aumentamos el grado del polinomio de Taylor.


Codigo:
#include
#include
#include

float k; //es la potencia y variable
float n; //limitante para el ciclo
float x; //es un dato
float e; //es el resultado
float factorial = 1;

int main(int factorial, char** exponencial) {

printf("\tPrograma para calcular la aproximacion de e\n\n\n");
printf("Dame un numero x: ");
scanf("%f", &x);
printf("Numero de iteraciones: ");
scanf("%f", &n);

for(k = 0; k < factorial =" factorial*k;" factorial ="=" factorial =" 1;">


jueves, 1 de julio de 2010

Tipos de Programadores en C


¿Que fue lo que hice?

Lo que se hiso fue una explicación sencilla del uso de algunos de los programadores más utilizados.

Fue fácil y rápido, ya que solamente se tenía que bajar los programas, utilizarlos y no hubo tanta complicación, si acaso fue para bajar los programas ya que en varias páginas de internet te pedía un código.


¿En qué aspectos estoy bien, que me hace falta para un mejoramiento?

El tipo de uso que le dimos a los programas fue sencillo de hacer y por eso no tuve tanto problema.

Aun me falta reforzar varios aspectos, ya que esto es algo nuevo para mí y aun no me termino de acostumbrar, pero bueno de algo se empieza.


¿Quien fue el encargado de liderar el equipo?

La verdad no fue tanto el liderazgo sino que nos repartimos el trabajo con la finalidad de que cada miembro del equipo participara para que asi todos hayan aprendido algo.

La ayuda.

No hubo tanta complicidad para este trabajo, la única ayuda que hubo fue que cada quien hiso un poco para esto.


¿Cual fue la importancia de mi colaboración en el trabajo?

Como anteriormente lo dije todos hicimos lo mismo. Creo que en un equipo nadie es más importante que otro porque todos hacemos la misma cantidad de trabajo, y sin la colaboración de los demás no se hubiese terminado esto con facilidad.






Herramientas para programar en C