CURSO DE SISTEMAS
AQUÍ ENCONTRARAS TODA LA INFORMACIÓN PARA ARMAR, DESARMAR, FORMATEAR, CONFIGURAR, INSTALAR, DESINSTALAR TODO ACERCA DE UNA COMPUTADORA
martes, 2 de agosto de 2011
martes, 26 de julio de 2011
OPERACIONES DE ALGORITMOS
OPERACIONES
7 + 5 – 6
12-6= 6
9 + 7 ** (8 – 36) / 5
9+7**-28/5
9+2.17398E-24/5
9+4.348E-25
9.43
3) 7 * 5 ** 3 / 4 div 3
7*125/4 DIV 3
875/4 DIV 3
218.75 DIV 3
72.91
4) 7 * 8 (160 mod 3 ** 3) div 5 * 13 – 28
7 * 8 (160 mod 27) div 5 * 13 – 28
7 * 8 (25) div 5 * 13 – 28
56 (25) div 5 * 13 – 28
1400 div 5 * 13 – 28
1400 div 65 – 28
21.53-28
-6.46
5) 15 / 2 * (68 – 15 * 33 + (45 ** 2 / 16) / 3) / 15) + 19
15 / 2 * (68 – 15 * 33 + (2025 / 16) / 3) / 15) + 19
15 / 2 * (68 – 15 * 33 + (126.56) / 3) / 15) + 19
15 / 2 * (68 – 15 * 33 + 42.18 / 15) + 19
15 / 2 * (68 – 495 + 42.18 / 15) + 19
15 / 2 * (427 + 2.81) + 19
15 / 2 * (429.81) + 19
15 /859.62 + 19
0.017 + 19
19.017
sábado, 23 de julio de 2011
TAREA DE ALGORITMOS # 2
TIPOS DE ALGORITMOS QUE HAY
Un algoritmo voraz (también conocido como ávido, devorador o goloso) es aquel que, para resolver un determinado problema, sigue una metaheurística consistente en elegir la opción óptima en cada paso local con la esperanza de llegar a una solución general óptima. Este esquema algorítmico es el que menos dificultades plantea a la hora de diseñar y comprobar su funcionamiento. Normalmente se aplica a los problemas de optimización.
un algoritmo paralelo, en oposición a los algoritmos clásicos o algoritmos secuenciales, es un algoritmo que puede ser ejecutado por partes en el mismo instante de tiempo por varias unidades de procesamiento, para finalmente unir todas las partes y obtener el resultado correcto.
Algunos algoritmos son fácilmente divisibles en partes; como por ejemplo, un algoritmo que calcule todos los números primos entre 1 y 100, donde se podría dividir los números originales en subconjuntos y calcular los primos para cada uno de los subconjuntos de los números originales; al final, uniríamos todos los resultados y tendríamos la solución final del algoritmo. Otro ejemplo, puede ser el cálculo de Pi en paralelo.
Un algoritmo probabilista (o probabilístico) es un algoritmo que basa su resultado en la toma de algunas decisiones al azar, de tal forma que, en promedio, obtiene una buena solución al problema planteado para cualquier distribución de los datos de entrada. Es decir, al contrario que un algoritmo determinista, a partir de unos mismos datos se pueden obtener distintas soluciones y, en algunos casos, soluciones erróneas.
Existen varios tipos de algoritmos probabilísticos dependiendo de su funcionamiento, pudiéndose distinguir:
§ Algoritmos numéricos, que proporcionan una solución aproximada del problema.
§ Algoritmos de Montecarlo, que pueden dar la respuesta correcta o respuesta erróneas (con probabilidad baja).
§ Algoritmos de Las Vegas, que nunca dan una respuesta incorrecta: o bien dan la respuesta correcta o informan del fallo.
un algoritmo determinista es un algoritmo que, en términos informales, es completamente predictivo si se conocen sus entradas. Dicho de otra forma, si se conocen las entradas del algoritmo siempre producirá la misma salida, y la máquina interna pasará por la misma secuencia de estados. Este tipo de algoritmos ha sido el más estudiado durante la historia y por lo tanto resulta ser el tipo más familiar de los algoritmos, así como el más práctico ya que puede ejecutarse en las máquinas eficientemente.
Un modelo simple de algoritmo determinista es la función matemática, pues esta extrae siempre la misma salida para una entrada dada. No obstante un algoritmo describe explícitamente cómo la salida se obtiene de la entrada, mientras que las funciones definen implícitamente su salida.
En la cultura popular, divide y vencerás hace referencia a un refrán que implica resolver un problema difícil, dividiéndolo en partes más simples tantas veces como sea necesario, hasta que la resolución de las partes se torna obvia. La solución del problema principal se construye con las soluciones encontradas.
En las ciencias de la computación, el término divide y vencerás (DYV) hace referencia a uno de los más importantes paradigmas de diseño algorítmico. El método está basado en la resoluciónrecursiva de un problema dividiéndolo en dos o más subproblemas de igual tipo o similar. El proceso continúa hasta que éstos llegan a ser lo suficientemente sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno de los subproblemas se combinan para dar una solución al problema original.
Esta técnica es la base de los algoritmos eficientes para casi cualquier tipo de problema como, por ejemplo, algoritmos de ordenamiento (quicksort, mergesort, entre muchos otros), multiplicar números grandes (Karatsuba), análisis sintácticos (analisis sintáctico top-down) y la transformada discreta de Fourier.
Por otra parte, analizar y diseñar algoritmos de DyV son tareas que lleva tiempo dominar. Al igual que en la inducción, a veces es necesario sustituir el problema original por uno más complejo para conseguir realizar la recursión, y no hay un método sistemático de generalización.
Una metaheurística es un método heurístico para resolver un tipo de problema computacional general, usando los parámetros dados por el usuario sobre unos procedimientos genéricos y abstractos de una manera que se espera eficiente. Normalmente, estos procedimientos son heurísticos. El nombre combina el prefijo griego "meta" ("más allá", aquí con el sentido de "nivel superior") y "heurístico" (de ευρισκειν, heuriskein, "encontrar").
Las metaheurísticas generalmente se aplican a problemas que no tienen un algoritmo o heurística específica que dé una solución satisfactoria; o bien cuando no es posible implementar ese método óptimo. La mayoría de las metaheurísticas tienen como objetivo los problemas de optimización combinatoria, pero por supuesto, se pueden aplicar a cualquier problema que se pueda reformular en términos heurísticos, por ejemplo en resolución de ecuaciones booleanas.
Las metaheurísticas no son la panacea y suelen ser menos eficientes que las heurísticas específicas, en varios órdenes de magnitud, en problemas que aceptan este tipo de heurísticas crudas.
En informática, la programación dinámica es un método para reducir el tiempo de ejecución de un algoritmo mediante la utilización de subproblemas superpuestos y subestructuras óptimas, como se describe a continuación.
El matemático Richard Bellman inventó la programación dinámica en 1953 que se utiliza para optimizar problemas complejos que pueden ser discretizados y secuencializados.
El método de diseño de algoritmos Ramificación y poda (también llamado Ramificación y Acotación) es una variante delBacktracking mejorado sustancialmente. El término (del inglés, Branch and Bound) se aplica mayoritariamente para resolver cuestiones o problemas de optimización.
La técnica de Ramificación y poda se suele interpretar como un árbol de soluciones, donde cada rama nos lleva a una posible solución posterior a la actual. La característica de esta técnica con respecto a otras anteriores (y a la que debe su nombre) es que el algoritmo se encarga de detectar en qué ramificación las soluciones dadas ya no están siendo óptimas, para «podar» esa rama del árbol y no continuar malgastando recursos y procesos en casos que se alejan de la solución óptima.
"Vuelta atrás", (Backtracking) es una estrategia para encontrar soluciones a problemas que satisfacen restricciones. El término "backtrack" fue acuñado por primera vez por el matemático estadounidense D. H. Lehmer en los años 1950s.
En qué otras ciencias se apoya la algoritmia
- Ciencias de la Computación
- Matemáticas
- Ciencias Sociales
- Ciencias Políticas
Cómo podemos determinar la complejidad de un algoritmo
Es posible realizar el estudio de la complejidad de un algoritmo sólo en base a un conjunto reducido desentencias, aquellas que caracterizan que el algoritmo sea lento o rápido en el sentido que nos interesa. Tambiénes posible distinguir entre los tiempos de ejecución de las diferentes operaciones elementales,lo cual es necesario a veces por las características específicas del ordenador (por ejemplo, se podría considerarque las operaciones + y ÷ presentan complejidades diferentes debido a su implementación). Sin embargo, en estetexto tendremos en cuenta, a menos que se indique lo contrario, todas las operaciones elementales del lenguaje,y supondremos que sus tiempos de ejecución son todos iguales
REGLAS PARA EL CALCULO DE LA COMPLEJIDAD
DE UN ALGORITMO
§ El tiempo de ejecución de cada sentencia simple puede tomarse como complejidad de T(1)
§ Para las sentencias de bifurcación (if, case) el resultante de la complejidad será T(1)
§ La complejidad para los bucles (for, repeat, while) independientes será T(n)
§ La complejidad para los bucles anidados será: T(nm) donde m nos representa el numero de bucles anidados
Ejemplo 1:
El algoritmo a1 tarda n segundos en resolver un problema para una determinada cantidad
de datos mientras que el algoritmo n2 + 400n tarda también un determinado
tiempo en resolver el mismo problema.
Determine cual de los dos algoritmos es más eficiente en base a los datos de entrada
El algoritmo a1 tarda n segundos en resolver un problema para una determinada cantidad
de datos mientras que el algoritmo n2 + 400n tarda también un determinado
tiempo en resolver el mismo problema.
Determine cual de los dos algoritmos es más eficiente en base a los datos de entrada
a1 | a2 | ||
5n2 | >= | n2+400n | |
4n2 | >= | 400n | |
n2 | >= | 100n | |
n | >= | 100 | |
n | < | 100 | a1 es mejor |
n | >= | 100 | a2 es mejor |
Ejemplo 2:
Dado el siguiente algoritmo determine su complejidad
Dado el siguiente algoritmo determine su complejidad
INICIO | T(1) | ||
Leer a,b,c,sum | T(1) | ||
if a>3 then b=c*a | T(1) | ||
desde a=1 hasta b | T(n) | ||
sum=sum+a | T(1) | ||
Fin | T(1) | ||
FINAL | T(1) |
La complejidad del algoritmo es T(n)
viernes, 22 de julio de 2011
TAREA DE ALGORITMOS
ALGORITMOS PARA HACER HUEVOS FRITOS
1. Echar aceite en sartén.
2. Calentar el aceite.
3. echar el huevo al sartén y agregar sal.
4. Esperar a que se cosa.
5. retirar huevo y listo
ALGORITMO PARA HACER UNA LLAMADA NACIONAL Y UNA INTERNACIONAL
LLAMADA NACIONAL
DESCOLAGAR EL TELEFONO
MARCAR EL NUMERO AL QUE SE DESEA LLAMAR
LISTO YA PUEDE HABLAR
LLAMADA INTERNACIONAL
DESCOLGAR EL TELEFONO
MARCAR 001
MARCAR EL CODIGO DE AREA
MARCAREL NUMERO AL QUE SE DESEA LLAMAR
LISTO YA PUEDE HABLAR.
Algoritmo por multiplicación ingles
1. Empezar a Opera la primera sifra del multiplicador de izquierda a derecha por toda la cantidad del multiplicando
2. Operar la segunda sifra del multiplicador pero esta debe terminar donde inicia la primera operación
3. Sumar los resultados y listo
Ejemplo: 20x12
20
X 12
20
40
240
Multiplicación de dos enteros por algoritmo divide y venceras y a la rusa
Divide y venceras
1. Multiplicar primero la primera mitad de un número por la primera de otro y se desplaza el número de cifras del segundo
2. se multiplica la primera mitad de uno por la segunda mitad de otro y se desplaza la mitad de posiciones del segundo número
3. se multiplica la segunda mitad del primero por la primera mitad del segundo y se desplaza la mitad de cifras del segundo
4. se multiplican las dos últimas mitades y no se desplaza nada
5. sumar los numero y listo
A la rusa
1. Poner los dos numero en paralelo y al de la izquierda reducirlo por la mitad de manera consecutiva hasta llegar a que sea 1
2. Al de la derecha aumentarlo el doble consecutivamente hasta que el número de la izquierda sea 1
3. Todas las filas donde el número de la izquierda sea par se eliminan
4. Sumar todos los números de la derecha y esa es la respuesta
Ejemplo
40*12
20*24
10*48
5*96
2.5*192
1.25*384
Eliminar todas las filas en la que el número de la primera columna sea par obiando si es entero o decimal
40*12
20*24
10*48
5*96
2.5*192
1.25*384
Luego sumar las cantidades de la segunda fila que nos quedaron y ese es el resultado de la multiplicacion
Suma ( 96 + 384)
Respuesta = 480
Algoritmo de un cajero
1. Introducir su tarjeta y codigo
2. Seleccionar la consulta de saldo
3. Seleccionar Retirar dinero de la cuenta ahorro
4. Seleccionar cantidad y presionar aceptar
5. Seleccionar Retirar dinero de la cuenta monetaria
6. Seleccionar cantidad y presionar aceptar
7. Imprimir comprobante
8. Salir y listo
Suscribirse a:
Entradas (Atom)