¿Conoces la papiroflexia? Si te das cuenta, para llegar a ese resultado se siguieron pasos exactos, si no, no se tendría ese efecto, quedaría con una forma distinta a la que se pretendía llegar.
Esta es la importancia de la etapa de análisis para recabar la información necesaria que indique una acción para la solución de un problema. De esta manera la definición de computabilidad mediante algoritmos interpreta un fenómeno a través de un cúmulo de reglas establecidas.
Por eso, en este tema se estudiarán los diferentes métodos de ordenación y búsqueda, de uso frecuente en la solución de problemas de negocios, por lo que se hace indispensable su comprensión.
Si te interesa continuar con el tema te invito a seguir estudiando.
Jaramillo, J. (2017). Papiroflexia [fotografía]. Tomada de https://www.flickr.com/photos/georigami/35240044402/
El análisis del problema es un proceso para recabar la información necesaria y emprender una acción que lo solucione.
Diversos problemas requieren algoritmos diferentes. Un problema puede llegar a tener más de un algoritmo que lo solucione, mas la dificultad se centra en saber cuál está mejor implementado; es decir, que tenga un tiempo de ejecución óptimo, dependiendo del tipo de datos a procesar. En este sentido, para determinar el rendimiento de un algoritmo se deben considerar dos aspectos:
•Cantidad de datos de entrada a procesar.
•Tiempo necesario de procesamiento.
El tiempo de ejecución depende del tipo de datos de entrada, clasificados en tres casos, que se presentan a continuación. Pulsa en cada concepto para desplegar la información correspondiente.
Datos de entrada con las mejores condiciones. Ejemplo: que el conjunto de datos se encuentre completamente ordenado.
Conjunto estándar de datos de entrada. Ejemplo: que el 50 % de los datos esté ordenado y el 50 % restante no.
Datos de entrada más desfavorable. Ejemplo: que los datos se encuentren completamente desordenados.
Mediante el empleo de fórmulas matemáticas es posible calcular el tiempo de ejecución del algoritmo y conocer su rendimiento en cada uno de los casos ya presentados; sin embargo, hay algunos inconvenientes para no determinar con exactitud ese rendimiento:
No obstante lo anterior, en la mayoría de los casos es factible calcular el tiempo de ejecución de un algoritmo, de modo que se puede seleccionar el algoritmo con mejor rendimiento para un problema específico.
Una de las funciones principales de la computación ha sido la solución de problemas a través del uso de la tecnología. Pero esto no ha logrado realizarse en la totalidad de los casos, debido a la computabilidad, característica que tienen ciertos problemas de poder resolverse a través de un algoritmo; por ejemplo, una máquina de Turing.
Con base en esta propiedad, los problemas se dividen en tres categorías: irresolubles, solucionables y computables (estos últimos son un subconjunto de los segundos).
Los problemas computables se representan a través de lenguaje matemático o con la definición de algoritmos. Es importante mencionar que todo problema calificado como computable debe resolverse con una máquina de Turing.
Por lo tanto, los problemas computables son decidibles o de decisión.
Problema de decisión
Se dice que un problema es decidible cuando se resuelve en un número finito de pasos por un algoritmo que recibe todas las entradas posibles para dicho problema. El lenguaje con el que se implementa tal algoritmo se denomina lenguaje decidible o recursivo.
Al contrario, un problema no decidible es aquél que no puede solucionarse por un algoritmo en todos sus casos, ni su lenguaje asociado puede ser reconocido por una máquina de Turing.
La computabilidad es muy importante, puesto que ayuda a resolver problemas mediante el algoritmo de la máquina de Turing, y a interpretar un fenómeno a través de un cúmulo de reglas establecidas.
Se ha clasificado a los algoritmos de diversas formas; algunos por sus atributos, ya sea por la estrategia que se utiliza para llegar a un resultado o por su función. Pulsa en cada concepto para desplegar la información correspondiente.
Son todos aquellos algoritmos que te ayudan a solucionar problemas de la vida cotidiana y de los cuales sigues su metodología sin percibirlo de forma consciente, como en el siguiente ejemplo:
Algoritmo para cambiar una llanta ponchada:
Paso 1: poner el freno de mano del automóvil.
Paso 2: sacar el gato, la llave de cruz y la llanta de refacción.
Paso 3: aflojar los birlos de la llanta con la llave de cruz.
Paso 4: levantar el auto con el gato.
Paso 5: quitar los birlos y retirar la llanta desinflada.
Paso 6: colocar la llanta de refacción y colocar los birlos.
Paso 7: bajar el auto con el gato.
Paso 8: apretar los birlos con la llave de cruz.
Paso 9: guardar la llanta de refacción y la herramienta.
Resultado: llanta de refacción montada.
Las funciones recursivas son aquellas que hacen llamadas a sí mismas en su definición, simplificando los valores originales de entrada. Se implementan cuando el problema a resolver puede simplificarse en versiones más pequeñas del mismo problema, hasta llegar a casos sencillos de fácil resolución.
Los primeros pasos de una función recursiva corresponden a la cláusula base, que es el caso conocido hasta donde la función descenderá para comenzar a regresar los resultados y llegar a la función con el valor que la invocó.
Al utilizar matrices o bases de datos, las tareas que se utilizan con más frecuencia son la ordenación y la búsqueda de los datos, para las cuales existen diferentes métodos más o menos complejos, según lo rápidos o eficaces que sean.
Algoritmos de búsqueda
•Secuencial: este método de búsqueda, también conocido como lineal, es el más sencillo. Consiste en buscar desde el principio de un arreglo desordenado el elemento deseado y continuar con cada uno de los elementos del arreglo hasta hallarlo, o hasta que haya llegado al final del arreglo y terminar.
•Dinámica o dicotómica: para este tipo de búsqueda es necesario que el arreglo esté ordenado. El método consiste en dividir el arreglo por su elemento medio en dos subarreglos más pequeños y comparar el elemento con el del centro. Si coinciden, la búsqueda termina. Cuando el elemento es menor se busca en el primer subarreglo, y si es mayor en el segundo. Revisa el ejemplo.
Algoritmo de ordenación
•Quick sort: el algoritmo de ordenación rápida es fruto de la técnica de solución de algoritmos divide y vencerás, la cual se basa en la recursión: dividir el problema en subproblemas más pequeños, solucionarlos cada uno por separado (aplicando la misma técnica) y al final unir todas las soluciones. Revisa el ejemplo.
Es fundamental recabar la información necesaria para indicar una acción que solucione un problema de forma adecuada, puesto que permite calcular el rendimiento del algoritmo a través de la cantidad de datos a procesar y el tiempo que tarde su procesamiento. Asimismo, la compresión de conceptos, como computabilidad, es muy importante, ya que ayuda a resolver problemas mediante el algoritmo de la máquina de Turing, y a interpretar un fenómeno a través de un cúmulo de reglas establecidas.
En cuanto a la clasificación de algoritmos se encuentran la recursividad, que es cuando una función se invoca repetidamente a sí misma hasta encontrar un resultado base y éste retorna a la función que la invocó; y los métodos de ordenación y búsqueda, que ordenan los datos para su mejor manipulación y facilitan la tarea a los usuarios de la información; además, simplifican su búsqueda y el acceso a un elemento determinado.
Actividad. Clasificando algoritmos
¿Qué tan útil resulta hoy en día computarizar los problemas? ¿Te has puesto a pensar en cuánto te ahorra en tiempo? ¿Sabes si lo utilizas en tu vida cotidiana? Es por ello que esta actividad te ayudará a reforzar los conceptos básicos del tema.
Autoevaluación. Análisis de algoritmos
Tener un buen nivel de comprensión para lograr analizar la información que se te proporciona día con día te ayuda a solucionar de forma adecuada los problemas que se te presentan; algunos de estos problemas son cotidianos y otros de carácter técnico, para los cuales se necesita de la construcción de modelos matemáticos. En la siguiente autoevaluación podrás identificar tu nivel de comprensión del tema.