Tabla de Contenidos:
¿Necesidad? ……………………………………………………………………………..
Qué es un Algoritmo…...………………………………………………………………..
Ejemplo de algoritmo 1 ..…………………………………………………….. ...............
Todo algoritmo es divisible …………………………………………………..................
Procesos e insumos en el algoritmo .……………………………………………............
Ejemplo de algoritmo 2 ...……………………………………………………................
Eficiencia ..…………………………………………………………………….…..........
Calidad ..…………………………………………………………………………............
Metáfora de la fábrica …………………………………………………………………..
En un programa de computo se maneja información y la información se agrupa en diferentes tipos de datos. Cada tipo de dato agrupa un conjunto de posibles valores que conforman parte de la información que se maneja en una computadora.
¿Necesidad?
Una necesidad puede ser vital (algo de vida o muerte) o relacionarse a un simple deseo. Así, una persona va al cine para satisfacer su necesidad de ocio.
Una necesidad constituye un problema para el ser humano.
Un problema ocupa una solución.
Toda solución requiere una serie de acciones a ejecutar para poder resolverle, esto es un "algoritmo".
Qué es un Algoritmo?
Un algoritmo es la ejecución de acciones en un orden específico (Deitel, Paul J. Harvey M Deitel, and Alfonso Vidal Romero Elizondo. Java. 1st ed. México. D.F.: Pearson Education. 2008. Print).
Un algoritmo es una secuencia de pasos debidamente organizados que, si se siguen, se puede concretar una tarea u objetivo.
De hecho, si usted sigue la misma secuencia de pasos muchas veces, llegará al mismo resultado.
Otra forma de ver al algoritmo es como la lógica con la que se va a resolver el problema.
Un algoritmo es:
- Ordenado: Cuenta con un orden específico para ejecutar cada paso.
- Consistente: Si se ejecuta varias veces con los mismos datos de entrada, su resultado debe ser siempre el mismo.
- Finito: La cantidad de pasos a ejecutar nunca son infinitos.
Un algoritmo puede descomponerse (estar compuesto) de muchos otros algoritmos. Difícilmente un algoritmo sea indivisible en subalgoritmos; de hecho, a la hora de resolver un problema, se busca dividir el problema en problemas más pequeños para resolverlos poco a poco de una manera sencilla.
La solución de todas las partes de un problema implica la solución del problema como un todo.
¡Divide y Vencerás!
Ejemplo de algoritmo 1
Siempre un algoritmo será creado por una necesidad.
Necesidad: Prepararse y llegar al trabajo a las 8 de la mañana.
Algoritmo: (Pasos a ejecutar)
1. Levantarse a las 5:00 am.
2. Tender la cama.
3. Bañarse.
4. Vestirse y alistarse.
5. Preparar el desayuno.
6. Desayunar.
7. Viajar al trabajo.
El caso 1 es ordenado porque sus pasos están colocados en una forma en la que sean posibles de ejecutar y la sucesión de acciones genere un buen resultado.
Se dice que un problema tiene muchas soluciones porque existen diferentes algoritmos que lo resuelven.
De hecho, el caso 1 se puede plantear de otras formas viables y cada una es un algoritmo distinto y ordenado. Por tanto, diversos algoritmos pueden llegar al mismo resultado.
Ejemplos:
Todos los algoritmos anteriores están ordenados, tal que si se siguen sus pasos se obtiene un resultado válido y, en estos ejemplos, casualmente es el mismo resultado.
Los algoritmos que logran el mismo resultado pueden ser diferenciados porque su secuencia de pasos es diferente; por ejemplo, en el Algoritmo 1 se "tiende la cama primero" y luego se "baña", mientras que en el Algoritmo 2 se "baña" y luego se "tiende la cama".
Nótese que estos dos algoritmos tienen exactamente la misma cantidad de pasos pero su orden
varía.
Por otro lado, al comparar el algoritmo 1 con el 3, se puede notar una diferencia en el orden de pasos pero también la ausencia del paso "tender la cama".
Por tanto, dos algoritmos que logran el mismo resultado son diferentes si:
- . La cantidad de pasos varía tal que uno tiene más pasos que el otro.
- El orden de los pasos existentes en cada algoritmo es diferente para cada uno.
- Una combinación de los dos puntos anteriores.
No toda secuencia de pasos es un algoritmo. Se pueden construir secuencias de pasos que no sirvan para nada, si su enumeración de actividades no es eficaz para lograr el objetivo en los términos deseados.
Algunos casos inútiles del ejemplo 1 serían:
En la secuencia 1, no tiene sentido decir que primero se "baña" y "tiende la cama" pero luego se "levanta de la cama".
En la secuencia 2, no tiene sentido decir que primero se "viste y alista" y luego se "baña".
Finalmente,
en la secuencia 3, no tiene sentido decir que primero se va al trabajo y luego hace el resto de actividades.
El caso 1 es consistente porque cada vez que se ejecute el algoritmo siempre se obtendrá el mismo resultado.
Si una secuencia de pasos se ejecuta dos o más veces con las mismos insumos o recursos y se obtienen resultados diferentes en al menos una ejecución, esa ejecución de acciones no es consistente y, por tanto, no es un algoritmo.
El caso 1 es finito porque la cantidad de pasos a ejecutar tiene fin. Si una secuencia de pasos se torna infinita, deja de ser un algoritmo.
Todo algoritmo es divisible.
Nótese que un algoritmo como el del caso 1 se puede dividir (o está compuesto) de varios algoritmos más pequeños. Por ejemplo, el simple hecho de "preparar la comida" implica toda una secuencia de actividades (algoritmos), tales como:
1. buscar una receta de cocina
2. buscar los alimentos que ocupa para preparar la comida según la receta
3. lavar los alimentos que lo requieran
4. Etc.
Y, aun así, si tomamos una sola de esas actividades que componen a "preparar la comida", se podrán definir nuevos algoritmos. Por ejemplo, la sola actividad "buscar una receta de cocina" puede implicar:
1. buscar el celular con el cual poder acceder a Internet.
2. Encender el dispositivo.
3. Buscar un navegador de Internet y un buscador e Internet como
Google o Yahoo!.
4. Digitar "recetas para desayuno" en el buscador
5. Etc...
Procesos e insumos en el algoritmo
La secuencia de pasos válida del algoritmo, incluye pasos utilizados para conseguir o agregar insumos o material de trabajo y pasos que son ejecuciones de procesos que usan los insumos para obtener resultados.
En el ejemplo del "preparar el desayuno", se debe conseguir la receta como un insumo y al obtener la receta se descubrirán otros insumos que se van a requerir y obtener los alimentos y equipo para cocinar.
Con todos esos insumos se van a preparar los alimentos según la receta.
Los insumos de un algoritmo se obtienen a lo largo de la ejecución de su secuencia de pasos y en el momento en que se requiera. Algunos insumos se ocupan en todo el proceso, pero otros solo en ciertas partes (en ciertos subalgoritmos).
Se pueden ejecutar todos los pasos del algoritmo, tanto los de recuperación de insumos como los de insumos, pero si los insumos cambian, el resultado puede variar. Esto está contemplado dentro del concepto de consistencia.
Recuérde que la consistencia implica que si usted ejecuta el algoritmo exactamente igual (incluyendo los mismos insumos), entonces el resultado debe ser siempre el mismo.
El ejemplo más sencillo para entender esto es un algoritmo para hacer una receta. Suponga el siguiente algoritmo:
1. Obtener los siguientes insumos: un pescado (a su gusto), una naranja,
dos ajos, una cebolla pequeña, tomillo, sal y pimienta negra.
2. Desempaquetar y lavar lo que sea requerido.
3. Picar el ajo, hacer aros de cebolla y sofreír en el sartén.
4. Cortar el pescado, agregarle sal y pimienta y colocarlo en el sartén.
5. Tapar el sartén y esperar a que se cocine
6. Cada 5 minutos darle vuelta a las piezas de pescado hasta que estén
listas para su consumo.
Usted puede ejecutar este algoritmo muchas veces, pero si cambia de tipode pescado, el resultado final será muy diferente. Así que el resultado del algoritmo no solo depende de ejecutar todos los pasos de procesos y de insumos, sino en el insumo elegido. Por otro lado, siempre que usted elija los
mismos insumos (el mismo tipo de pescado), el resultado debe ser consistente.
Entonces un algoritmo puede dar diferentes resultados, según la configuración de insumos que se le suministren, pero será consistente para la misma configuración de insumos.
Un algoritmo debe ser suficientemente claro y preciso para que pueda ser seguido al pie de la letra y no debe dejar ningún tipo de dudas.
Ejemplo de algoritmo 2
Siempre un algoritmo será creado por una necesidad.
Necesidad: Desplazarse desde San José a Habitaciones La Amistad.
Algoritmo 1: Seguir la ruta con línea azul supone 130 Kilómetros.
Algoritmo 2: Seguir la ruta con línea morada supone 145 Kilómetros.
Algoritmo 3: Seguir la ruta con línea anaranjada supone 165 Kilómetros.
¿Se puede asumir que la ruta más corta es la mejor?
Si las otras dos rutas sirven para vehículos de tracción sencilla y la más corta es sólo para vehículos 4X4, la ruta más corta es la menos eficiente en caso de que se cuente con un vehículo de tracción sencilla.
Note que incluso esta opción (algoritmo) pasa a ser inválida porque no se cuenta con el equipo necesario (insumos).
Si la ruta más corta es solo para vehículos 4X4 y se cuenta con un vehículo así pero la ruta es de muy difícil acceso, podría ser que la ruta de duración media sea más eficiente en términos del tiempo de llegada y sufrimiento del vehículo (que implica un gasto importante), si ésta es una ruta más accesible.
Aún si la ruta más corta y la mediana son opciones ideales para cualquier vehículo, pero en un momento dado hay un accidente en el camino entre Zona Fluca y Santa Clara, tal que se ocupa hacer un cierre total de esa sección de la vía por tres días, la ruta más larga pasa a ser la mejor opción
durante ese periodo pues en las otras tendría que dejar el carro antes del cierre y caminar.
Supóngase que la ruta más corta es la mejor en cuánto a maltrato del vehículo y tiempo de acceso, pero se cree que está inaccesible y no se puede confirmar con certeza.
Si se sabe que intentar recorrerla y fracasar en el intento resulta más caro en tiempo, dinero y maltrato del vehículo, por tener que regresar y tomar otra ruta, la mejor opción será tomar la segunda mejor ruta conocida, suponiendo que se tiene conocimiento de que está accesible.
Si se trata de un viaje de turismo y aventura, interesará mejorar el aspecto del paisaje, si el cliente lo desea así. Podría ocurrir que la ruta que más maltrata al vehículo e incluso que toma más tiempo (desventaja), sea la mejor para ese fin.
Podría tener mayor duración (en favor de la satisfacción del cliente) y mejores vistas (ventajas). Aunque como resultado el viaje podría ser más costoso para el turista (desventaja).
Eficiencia
Al revisar este análisis y observar que hay una diversidad de algoritmos viables y capaces de dar un mismo resultado, es fácil comprender que:
1. Existen algoritmos menos, más e igual eficientes que otros.
2. No necesariamente una menor cantidad de pasos implica mayor
eficiencia en el algoritmo.
3. Un algoritmo en un contexto dado puede ser la más eficiente de todos
pero, en un contexto diferente, podría incluso ser muy ineficiente.
4. La eficiencia global no existe pero si existe en un área bien delimitada; por tanto, dados dos algoritmos que producen un mismo resultado, el primero puede ser el más eficiente en el aspecto 1 y el segundo en el aspecto 2.
Por ejemplo, uno se ejecuta más rápido pero el otro gasta menos recursos. Al final es un tema de ventajas y desventajas.
La eficiencia está delimitada al contexto y a las necesidades particulares de un espacio temporal dado. Un algoritmo se especializará en uno o varios aspectos; a menor cantidad de aspectos en los que se especializa un algoritmo, mejor será su especialización.
A mayor cantidad de aspectos en los que se especializa un algoritmo, menor será su especialización porque deberá distribuir recursos y esfuerzos entre una mayor cantidad de aspectosa especializar.
Por tanto, si se habla de eficiencia en el algoritmo, se debe preguntar ¿eficiencia en que aspecto o en qué términos?
Por ejemplo, un algoritmo puede ser eficiente en:
- La duración de ejecución de todos sus pasos.
- Ahorro de espacio.
- Gasto de recursos.
- Facilidad de comprensión o puesta en ejecución.
Entonces... ¿Qué ocupo para hacer un buen algoritmo?
Se necesita comprender la necesidad contextualizada en el momento y espacio en que debe brindarse la solución y por el tiempo en que esta deba mantenerse vigente (ver a futuro).
Recuerde que a través del tiempo las necesidades cambian, desaparecen y surgen nuevas. Sus algoritmos deben ser, en la medida de lo posible, flexibles pero no caer en exageraciones que le hagan ineficiente.
Usted necesita:
- Conocer muy bien el objetivo que persigue con la solución.
- Contabilizar los insumos que ocupa y su estado o configuración.
- Comprender los procesos que requiere hacer con dichos insumos.
- Determinar los resultados específicos que necesita.
- Definir el espacio y tiempo en que toma lugar el proceso (ejecución dealgoritmo) y en el que se requiere la solución (como producto final).
- Tomar en cuenta a los individuos que intervienen o podrían intervenir en los diversos procesos y sus necesidades particulares (inclusión).
- Pensar cualquier otra condición que acompaña a la necesidad y su proceso de resolución. Esto es la realidad o contexto.
- Determine los posibles riesgos o fallas que puedan presentarse.
- Identifique las mejores prácticas que puede utilizar para crear el algoritmo y para incluir las mejores prácticas posibles en el algoritmo mismo (no solo en su creación).
Para crear un algoritmo, evaluar o valorar uno existente, y para comparar un algoritmo con otro, usted básicamente necesita tomar en cuenta los siguientes elementos:
1. Requerimientos (insumos y condiciones): lo que se ocupa para ejecutarlo.
2. Limitaciones: lo que puede hacerse con dicho algoritmo o en lo que se puede usar. Es importante entender hasta donde se puede llegar con el algoritmo y que queda fuera de su alcance.
3. Ventajas.
4. Desventajas.
5. Riesgos: posibles fallas o errores que puedan ocurrir durante el proceso.
6. Costos: en mano de obra, materiales, tiempo, dinero.
7. Tiempos de respuesta: velocidad de respuesta
Y por supuesto la calidad del resultado.
Calidad
La calidad es un elemento muy subjetivo y que está sujeto a un contexto, espacio y rango de tiempo dado, pero también está sujeto al deseo de aquel o aquellos que tengan la necesidad para la cual se desarrolla el algoritmo, o al menos para quién paga ese desarrollo.
Muchas veces la persona o empresa que provee la solución, no es quién tiene la necesidad. Por ejemplo, un programador hace un sistema para contadores o para abogados, sistemas de salud o administración de bodegas, también los hay para gestión de recursos humanos, finanzas, juegos y muchos otros.
El programador hace esos sistemas para usuarios que lo necesitan, pero no para sí mismo. Es importante reconocer que todo programa de computo es en sí un algoritmo, si está bien hecho.
"La informática no es un fin en sí misma, es un medio para servir a
otras áreas del conocimiento" Dra. Yadira Solano Sabatier
Si otros son los dueños de la necesidad, serán estos los que finalmente definan lo que les representan la calidad en el producto que esperan.
Un algoritmo puede ser ineficiente en uno o varios aspectos desde el punto de vista del que lo crea, pero si el dueño final del producto lo desea así, ese producto será de calidad.
Sin embargo, el creador del algoritmo nunca debe omitir sus prudentes advertencias durante el desarrollo del algoritmo.
Debe quedar claro que aquel que ejecute o use el algoritmo, es quién debe indicar cómo debe ser la solución, aun cuando cuente con la ayuda del experto en algoritmos que le guíe.
El experto siempre dará opciones (diferentes algoritmos) y recomendaciones explicando las ventajas y desventajas de cada opción.
Metáfora de la fábrica
Se puede concebir al algoritmo como una fábrica, en la que entra materia prima (insumos), se ejecuta un proceso y se retorna un producto resultante.
Tal como en una fábrica, el algoritmo ocupa el ingreso de materia prima con la cual trabajar. Esto se conoce como Entrada.
Tal como en una fábrica, el algoritmo implica un proceso que sufre la materia prima para ser transformada en otra cosa. Esto se conoce como Proceso. Tal como en una fábrica, el algoritmo produce un resultado. Esto se conoce como Salida.
Al igual que en la fábrica, la variedad de insumos que se requieren para los diversos procesos que se ejecutan, ingresan en distintos momentos durante la ejecución del proceso.
De igual manera, los productos resultantes pueden ser finalizados en diversos momentos del proceso. Al igual que una fábrica puede producir diversos resultados un algoritmo puede hacerlo.
Espero que con esta explicación te haya quedado super claro qué es un algoritmo. Saludos!.
No hay comentarios. :
Publicar un comentario
Agradezco tus comentarios...