El Problema
En ciencia computacional teórica, un problema abstracto o problema computacional es una relación entre un conjunto de instancias y un conjunto de soluciones. Un problema abstracto permite establecer formalmente la relación deseada entre entre la entrada de un algoritmo y su salida. Una solución algorítmica a un problema abstracto consiste de un algoritmo que por cada instancia delproblema calcula al menos una solución correspondiente –en caso de haberla– o expide un certificado de que no existe solución alguna. Un problema abstracto se convierte en un problema concreto cuando las instancias y soluciones están codificadas en forma de lenguajes formales.
Los problemas abstractos suelen definirse en dos partes: en la primera se describe al conjunto de instancias y en la segundase describe la solución esperada para cada instancia. Por ejemplo, el problema de ordenación de números enteros se suele definir como sigue:
Entrada: Una sucesión finita de números enteros
Salida: Una permutación de la sucesión de entrada tal que
Aquí tanto el conjunto de instancias y el de soluciones es el mismo, pues se trata del conjunto de todas las sucesiones finitas de números enteros.La relación que hay entre ellos asigna a cada sucesión la única permutación tal que. Por ejemplo, tiene como solución a . Una solución algorítmica al problema de ordenamiento es el ordenamiento de burbuja.
Algoritmos. Definición
Un algoritmo se puede definir como una secuencia de instrucciones que
representan un modelo de solución para determinado tipo de problemas. O
bien como unconjunto de instrucciones que realizadas en orden conducen a
obtener la solución de un problema.
Para realizar un programa es conveniente el diseño o definición previa del
algoritmo. El diseño de algoritmos requiere creatividad y conocimientos
profundos de la técnica de programación. Luis Joyanes, programador experto y
autor de muchos libros acerca de lógica y programación nos dice “en la cienciade la computación y en la programación, los algoritmos son más importantes
que los lenguajes de programación o las computadoras. Un lenguaje de
programación es sólo un medio para expresar un algoritmo y una computadora
es sólo un procesador para ejecutarlo”.
Loa algoritmos son independientes de los lenguajes de programación. En cada
Problema el algoritmo puede escribirse y luego ejecutarse enun lenguaje
diferente de programación. El algoritmo es la infraestructura de cualquier
solución, escrita luego en cualquier lenguaje de programación.
Características de los algoritmos
· Preciso. Definirse de manera rigurosa, sin dar lugar a ambigüedades.
· Definido. Si se sigue un algoritmo dos veces, se obtendrá el mismo
resultado.
· Finito. Debe terminar en algún momento.
· Puedetener cero o más elementos de entrada.
· Debe producir un resultado. Los datos de salida serán los resultados de
efectuar las instrucciones.
Se concluye que un algoritmo debe ser suficiente para resolver el problema.
Entre dos algoritmos que lleven a un mismo objetivo, siempre será
preferible el más corto (se deberá analizar la optimización de tiempos y / o
recursos).
Etapas para la soluciónde un problema por medio del computador
1. Análisis del problema, definición y delimitación (macroalgoritmo).
Considerar los datos de entrada, el proceso que debe realizar el
computador y los datos de salida.
2. Diseño y desarrollo del algoritmo (se utiliza pseudocódigo, escritura
natural del algoritmo, diagramas de flujo, etc. )
3. Prueba de escritorio. Seguimiento manual de los pasosdescritos en el
algoritmo. Se hace con valores bajos y tiene como fin detectar errores.
4. Codificación. Selección de un lenguaje de programación y digitación del
pseudocódigo haciendo uso de la sintaxis y estructura gramatical del
Lenguaje seleccionado.
5. Compilación o interpretación del programa. El software elegido convierte
las instrucciones escritas en el lenguaje a las comprendidas por...
Regístrate para leer el documento completo.