Sunteți pe pagina 1din 15

UNIVERSIDAD JOSE CARLOS MARIATEGUI

FACULTAD DE INGENIERIA

ALGORITMOS
TRABAJO DE INVESTIGACION GRUPAL

INTEGRANTES:
CHAMBI ASENCIO, Willian Patric
FERNADEZ FLORES, Moises Angel
NINA MAQUERA, Walter Teoflo
APAZA ALAVE, Miguel Angel
MONTOYA PALOMINO, Juan Luis
DOCENTE:
ING. MELINA ALFEREZ GARCIA
CARRERA:
ING. DE SISTEMAS E I.
CAMPUS:
INTRODUCCION
Un algoritmo es considerado eficiente si su consumo de recursos est en la media
o por debajo de los niveles aceptables. Hablando a grandes rasgos, 'aceptable'
significa: que el algoritmo corre en un tiempo razonable en una computadora dada.
Desde 1950 hasta la actualidad las computadoras han tenido un avance
impresionante tanto en poder computacional como en la capacidad de memoria
disponible, lo que indica que los niveles aceptables de eficiencia en la actualidad
hubieran sido inadmisibles 10 aos atrs.

Los fabricantes de computadoras estn frecuentemente lanzando nuevos


modelos, normalmente con mejor rendimiento. El costo de mejorar el software
pude ser bastante caro, por ello en muchos casos la forma ms simple y barata de
alcanzar un mejor rendimiento es comprar una computadora con mejor
rendimiento de por s.

Existen muchas maneras para medir la cantidad de recursos utilizados por un


algoritmo: las dos medidas ms comunes son la complejidad temporal y espacial;
otras medidas a tener en cuenta podran ser la velocidad de transmisin, uso
temporal del disco duro, as como uso del mismo a largo plazo, consumo de
energa, tiempo de respuesta ante los cambios externos, etc. Muchas de estas
medidas dependen del tamao de la entrada del algoritmo (la cantidad de datos a
ser procesados); adems podran depender de la forma en que los datos estn
organizados (algoritmos de ordenacin necesitan hacer muy poco en datos que ya
estn ordenados o que estn ordenados de forma inversa).

Sin ms prembulos, le presentamos nuestro tema de investigacin.


INDICE

1. INTRODUCCION

2. CONCEPTO walter

3. REPRESENTACION willian

4. SECUENCIAS ITERATIVAS moises

5. SECUENCIAS RECURSIVAS miguel

6. EFICIENCIA DE ALGORITMOS juan

7. CONCLUSION walter

8. BIBLIOGRAFIA

1. CONCEPTO
Define algoritmo como un conjunto ordenado y finito de operaciones que permite
hallar la solucin de un problema. Mtodo y notacin en las distintas frmulas del
clculo. El algoritmo constituye un mtodo para resolver un problema mediante
una secuencia de pasos a seguir. Dicha secuencia puede ser expresada en forma
de diagrama de flujo con el fin de seguirlo de una forma ms sencilla.
De acuerdo con el concepto anterior, el algoritmo podra estar incluido en la
definicin de programa de ordenador de la Ley de Propiedad Intelectual (TRLPI),
al referirse a ste como toda secuencia de instrucciones o indicaciones destinadas
a ser utilizadas, directa o indirectamente, en un sistema informtico para realizar
una funcin o una tarea o para obtener un resultado determinado, cualquiera que
fuere su forma de expresin y fijacin.

2. REPRESENTACION
Los algoritmos pueden ser expresados de muchas maneras, incluyendo
al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de
programacin entre otros. Las descripciones en lenguaje natural tienden a ser
ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas
ambigedades del lenguaje natural. Dichas expresiones son formas ms
estructuradas para representar algoritmos; no obstante, se mantienen
independientes de un lenguaje de programacin especfico.

La descripcin de un algoritmo usualmente se hace en tres niveles:

a) Descripcin de alto nivel. Se establece el problema, se selecciona un modelo


matemtico y se explica el algoritmo de manera verbal, posiblemente con
ilustraciones y omitiendo detalles.
b) Descripcin formal. Se usa pseudocdigo para describir la secuencia de
pasos que encuentran la solucin.
c) Implementacin. Se muestra el algoritmo expresado en un lenguaje de
programacin especfico o algn objeto capaz de llevar a cabo instrucciones.

Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto,


un anlisis de complejidad o ambos.

Diagrama de flujo

Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos


conectados con flechas para indicar la secuencia de instrucciones y estn regidos
por ISO.
Los diagramas de flujo son usados
para representar algoritmos
pequeos, ya que abarcan mucho
espacio y su construccin es
laboriosa. Por su facilidad de lectura
son usados como introduccin a los
algoritmos, descripcin de un
lenguaje y descripcin de procesos a
personas ajenas a la computacin.

Pseudocdigo

El pseudocdigo (falso lenguaje, el prefijo pseudo significa falso) es una


descripcin de alto nivel de un algoritmo que emplea una mezcla de lenguaje
natural con algunas convenciones sintcticas propias de lenguajes de
programacin, como asignaciones, ciclos y condicionales, aunque no est regido
por ningn estndar. Es utilizado para describir algoritmos en libros y
publicaciones cientficas, y como producto intermedio durante el desarrollo de un
algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante
sobre estos, y es que los algoritmos descritos en pseudocdigo requieren menos
espacio para representar instrucciones complejas.

El pseudocdigo est pensado para facilitar a las personas el entendimiento de un


algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en
una implementacin. Programadores diferentes suelen utilizar convenciones
distintas, que pueden estar basadas en la sintaxis de lenguajes de programacin
concretos. Sin embargo, el pseudocdigo, en general, es comprensible sin
necesidad de conocer o utilizar un entorno de programacin especfico, y es a la
vez suficientemente estructurado para que su implementacin se pueda hacer
directamente a partir de l.

As el pseudocdigo cumple con las funciones antes mencionadas para


representar algo abstracto los protocolos son los lenguajes para la programacin.
Busque fuentes ms precisas para tener mayor comprensin del tema.
Sistemas formales

La teora de autmatas y la teora de funciones recursivas proveen modelos


matemticos que formalizan el concepto de algoritmo. Los modelos ms comunes
son la mquina de Turing, mquina de registro y funciones -recursivas. Estos
modelos son tan precisos como un lenguaje mquina, careciendo de expresiones
coloquiales o ambigedad, sin embargo se mantienen independientes de cualquier
computadora y de cualquier implementacin.

Implementacin

Muchos algoritmos son ideados para implementarse en un programa. Sin


embargo, los algoritmos pueden ser implementados en otros medios, como
una red neuronal, un circuito elctrico o un aparato mecnico y elctrico. Algunos
algoritmos inclusive se disean especialmente para implementarse usando lpiz y
papel. El algoritmo de multiplicacin tradicional, el algoritmo de Euclides, la criba
de Eratstenes y muchas formas de resolver la raz cuadrada son slo algunos
ejemplos.

Variables

Son elementos que toman valores especficos de un tipo de datos concreto. La


declaracin de una variable puede realizarse comenzando con var.
Principalmente, existen dos maneras de otorgar valores iniciales a variables:

1. Mediante una sentencia de asignacin.

2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').

Ejemplo:

...
i:=1;
read(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...

3. Estructuras secuenciales
La estructura secuencial es aquella en la que una accin sigue a otra en
secuencia. Las operaciones se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta el fin del proceso. La asignacin
de esto consiste, en el paso de valores o resultados a una zona de la memoria.
Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La
asignacin se puede clasificar de la siguiente forma:

1. Simples: Consiste en pasar un valor constante a una variable (a 15)

2. Contador: Consiste en usarla como un verificador del nmero de veces que


se realiza un proceso (a a + 1)

3. Acumulador: Consiste en usarla como un sumador en un proceso

(a a + b)

4. De trabajo: Donde puede recibir el resultado de una operacin matemtica


que involucre muchas variables (a c + b*1/2).

Un ejemplo de estructura secuencial, como obtener el rea de un tringulo:

Inicio
...
float b, h, a;
printf("Diga la base");
scanf("%f", &b);
printf("Diga la altura");
scanf("%f", &h);
a = (b*h)/2;
printf("El rea del tringulo es %f", a)
...
Fin

4. ESTRUCTURAS ITERATIVAS
Los algoritmos iterativos son algoritmos que se caracterizan por ejecutarse
mediante ciclos. Estos algoritmos son muy tiles al momento de realizar tareas
repetitivas (como recorrer un arreglo de datos). Casi todos los lenguajes de
programacin modernos tienen palabras reservadas para la realizacin de
iteraciones.

La opcin al uso de algoritmos iterativos es el uso de la recursividad en funciones.


Estas implican una escritura ms sencilla (corta), tanto para su implementacin
como para su entendimiento, pero en contraparte, utilizan mucho ms recursos de
sistema que una iteracin debido a que necesitan, adems del uso del procesador,
la pila del sistema para "apilar" los diversos mbitos de cada funcin.

Ejemplo de uso de un algoritmo iterativo en C

#include <stdio.h>

int main(int argc, char** argcv)


{
for(int i = 1; i <= 10; i++) {
printf("Esta es la vez %d que hago esto!\n", i);
}
return 0;
}

5. RECURSIVOS
Un objeto es recursivo cuando se define en funcin de s mismo, es decir,
interviene en su propia definicin.

La recursividad es la propiedad mediante la cual un subprograma o rutina puede


llamarse a s mismo.

Utilizando la recursividad, la resolucin de un problema se reduce a uno


esencialmente igual pero algo menos complejo.

Caractersticas que deben cumplir los problemas recursivos:

La recursividad debe terminar alguna vez: caso base

Cada nueva formulacin estamos ms cerca del caso final (o base).

6. EFICIENCIA DE ALGORITMOS
En Ciencias de la Computacin, el trmino eficiencia algortmica es usado para
describir aquellas propiedades de los algoritmos que estn relacionadas con la
cantidad derecursos utilizados por el algoritmo. Un algoritmo debe ser analizado
para determinar el uso de los recursos que realiza. La eficiencia algortmica puede
ser vista como anlogo a la ingeniera de productividad de un proceso repetitivo o
continuo.
La importancia de la eficiencia con respecto a la complejidad temporal fue
enfatizada por Ada Lovelace en 1843 como resultado de su trabajo con el motor
analtico mecnico de Charles:

"En casi todo cmputo son posibles una gran variedad de configuraciones para la
sucesin de un proceso, y varias consideraciones pueden influir en la seleccin de
estas segn el propsito de un motor de clculos. Una objetivo esencial es
escoger la configuracin que tienda a minimizar el tiempo necesario para
completar el clculo."

Medidas del uso de recursos

Las medidas de eficiencia son normalmente expresadas en funcin del tamao de


la entrada n.

Las dos medidas ms comunes son:

Complejidad temporal: cuanto se demora un algoritmo en terminar.

Complejidad espacial: cuanta memoria operativa (RAM usualmente) es


requerida por el algoritmo. Esto tiene dos apartados, la cantidad de memoria
que necesita el cdigo y la cantidad que necesitan los datos sobre los que
opera el algoritmo.

Para computadoras cuya energa es por batera (laptops), o para grandes clculos
(supercomputadoras) otras medidas tambin son de inters:

Consumo directo de energa: energa requerida por la computadora.

Consumo indirecto de energa: energa requerida para el enfriamiento, la


iluminacin, etc.

En algunos casos otras medidas podran ser relevantes:


Capacidad de transmisin: el ancho de banda puede llegar a ser un factor
limitante. La compresin de datos es utilizada para reducir la cantidad de datos
a transmitir.

Espacio externo: cantidad de espacio requerido en disco o algn otro


dispositivo externo; esto podra ser solo una necesidad temporal, o sea solo se
requiere dicho espacio mientras est corriendo e algoritmo o podra ser una
necesidad a largo plazo para futuras referencias.

Tiempo de respuesta: Esto es particularmente relevante en tiempo real para


una aplicacin cuando el sistema de la computadora debe responder de forma
rpida a los eventos externos.

Complejidad temporal

Teora

Para analizar un algoritmo generalmente se usa la complejidad temporal para


obtener un estimado del tiempo de ejecucin expresado en funcin del tamao
de la entrada. El resultado es tpicamente expresado en notacin O grande.
Esto suele ser til para comparar algoritmos, especialmente cuando se
necesita procesar una gran cantidad de datos. Estimaciones ms detalladas
se requieren para comparar algoritmos que procesan pequeas cantidades de
datos (de todas formas en estos casos el tiempo no debera ser un problema).
Algoritmos implementados para usar procesamiento paralelo de los datos son
mucho ms difciles de analizar.

En la prctica

Se utilizan benchmarks para medir el uso de un algoritmo. Muchos lenguajes


de programacin presentan funciones para medir el tiempo de uso del
procesador. En casos de algoritmos que se ejecutan en un tiempo
considerablemente largo, dicho tiempo pudiera resultar de inters. El resultado
es generalmente un promedio de los resultados de varias pruebas
consecutivas aplicadas sobre el objetivo.

Este tipo de pruebas son altamente sensibles a configuraciones de hardware y


existe la posibilidad de que otros programas se estn ejecutando al mismo
tiempo en un ambiente capaz de procesar varias tareas a la vez.

Dichas pruebas tambin dependen intrnsecamente del lenguaje de


programacin, el compilador y las opciones del compilador, lo que implica que
dos algoritmos que se comparan debern estar implementados bajo las
mismas condiciones.

Complejidad espacial

Esta seccin se enfoca en el uso de memoria (usualmente RAM) por los


algoritmos mientras son ejecutados. As como la complejidad temporal, explicado
anteriormente, parte del anlisis de un algoritmo se hace va la complejidad
espacial para obtener un estimado del uso de memoria principal expresado
mediante una funcin segn el tamao de la entrada. El resultado es expresado
usualmente en notacin O grande.

Existen 4 aspectos relevantes a considerar:

La cantidad de memoria requerida por el cdigo del algoritmo.

La cantidad de memoria requerida para almacenar los datos de entrada.

La cantidad de memoria requerida para los datos de salida (algoritmos


como los de ordenacin suelen reorganizar los datos de entrada y por ello no
necesitan memoria extra para la salida).

La cantidad de memoria requerida en cuanto a espacio de trabajo del


algoritmo para realizar los clculos y asignaciones (tanto para variables como
cualquier espacio necesario en la pila para almacenar llamadas a subrutinas,
este espacio es particularmente significativo para algoritmos que utilizan
tcnicas recursivas).

Las primeras computadoras electrnicas y computadoras de escritorio, contaban


con muy poca capacidad de memoria operativa. La EDSAC 1949 tena un mximo
de 1024 17-bit words, mientras que la Sinclair ZX80 1980 surgi con solo 1024 8-
bit bytes de memoria operativa.

Las computadoras actuales cuentan con una memoria operativa suficientemente


grande (16 Gb y ms), o sea que obligar a un algoritmo a ejecutarse
reducidamente en cierta cantidad de memoria ya no representa el mismo
problema que sola ser. Pero la presencia de tres categoras diferentes de
memoria pudiera ser significativa:

Memoria Cach (usualmente RAM-esttica): esta pera a una velocidad


comparable a la del CPU.

Memoria fsica principal (usualmente RAM-dinmica): esta pera un tanto


ms lenta que el CPU.

Memoria virtual (usualmente en disco): esta da la impresin de una gran


cantidad de memoria utilizable y opera en el orden de los miles ms lenta que
el CPU.

Un algoritmo cuyas necesidades pueden ser satisfechas con la memoria cach


ser mucho ms rpido que uno que necesite de la memoria principal y en
consecuencia mucho ms rpido que uno que necesita recurrir a la memoria
virtual. Si se quiere profundizar an ms dicho problema, existen sistemas que
tienen hasta tres niveles de memoria cach, con diferentes y variadas velocidades.
Sistemas diferentes tendrn diferentes cantidades asignadas a los tipos de
memoria comentados, lo que conlleva a que las necesidades de memoria de un
algoritmo varen significativamente entre un sistema y otro.
En los das veteranos de las computadoras electrnicas si un algoritmo requera
ms memoria que la brindada por la memoria principal, dicho algoritmo no poda
ser utilizado. En nuestros das la memoria virtual resuelve dichos problemas, bajo
un costo de eficiencia. Un algoritmo que se suple solo de la memoria cach
presenta excelentes resultados en cuanto a velocidad, en estos casos la
optimizacin del espacio repercute de forma relevante en la optimizacin del
tiempo.

7. CONCLUSION
El algoritmo es un conjunto de pasos, instrucciones o acciones que se deben
seguir para resolver un problema. Existen una gran cantidad de algoritmos,
hay que escoger el ms efectivo. Hay dos tipos de algoritmos que son los
cualitativos y cuantitativos, cualitativos son todos aquellos pasos o
instrucciones descritos por medio de palabras que sirven para llegar a la
obtencin de una respuesta o solucin de un problema, y cuantitativos son
todos aquellos pasos o instrucciones que involucran clculos numricos para
llegar a un resultado satisfactorio.

Caractersticas:
Tiene que ser preciso.
Tiene que estar bien definido.
Tiene que ser finito.
La programacin es adaptar el algoritmo al
ordenador.
El algoritmo es independiente segn
donde lo implemente.

8. BIBLIOGRAFIA

1. Aho, A. The Design and Analysis of Computer Algorithms

2. Cormen, T. H., Leiserson, C. E., Rivest, R. L. y Stein, C. Introduction to Algorithms


(2nd Ed.)

3. Brassard, G. y P. Bratley. Fundamentos de Algoritmia, (ISBN 848966000X)

4. Knuth, D. E. The Art of Computer Programming, [quien fue tambin, el creador


del TeX]

5. Mamber, U. Introduction to Algorithms. A Creative Approach

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