Subido por the.skeith

Scorm 1

Anuncio
Comencemos definiendo que es un algoritmo y por que es importante conocerlos a
detalle.
Es importante definir de manera clara y formal que es un algoritmo, pues si queremos
estudiarlos y entenderlos a detalle debemos partir de las mismas definiciones.
Si bien todos tenemos la idea de qué es un algoritmo, realmente no es tan fácil definirlo.
Pausa el video y escribe en tus propias palabras que es un algoritmo?
Coloquialmente un algoritmo es cualquier procedimiento o fórmula que nos ayuda a
resolver un problema.
Formalmente es: una secuencia finita de operaciones bien definidas que pueden ser
implementadas en una computadora, que nos pueden ayudar a resolver problemas.
Un algoritmo no tiene que ser estrictamente implementado en una computadora, basta
con que pueda ser implementado.
Si bien la definición actual de algoritmo está asociada a las computadoras, su existencia es
mucho más vieja.
La palabra y su definición derivan de un científico llamado al-Khwarizmi.
Puede que ya estés familiarizado con este gran científico.
Realmente un algoritmo es cualquier serie de instrucciones que produzcan un resultado
definido.
Un ejemplo típico de que es un algoritmo pueden ser las recetas de cocina.
Pues son una serie de pasos bien definidos y explícitos.
Teóricamente pueden ser ejecutados por una computadora, como una thermomix.
La fórmula para resolver ecuaciones cuadradas, también es un algoritmo.
Pues a través de una serie de pasos definidos implementables en una computadora
podemos utilizarla.
Cualquier programa que implementemos en python o en cualquier lenguaje de
programación es un algoritmo, pues son una serie de pasos bien definidos y ejecutados en
una computadora.
En estricto sentido, no se puede patentar un algoritmo, pues legalmente son considerados
manipulaciones de conceptos abstractos, números o señales. Sin embargo es posible, bajo
ciertas condiciones, patentar la aplicación específica de un algoritmo.
En general, es difícil y controversial patentar algoritmos, pues se consideran parte del
dominio público.
Como podemos imaginarnos existe una infinidad de algoritmos, algunos son famosos y
otros no.
Algunos tienen nombre, y otros se pierden en el repositorio de git de las personas.
Dada la gran cantidad y variabilidad de los algoritmos, es necesario introducir formalidad
al momento de estudiarlos.
Las ciencias en computación se han encargado del estudio formal de los algoritmos
durante las últimas décadas.
Esta rama tiene su origen moderno en las máquinas de Turing, que son una abstracción
creada por el gran científico y humano Alan Turing.
No solo nos ayudó a resolver el código de las fuerzas del eje durante la segunda guerra
mundial, sino también planteó el modelo abstracto de la computadora moderna, sentó las
bases de la inteligencia artificial moderna y contribuyó a decenas de las ramas modernas
de la metamatemática, solo por mencionar algunas contribuciones.
Lamentablemente fue castrado quimicamente por el gobierno pues no era homesexual, lo
que provoco su suicidio a la edad de 41 años. Sin embargo, fue capaz de revolucionar todas
y cada una de las ramas de la ciencia con sus contribuciones.
Básicamente, un algoritmo es cualquier procedimiento que puede ser ejecutado en una
máquina de Turing.
Esta máquina manipula símbolos en una cinta de acuerdo a una serie de reglas o
transiciones finitas.
Formalmente, una máquina de Turing tiene una cinta infinita dividida en celdas que puede
moverse a la izquierda o la derecha.
La máquina cuenta con una aguja que es capaz de leer, y escribir.
El usuario presenta una tabla con instrucciones finitas de que hacer dependiendo del
estado y lo que lea la aguja de la máquina en donde se encuentre.
Esta simple abstracción es capaz de ejecutar cualquier algoritmo que se le ocurra a la
humanidad, y por ello es ampliamente utilizada en el estudio formal de los algoritmos.
Actualmente Turing y una representación tabular de su máquina se encuentran en billete
de 50 libras.
El billete contiene una frase que nos parece muy adecuada en nuestros tiempos con el
advenimiento del internet, inteligencia artificial, y el poder masivo y distribuido de
cómputo que existe en nuestros días.
“Esto es sólo un anticipo de lo que está por venir y solo una sombra de lo que va a ser”
Las ramas de las ciencias en computación que se dedican al estudio de las propiedades
abstractas de algoritmos son conocidas como Computabilidad y Complejidad.
En esta materia nos concentramos en la segunda, el área de la complejidad que se dedica
estudiar qué tan complejos o eficientes son los algoritmos.
Si deseas conocer más acerca de turing, su máquina y la rama de computabilidad te
recomendamos revisar las secciones de material adicional.
Y no te preocupes la teoría y formalidad de las máquinas de turing no serán analizadas en
esta clase ni en los cuestionarios, sin embargo es de suma importancia estar familiarizados
con estos conceptos, pues son el lenguaje y la base de todo lo que veremos en el resto de
la materia.
Además, siempre es bueno tener en cuenta el contexto histórico en el que se desarrollan
las cosas.
Ahora, pasaremos a formalizar la notación Big-O que nos permitirá analizar y comparar la
eficiencia o complejidad de los algoritmos.
Descargar