Vous êtes sur la page 1sur 5

Algoritmo

Conjunto de acciones o secuencias de operaciones ejecutadas en un determinado orden


para resolver un problema.

Complejidad Algoritmos

La resolución práctica de un problema exige por una parte un algoritmo o método de


resolución y por otra un programa o codificación de aquel en un ordenador real.

Ambos componentes tienen su importancia, pero la del algoritmo es absolutamente


esencial, mientras que la codificación puede muchas veces pasar a nivel de anécdota.

A efectos prácticos o ingenieriles, nos deben preocupar los recursos físicos necesarios
para que un programa se ejecute.

Aunque puede haber muchos parámetros, los más usuales son el tiempo de ejecución y
la cantidad de memoria (espacio).

Ocurre con frecuencia que ambos parámetros están fijados por otras razones y se
plantea la pregunta inversa: ¿cuál es el tamaño del mayor problema que puedo resolver
en T segundos y/o con M bytes de memoria?

En lo que sigue nos centramos casi siempre en el parámetro tiempo de ejecución, si bien
las ideas desarrolladas son fácilmente aplicables a otro tipo de recursos.

Para cada problema determinaremos una medida N de su tamaño (por número de datos)
e intentaremos hallar respuestas en función de dicho N.

El concepto exacto que mide N depende de la naturaleza del problema.

Así, para un vector se suele atizar como N su longitud; para una matriz, el número de
elementos que la componen; para un grafo, puede ser el número de nodos (a veces es
más importante considerar el número de arcos, dependiendo del tipo de problema a
resolver), en un archivo se suele usar el número de registros, etc.

Es imposible dar una regla general, pues cada problema tiene su propia lógica de coste.

Tipos de Algoritmos

 Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
 Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los
pasos del proceso.

(buscar)
Tiempo de ejecución de un algoritmo

El tiempo de ejecución de un programa en función de N(numero de datos) se denomina


T(N) y se calcula sobre el código contando las instrucciones a ejecutar y multiplicando
por el tiempo requerido para cada instrucción.

Ejemplo:

S1; (sentencia = s)

For (int i = 0; i < N; i++)

S2;

Requiere: T(N) = t1 + t2 * N

Los algoritmos bien estructurados combinan las sentencias de algunas de las formas
siguientes:

A) Sentencias sencillas. Contempla las sentencias de asignación, entrada y salida de


datos y tienen una complejidad constante que se establece Orden 1 = O(1).

B) Secuencia de sentencias. La complejidad de ella es la suma de las complejidades


individuales de cada una de ellas. O(1).

C) Decisión (if). Una condición es de complejidad O(1) ya sea en la rama then o en la


rama else.

D) Decision multiple (switch case). Se tomara la complejidad de la peor de las ramas.

E) Bucles de contador explicito (for). Si se realiza un numero fijo de veces


independientemente de N sera el siguiente.

F) Ciclos anidados:

Ejemplo:

For (i = 0; i < N; i++)

{For (j = 0; j<N; j++)

{algo de O(1)}

N * N * O(1) = O(n2)

G) Llamada a procedimiento. Su complejidad depende del contenido de las


instrucciones que formen el cuerpo del procedimiento.
Selección de un algoritmo

Una de las características primordiales en la selección de un algoritmo es que este sea


sencillo de entender calcular codificar y depurar, así mismo que utilice eficientemente
los recursos del ordenador y se ejecute con la mayor rapidez posible con un eficaz uso
de memoria dinámica y estática.

También para seleccionar correctamente el mejor algoritmo es necesario realizar estas


preguntas:

¿Qué grado de orden tendrá la información que vas a manejar?

Si la información va a estar casi ordenada y no quieres complicarte, un algoritmo


sencillo como el ordenamiento burbuja será suficiente. Si por el contrario los datos van
a estar muy desordenados,

un algoritmo poderoso como Quicksort puede ser el más indicado. Y si no puedes hacer
una presunción sobre el grado de orden de la información, lo mejor será elegir un
algoritmo que se comporte de manera similar en cualquiera de estos dos casos extremos.

 ¿Qué cantidad de datos vas a manipular? Si la cantidad es pequeña, no es


necesario utilizar un algoritmo complejo, y es preferible uno de fácil
implementación. Una cantidad muy grande puede hacer prohibitivo utilizar un
algoritmo que requiera de mucha memoria adicional.

 ¿Qué tipo de datos quieres ordenar? Algunos algoritmos sólo funcionan con un
tipo específico de datos

(enteros, enteros positivos, etc.) y otros son generales, es decir, aplicables a cualquier
tipo de dato.

 ¿Qué tamaño tienen los registros de tu lista? Algunos algoritmos realizan


múltiples intercambios

(burbuja, inserción). Si los registros son de gran tamaño estos intercambios son más
lentos.
5 Algoritmos de la vida real

1. Para ir a la escuela 4. Para encender una


1. Levantarme a las 5. computadora
2. Preparar desayuno.
3. Desayunar. 1. Conectar el regulador.
4. Desvestirme. 2. Encender el regulador.
5. Bañarme. 3. Encender el PC.
6. Vestirme. 4. Encender el monitor.
7. Lavarme los dientes. 5. Esperar a que inicie el S.O.
8. Peinarme. 6.
9. Salir de casa.
10. Esperar el camión.
11. Subirme en el camión. 5. Para lavar la ropa en la
12. Bajarme del camión. lavadora
13. Dirigirme a la escuela. 1. Separar la ropa.
2. Encender la lavadora.
3. Meter la ropa.
4. Llenarla con agua.
2. Para conducir un automóvil 5. Agregar detergente.
automático 6. Elegir el ciclo de lavado.
7. Esperar a que termine de.
1. Saber manejar. lavar.
2. Contar con licencia. 8. Tirar el agua con jabón.
3. Encender el coche. 9. Llenar de nuevo con agua.
4. Poner la caja de velocidades en 10. Enjuagar.
D. 11. Tirar el agua.
5. Dirigirlo con el volante. 12. Centrifugar.
6. Apagar el coche. 13. Sacar la ropa.
14. Tender la ropa.
3. Para quemar un archivo en un
DVD

1. Encender la computadora.
2. Abrir un programa para quemar
archivos.
3. Seleccionar el archivo que se
quemara.
4. Insertar un DVD vacio.
5. Elegir el quemador.
6. Seleccionar grabar.
7. Sacar DVD.
8. Probar si se guardo la
información.

Vous aimerez peut-être aussi