Google

Avizora - Atajo Google


 

Avizora Atajo Publicaciones Noticias Biografías

Computación / Computation

Algoritmo. Algoritmo informático / Algorithm. Computer science algorithm

Ir al catálogo de monografías
y textos sobre otros temas

Glosarios - Biografías
Textos históricos

ENLACES RECOMENDADOS:

- Kas, Megas y Gigas: Unidades de cantidad...
- Historia de la computación
-
Del ábaco a la tarjeta perforada

- Computación Evolutiva
-
Computadora. Problemas más frecuentes

 

Google

Avizora - Atajo Google
 

 

 


Contenidos disponibles en español y en inglés - Availables resources in spanish and english. Compilador / Compiler: Jorge Tobías Colombo


. Algorithm (English)


. El algoritmo informático (Español)

Algoritmo
(Español)

Conjunto de instrucciones que aplicado a un número finito de datos, después de un número finito de iteraciones entrega un resultado.

Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una tarea o resolver un problema. En la vid cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas como por ejemplo para poner una lavadora (conjunto de instrucciones pegadas en la tapa de la máquina), para tocar música (partituras), para construir un aeroplano a escala (expresados en las instrucciones), para hacer trucos de magia (pasos para hacer el truco) o, incluso, para hacer recetas de cocina (pasos de la receta). Otros ejemplos, como el algoritmo de la división para calcular el cociente de dos números o el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos pertenecen al ámbito de las matemáticas.

De un modo más formal, un algoritmo es una secuencia finita de instrucciones realizables, no ambiguas, cuya ejecución conduce a una resolución de un problema.

Otra definición de algoritmo es la siguiente: Un algoritmo es una metodología para resolver un problemas mediante una serie de fases o etapas precisas, definidas y finitas.

El algoritmo nos da la solución genérica a un problema y lo podremos emplear todas las veces que se nos presente ese mismo problema: por ejemplo el algoritmo de la división es genérico e independiente de los números que tengamos que dividir.

Una vez descubierto un algoritmo para efectuar una tarea, la realización de ésta ya no requiere entender los principios en que se basa dicho algoritmo, pues el proceso se reduce a seguir las instrucciones del mismo. Por ejemplo, podemos hacer una división siguiendo el algoritmo sin entender por qué funciona el algoritmo. La inteligencia requerida para llevar a cabo la tarea está codificada en el algoritmo.

Las máquinas algorítmicas son aquellas capaces de llevar a cabo algoritmos, y entre ellas están los ordenadores. En el ámbito de los ordenadores, los algoritmos se expresan como programas. Los programas son algoritmos codificados con un lenguaje no ambiguo cuya sintaxis y semántica "entiende" el ordenador. . Hay muchos lenguajes de programación de ordenadores, entre ellos, Fortran, PASCAL, C...

Así pues, si queremos que un ordenador efectúe una tarea, primero debemos descubrir un algoritmo para llevarla a cabo; programar el algoritmo en la máquina consiste en representar ese algoritmo de modo que se pueda comunicar a una máquina. En otras palabras, debemos transformar el algoritmo conceptual en un conjunto de instrucciones y representar estas últimas en un lenguaje sin ambigüedad.

En De numero indorum (el original árabe se ha perdido), Al-Khowarizmi hizo una exposición tan completa del método de numeración hindú que se acabó conociendo como el sistema de Al-Khowarizmi, que daría lugar después a los términos guarismo para cada uno de los signos con los que se representan los números y algoritmo para referirse al sistema completo, este último por influjo del griego arithmós "número" y el castellano logaritmo.
Hoy día algoritmo se utiliza para designar cualquier conjunto ordenado y finito de operaciones que permite resolver un problema concreto.

Gracias a la capacidad para comunicar nuestros pensamientos mediante algoritmos, podemos construir máquinas cuyo comportamiento simula inteligencia. El nivel de inteligencia que simula la máquina, estará limitado por la inteligencia que podamos comunicarle por medio de algoritmos. Las máquinas sólo pueden realizar tareas algorítmicas. Si encontramos un algoritmo para dirigir la ejecución de una tarea, podemos construir una máquina para llevarla a cabo siempre que la tecnología haya avanzado lo suficiente. Si no encontramos un algoritmo, es posible que la ejecución esté fuera de las capacidades de las máquinas. Un computador es todo aparato o máquina destinada a procesar información, entendiéndose por proceso, las sucesivas fases, manipulaciones o transformaciones que sufre la información para resolver un problema determinado, siguiendo las instrucciones de un programa registrado.

Fuente Enciclopedia Libre Universal en Español.
 

El algoritmo informático - Claudio Gutriérrez -

El algoritmo

Entendemos por algoritmo un procedimiento seguro y mecánico que logra un cierto resultado, especialmente en matemáticas y en informática; el concepto es también aplicable en otros campos, como la economía, la ingeniería y, según veremos, incluso la biología. El término 'algoritmo' viene, a través de varias traducciones y corrupciones, del nombre del matemático persa Mûusâ al-Khowârizm, cuyo libro sobre procedimientos aritméticos, escrito por allá del año 835, fue traducido al latín en el siglo XII. El uso de la palabra en el sentido explicado ha tenido vigencia por varios siglos; asciende a mayor notoriedad, sin embargo, en nuestro tiempo, gracias a la obra metamatemática(1) de pensadores como Hilbert, Gödel, Church y Turing, que revolucionaron las ciencias matemáticas durante el primer tercio del siglo XX. La transferencia del concepto de la matemática a la informática ocurrió gracias a la obra del último de estos distinguidos matemáticos, quien propuso a sus colegas definir 'algoritmo' como lo que puede hacer una máquina descrita por él en términos muy abstractos –que por ello mismo puede representar muy distintas configuraciones– y que ahora lleva su nombre: máquina Turing(a). De acuerdo con esta propuesta suya, inmediatamente aceptada por los demás matemáticos, quedó establecido que algo es un algoritmo si, y solo si, se trata de un proceso con las siguientes características:

1.      Sus pasos constituyen una secuencia finita, están claramente especificados y son independientes unos de los otros (digitalidad).

2.      Un mismo agente (no necesariamente humano) determina qué es lo que corresponde hacer en cada momento (secuencialidad y control).

3.      El agente es capaz de recabar la descripción operacional de la secuencia así como de almacenar resultados en el camino (interpretación y memoria).

4.      La ejecución de una secuencia específica produce siempre los mismos resultados en cada paso para cada conjunto de datos iniciales (determinismo).

5.      Finalmente, la secuencia concluye con un resultado final (terminación).

La penúltima condición prohíbe al agente actuar en una forma probabilística o de manera arbitraria, por ejemplo tirando una moneda al aire para que eso decida si ejecuta o no la próxima instrucción. El último requisito es obligatorio solamente en los casos en que se espera obtener un resultado concreto, como el valor de una función (por ejemplo dividir 7 834 entre 555, con un determinado número de decimales) o la preparación de un cierto número de raciones de un plato de comida(2) o de una droga sintética. Sin embargo, se admite la existencia de algoritmos repetitivos que nunca terminen, cuando lo que se trata de provocar con el proceso, de manera constante o intermitente, no es un resultado o valor sino algún efecto colateral. Por ejemplo, el algoritmo que hace posible un marcapasos no debe terminar pues su función es regular de manera permanente el latido de un corazón deficiente. El de un sistema operativo como Windows o Linux no debe hacerlo tampoco, pues su justificación es sustentar el funcionamiento indefinido de otros programas dentro de un ambiente electrónico. A estos algoritmos que en principio no deben terminar se los conoce como algoritmos irregulares o parciales.

Antes del advenimiento de las computadoras digitales, los algoritmos eran del dominio preferente de los matemáticos, ya que para calcular una función cualquiera se necesitaba un algoritmo. Pero una vez que quedó equiparado el concepto de algoritmo con la operación de una máquina Turing, no transcurrirían dos decenios antes de que los ingenieros eléctricos construyeran máquinas concretas que dieran cuerpo a esa abstracción. Son las antecesoras de las que hoy pueblan nuestros escritorios en forma de computadoras personales como la que me sirve para componer este ensayo. Actualmente podemos equiparar "algoritmo" con un amplio género de objetos que cubre programas tan diversos como los de nuestras hojas de cálculo, procesadores de texto, bases de datos, calendarios electrónicos y toda suerte de juegos digitales; y no olvidar los sistemas operativos, que permiten a las computadoras –sin que paremos mientes en su presencia– ejecutar cualquiera de los programas mencionados.

Es importante señalar que el concepto de algoritmo no incluye en sí la especificación de algún material preciso del que deban estar construidos. En puridad, no son construidos de ningún material particular, salvo el de que están hechos los sueños: nuestras ideas. Pero para tener efecto en el mundo deben "encarnarse" de alguna manera. Es ya proverbial la diferencia entre hardware (alambrado) y software (programa). Esta diferencia es la que contrasta una computadora –un algoritmo que ejecuta funciones muy generales– con el programa específico que corre en ella y la transforma en una máquina Turing mucho más concreta, por ejemplo, un procesador de texto o una hoja de cálculo. Los lectores más viejos recordarán que en los años setenta se vendían unos "procesadores de palabras" que no eran software sino hardware, especie de máquinas de escribir muy caras que nos permitían hacer maravillas en la preparación de documentos. Se trataba de hecho de algoritmos no escritos en información electromagnética que uno pudiera "bajar" a una computadora, sino grabados directamente en alambre, es decir en circuitos eléctricos. Se trataba de algoritmos duros (hard) no suaves (soft). Esta diferencia tan obvia no les quita el carácter de algoritmo a ninguno de los dos términos de la comparación: tanto el hardware como el software lo son. Esto es importante porque prepara nuestra mente para entender cómo puede ser posible que un algoritmo pueda "encarnarse" de muchas maneras diferentes. Y la manera que más nos interesa en esta obra es precisamente la encarnación en carne, es decir en materia viva, puesto que hemos llegado a concluir, con ayuda del filósofo estadounidense Daniel Dennett, que la evolución por selección natural es un algoritmo, el más antiguo y trascendente de todos. (DENNETT 95)

Los algoritmos de siempre y los nuevos

Como una persona a quien le ha tocado vivir una gran porción del siglo XX, puedo contemplar un panorama de algoritmos muy amplio entreverado a mi propia historia: primero, los que encontré al llegar a la escuela, al colegio y a la universidad; después, los que nos cayeron encima, para unos como maná del cielo pues simplificaba su trabajo; para otros, con la angustia de quedarse rezagados en el camino por las dificultades propias del aprendizaje de algo nuevo a la mitad de la vida. Recuerdo de los años treinta mi admiración de niño ante la efectividad de las reglas para sumar, restar, multiplicar y dividir que me enseñaran mi madre y mi maestra de clase. De los años cuarenta, ya en el colegio, alegrías sin nombre al entrar en contacto por primera vez con los algoritmos básicos del álgebra y de la geometría. De los años cincuenta, cursando la carrera de leyes, mi entusiasmo al trabar amistad con unas reglas de procedimiento que aseguraban resultados en los tribunales solo si se cumplían cuidadosamente sus pasos en sus mínimos –a veces ridículos– detalles(3). Descubrí también en esa época la magia de los algoritmos económicos, especialmente el de la oferta y la demanda que –bajo condiciones adecuadas– asegura automáticamente la provisión social de bienes y servicios más eficiente posible. Ya en mis estudios doctorales, me enteré de que la lógica y las matemáticas eran la misma cosa, como lo habían demostrado Peano y Bertrand Russell, entre otros creadores de la lógica matemática.

Pero todos esos eran algoritmos viejos, algunos entre ellos ancianos de siglos. No fue sino en los años sesenta cuando hicieron su aparición en público los algoritmos nuevos, hechos posibles por la creación de las computadoras. Algoritmos que tenían ahora la sorprendente particularidad no solo de explicarnos la lógica de una acción, sino de ejecutarla ellos mismos. Estos algoritmos, los algoritmos informáticos, aunque calcados de los algoritmos matemáticos, surgían con una autonomía que les daría la capacidad de cambiar, lenta pero seguramente, la estructura de la sociedad y –por efecto de nuestra reacción ante ellos– también nuestra propia concepción del ser humano y del mundo. Con esto se abría una intrigante dicotomía cuya profundidad y trascendencia todavía estamos ponderando. Por una parte, la increíble proeza de poner a las máquinas a realizar procesos racionales, antes reservados solo a los humanos, subrayaba más que nunca la extraordinaria capacidad de concebir y manejar símbolos, exclusividad de nuestra especie dentro del reino animal, como bien lo había categorizado Aristóteles. Pero por otro lado, el gran logro que significaba una máquina capaz de realizar actividades simbólicas, nos apremiaba a una introspección inédita sobre la naturaleza y alcances de nuestra "diferencia específica". En nuestra larga lucha por superar los atavismos ancestrales de nuestra especie, que nos asimilan a los animales más salvajes, percibíamos ahora que la racionalidad –de que tanto hacíamos gala aunque pocas veces ejercíamos suficientemente– nos asimilaba en algún sentido a las nuevas máquinas. Tanto más, cuanto que el paradigma mecanicista se estaba entronizando en las ciencias biológicas y apuntaba ya en la clara dirección de que debíamos considerar a nuestro cuerpo como la más fina y delicada de todas las máquinas, pero máquina al fin, incluyendo nuestro cerebro y todos sus procesos.

Pero al mismo tiempo que este impacto de auto redefinición, el ser humano estaba recibiendo de la revolución informática una plétora de nuevos bienes que no podían siquiera inventariarse porque seguían apareciendo continuamente, con velocidad que se intensificaba con el paso del tiempo. Los algoritmos se habían soltado por el mundo y andaban transformando todas y cada una de las actividades humanas, sin ninguna excepción, desde las más materiales hasta las más espirituales. En los años sesenta y setenta los vimos comenzar a transformar las burocracias y nos hicieron temer que llegaran a ser armas poderosas para gobiernos totalitarios monstruosos que acabaran con nuestra libertad e intimidad. Pero al comienzo de la década siguiente surgiría de un garaje californiano una revolución dentro de la revolución: la computadora personal que se adueñaría enseguida del mundo convirtiéndose en un instrumento de democratización que solo superaría más tarde la Internet(b) –otra revolución dentro de la revolución– en los años noventa. Mencionemos unas cuantas de las impresionantes consecuencias de esta serie de revoluciones que caracterizan la era informática que todavía estamos viviendo:

·         Muy temprano en la historia, el procesador de texto transformó para siempre la práctica de la escritura, introduciendo todas las pequeñas maravillosas ventajas que le hacen superior al papel y la pluma como instrumento de producción de documentos.

·         Poco después, la hoja electrónica alivió los dolores de parto intelectual de millones de contadores (profesionales o domésticos). Quien no vivió antes de esta notable invención no tiene idea de la increíble tortura que significaba cambiar un solo dato sobre el papel con borrador y lápiz, por la enormidad de sus repercusiones en el resto de la hoja de cálculo.

·         Vinieron enseguida las bases de datos relacionales, prodigioso enjambre de interconexiones lógicas automáticas que aliviaron para siempre a los archivistas y permitieron a administradores y su público hacer búsquedas instantáneas en un mar de informaciones.

·         Los juegos electrónicos y la "realidad virtual" hicieron su aparición, abriendo de golpe todo un mundo de posibilidades a la expresión y comunicación humanas y creando los cimientos para nuevas formas interactivas de educación.

·         Se transformaron integralmente las operaciones bancarias, haciéndolas más eficientes y baratas y mucho más cómodas para el público.

·         Se introdujo en el comercio y la industria el "justo a tiempo" que redujo al mínimo los inventarios mundiales, abaratando los precios para incontables artículos para millones de personas.

·         La robotización pudo mantener la producción mundial de vehículos y electrodomésticos a la altura de la demanda creciente, mucho más allá de lo que hubiera permitido el aumento de la población sin ese avance tecnológico.

·         Se creó la manufactura flexible que permitió redirigir la producción de una fábrica hacia especificaciones a la medida, por medio de un simple cambio de parámetros en un programa de cómputo. Esta transformación permitió a la industria adaptarse a las preferencias de grupos pequeños de consumidores en campos tan disímiles como la industria de máquinas herramientas o la publicación de libros, superando los inconvenientes de la producción en masa heredada de la Revolución Industrial.

·         Se generaron múltiples nuevas oportunidades de trabajo en casa, en campos tan variados como consultorías, actividades bursátiles, traducciones, o simple desconcentración de actividades propias de una oficina o negocio. Gracias a las redes electrónicas, esas desconcentraciones pudieron extenderse sobre las fronteras y los océanos al globalizarse la economía(c).

·         La introducción de la imagenología digital volvió al cuerpo humano prácticamente transparente para el diagnóstico médico, con los consiguientes beneficios para la salud de la población mundial.

·         Más recientemente, la secuenciación del genoma humano, con la correspondiente explosión del conocimiento de las ciencias biológicas, está a punto de producir técnicas médicas a la medida de cada fenotipo humano destinadas a hacer obsoletas la farmacología y la medicina tradicionales.

·         Un instrumento de comunicación digital creado en los años setenta por los investigadores científicos para intercambiar resultados a velocidad casi instantánea, la Internet, se generaliza al comercio y a la vida diaria durante los años noventa, introduciendo increíbles mejoras en la comunicación humana y haciendo explotar el comercio a larga distancia y la autoeducación libre en gran escala. (4).

Detengámonos un momento en este último punto para subrayar la influencia transformadora que los protocolos de Internet están teniendo sobre el presente y futuro de la educación. De lo que se trata es ni más ni menos que de la superación de los métodos educativos heredados de la Revolución Industrial, cuando fue creada la escuela tradicional como complemento de las grandes instalaciones fabriles y a la imagen de ellas. Tal modelo educativo que hoy todavía, dos siglos después, sufrimos en todo el mundo, se ha caracterizado por concentraciones masivas de alumnos en "grados" separados y arbitrarios, bajo planes de estudio rígidos iguales para todos los estudiantes, con poca o ninguna atención a las particularidades individuales de los alumnos. La existencia con precios cada vez más bajos de computadoras personales conectadas 24 horas al día a la red mundial, con capacidad para transmitir sonido e imágenes a una velocidad extraordinaria, hace posible e incluso inevitable la superación de ese arcaico modelo educativo. Si a ello agregamos la aparición de "buscadores" –tipo Google– que permiten obtener en un instante información sobre prácticamente cualquier cosa, de las más autorizadas fuentes y en los más diversos idiomas, vemos que se perfila en el horizonte la posibilidad de obtener autoeducación personalizada, a costo ínfimo y de primera calidad, para toda la población humana, con mínima tutoría humana directa y en los propios hogares de los estudiantes. Además, esa autoeducación podrá proseguir toda la vida, sin solución de continuidad, adaptando a la gente a los cambios vertiginosos que los avances tecnológicos y la unificación de la humanidad continúan introduciendo en la sociedad y economía contemporáneas.

El algoritmo y la filosofía

Además de su interés para los matemáticos y los informáticos, y el público en general por sus aplicaciones prácticas, el algoritmo puede dar materia para reflexión filosófica importante. Aparte de los trabajos de metamatemática, que tienen gran interés filosófico en cuanto análisis de los límites del conocimiento –por ejemplo, el teorema de Gödel demuestra que las matemáticas son o incompletas o incongruentes, lo que nos infunde un sentido de humildad y de búsqueda permanente–, han surgido en nuestros días varios tópicos muy generales relacionados con los algoritmos de considerable contenido filosófico. Vamos a esbozar algunos de ellos.

La inteligencia artificial

El primero de esos tópicos entra a escena con un artículo del propio Alan Turing, sobre la posibilidad de que las máquinas puedan pensar, escrito en 1950, en la aurora misma de la era informática. (TURING 50) A pesar de que Turing no era un profesional de la filosofía, era filósofo en el sentido profundo característico de la época del Renacimiento y la Ilustración europeas, cuando los grandes físicos y matemáticos o incluso políticos distinguidos escribían sobre temas profundos conectados con sus disciplinas que sería difícil ubicar en el fuero de su ciencia particular. De ese tipo, por ejemplo fueron las contribuciones sobre los "ídolos" que obstaculizan el conocimiento de Francis Bacon o las disquisiciones sobre el espacio absoluto como "aparato sensorial de Dios" que debemos a Isaac Newton. De hecho Turing inauguró con ese artículo una disciplina nueva, llamada hoy inteligencia artificial, a la que precisamente serían atraídos muchos filósofos (incluido este autor) durante las décadas siguientes, guiados por la recomendación de Thomas Hobbes de que la mejor manera de entender una cosa es tratar de construirla.

La inteligencia artificial, como la definiría después John McCarthy, consiste en el intento de capacitar a las máquinas para realizar actos que, si los hiciera un ser humano, diríamos que requieren inteligencia. Esa capacitación se trata de impartir dotando a la máquina en cuestión de algoritmos informáticos que sean capaces de solucionar problemas como los que enfrentamos rutinariamente; o en situaciones muy específicas, como al jugar ajedrez u otros juegos de salón, probar teoremas, resolver acertijos, entender o producir lenguaje, reconocer objetos de manera visual, dar diagnóstico médico o armar un itinerario de viaje, evitar obstáculos al caminar, etcétera. Los logros de esta empresa han sido considerables, dada su dificultad. Es interesante que el éxito haya sido mayor en proporción a que la habilidad de que se trate sea propia de expertos (como jugar ajedrez o hacer diagnóstico médico), y mucho menor conforme la habilidad corresponda a lo que llamamos "sentido común" (como conversar en una fiesta sobre temas intrascendentes, discutir de política o plantear problemas filosóficos).

La inteligencia artificial, sin embargo, tiene sus escépticos. Uno de ellos, el físico de nota Roger Penrose, subraya la oposición entre el carácter mecánico o ciego de la ejecución de algoritmos y el carácter creativo, indeterminado y sujeto a errores, propio de la inteligencia humana. (PENROSE 89) Tal contraste lo lleva a negar que la inteligencia artificial sea realmente inteligencia y que la inteligencia humana pueda estar basada en algoritmos. Pero no hace ningún intento de aclarar en qué consista el poder creativo de la inteligencia humana, mientras cierra los ojos a los logros creativos de la inteligencia artificial. Por nuestra parte, creemos que el dilema apuntado puede resolverse de manera distinta a como lo propone Penrose. Desde luego que los programas de inteligencia artificial son ciegos y mecánicos en un sentido, puesto que los ejecuta una máquina; pero igualmente lo son el disparo de nuestras neuronas y su contacto a través de sinapsis, y sin embargo eso no nos hace menos inteligentes. La paradoja de la inteligencia, artificial o humana, se resuelve dándonos cuenta de que la estrategia de sus programas combina dos subalgoritmos, cada uno de los cuales realiza su función de manera mecánica. El primero de ellos se encarga de generar, de manera más o menos arbitraria, una serie de hipótesis que podrían ser solución al problema que enfrenta; por su parte, el otro se ocupa enseguida de escoger, de conformidad con una función heurística, aquella que resulte más promisoria para los objetivos del programa. Esta función es falible aunque su aplicación sea totalmente determinista
(5). Lo interesante del caso es que por medio de la combinación de estos dos procesos mecánicos no creativos se puede producir –faliblemente por supuesto– un resultado creativo e inteligente. Cualquier deficiencia que por el momento tenga la creatividad de nuestras máquinas inteligentes comparadas con nuestra inteligencia se debe por supuesto a que todavía no hemos terminado el arduo trabajo de diseñar algoritmos artificiales tan buenos como los que han forjado millones de años de selección natural.

La vida artificial

La estrategia de generar y examinar está presente también –con el nombre de "algoritmo genético"– en un segundo importante tópico filosófico. Se trata de otra nueva disciplina, surgida en la década de los ochenta y llegada a fruición en la de los noventa, denominada "vida artificial". Esta disciplina explota el hecho ya subrayado de que un algoritmo es indiferente a la materia en que se realice. Sobreentendiendo ya que la selección natural es un algoritmo, esta disciplina toma en serio la afirmación de que no existe ninguna razón por la que no pueda haber evolución de replicadores no biológicos sino de cualquier otra índole, por ejemplo secuencias digitales encerrados en la memoria de una computadora que se transformen a sí mismos a lo largo de muchas generaciones dentro de tan peculiar paisaje ecológico. En otras publicaciones hemos descrito este interesante experimento y subrayado su valor como prueba empírica directa de la validez de la teoría de la evolución por selección natural. (GUTIÉRREZ 93) (GUTIÉRREZ 99b)

La selección natural como algoritmo

Una vez que uno adquiere una nueva noción, si ella vale la pena, un trabajo inevitable de elaboración interior nos lleva a apropiárnosla por su interacción con nuestras ideas anteriores. Esta especie de dialéctica del conocimiento nos obliga en forma reiterativa a replantear todo lo que antes sabíamos a la luz de cada nuevo descubrimiento o concepto. Pareciera una ley de la inteligencia sin escapatoria cuyo fundamento residiera en la íntima conectividad orgánica de nuestras neuronas. Entendemos bajo esa luz el agudo atisbo del filósofo norteamericano Daniel Dennett, (DENNETT 95) que reinterpreta –muy apropiadamente– la teoría de la evolución por selección natural propuesta por Darwin como un algoritmo en el mismo sentido de la informática contemporánea. De acuerdo con esta teoría, debidamente complementada por los hallazgos biológicos del siglo XX, la reproducción recursiva de una población produce en cada generación individuos suficientemente variados y los constreñimientos del medio escogen entre ellos los mejor adaptados a los nichos ecológicos disponibles. Tomando en cuenta el carácter abstracto de los algoritmos, que no dependen de los materiales en que se actualizan, no hay óbice para aceptar la selección natural como un algoritmo de la más noble alcurnia. Y alcurnia tiene, con los millones de años que ha estado operando en nuestro planeta, poblando los mares y los continentes, para declararlo el más antiguo y distinguido de todos los algoritmos(d).

Para percibir mejor este carácter algorítmico del principio de selección natural, expresémoslo a la manera de un diagrama de flujo de los que usan los informáticos para representar sus programas:

ENTRADA
Se produce una población de elementos capaces de autorreplicarse
(6).

CICLO
Los miembros de la nueva generación, se enfrentan a los constreñimientos del medio con el apoyo de recursos de ese mismo medio.

Algunos de los miembros de la nueva generación (menos dotados para hacer frente a los constreñimientos vigentes en el medio) quedan descartados.

El material que determina la replicación de los miembros para producir la próxima generación se modifica mínimamente en forma aleatoria.

Los miembros de la población que no fueron eliminados realizan lo que es necesario para preparar su replicación.
Se replican los elementos de la población.

Mientras existen replicadores se ejecuta de nuevo CICLO.

El hecho de que el programa pueda no terminar (en las condiciones normales de supervivencia de la especie) hace que técnicamente no sea este un algoritmo regular sino irregular o parcial, del mismo carácter de un sistema operativo, según hemos visto.

Algoritmo y selección cultural

La acción del método generar y examinar no termina con la producción del género humano. En un momento dado de la evolución de nuestro linaje nuestro cerebro comenzó a tener tan grande conectividad que pudo emerger la capacidad de concebir, transmitir e interpretar símbolos. Ahí surgió la posibilidad de que el algoritmo de selección natural comenzara a aplicarse a algo distinto de los genes, dando lugar al desarrollo de la cultura humana. Esa nueva evolución ha estado en curso ya por más de dos millares de milenios, desde los primeros homínidos que probablemente comunicaban por símbolos no orales, hasta los sapiens actuales que conversamos por Internet, pasando por los inventores de las lenguas, la escritura, la contabilidad, la versificación, los códigos secretos, los templos griegos, las catedrales góticas, las matemáticas y las ciencias experimentales. En nuestro tiempo, ha logrado producir algo tan impresionante como sistemas de símbolos que pueden generarse, transmitirse e interpretarse con independencia de la mente humana, en máquinas automáticas creadas por procesos conscientes de acumulación de diseño(e): las computadoras y las redes de computadoras. Parece que nos está tocando vivir –para bien o para mal–, si no el fin de la historia que comenzara con los primeros balbuceos de los sistemas simbólicos, sí el comienzo de una etapa inédita suya que quizás lleguen a conocer nuestros descendientes como la "edad de la desencarnación de los símbolos".

Notas

Nota 1: No, no se trata de un error tipográfico. La palabra "metamatemática" existe y se refiere a una ciencia "a la segunda potencia" que consiste en aplicar matemáticas (o lógica) al examen de las matemáticas mismas. Ahí se ventilan cosas como la interna congruencia de sus sistemas, la decidibilidad de sus proposiciones (si se puede llegar a determinar mecánicamente que son verdaderas o falsas), la integridad o "completitud" de sus axiomas, y otros temas igualmente abstractos.

Nota 2: A más de un lector puede sorprender que una receta de cocina esté emparentada con un algoritmo. Aunque la forma en que corrientemente la expresamos no sea demasiado formal, tiene una naturaleza muy semejante a la de un cálculo matemático o un programa informático. Considérese por ejemplo la secuencia que da como resultado cuatro porciones de sopa de cebolla:

  1. En un recipiente hondo mezcle 3 cebollas grandes tajadeadas con 2 cucharadas de mantequilla.

  2. Cocine tapado en HIGH por 5 minutos.

  3. Agregue 3 tazas de consomé de res, 1 taza de agua, sal al gusto, y una cucharadita de salsa inglesa.

  4. Mezcle y cocine tapado en HIGH por 10 minutos.

  5. Continúe cocinando en MEDIUM por 10 minutos.

  6. Saque y deje reposar tapado por 4 minutos.

  7. Al servir agregue cubitos de pan y queso parmesano rayado. (ECHANDI 89)

Nota 3: Mucho más tarde, ya como profesor de informática, me dio mucha satisfacción alentar el trabajo de un joven jurista costarricense que se interesó en plasmar como un "algoritmo del delito" los procedimientos penales del país, a fin de facilitar la labor de los jueces. (CASTRO 92)

Nota 4: A esta impresionante lista debemos agregar que en los primeros años del siglo XXI se ha introducido una ampliación en el algoritmo de Internet que ha comenzado a revolucionar radicalmente la telefonía mundial al permitir comunicarse a viva voz por medio de sus protocolos. Esto asimila el precio de la comunicación telefónica nacional e internacional al costo de la comunicación por Internet, insignificante comparada con la de la telefonía tradicional, destinada a desaparecer a corto plazo. Nota de 2004.

Nota 5: Un ejemplo de función heurística muy cruda para escoger la mejor jugada en un programa de ajedrez sería contar para cada posición alternativa las casillas dominadas por el jugador y por su contendiente y restar el número ajeno del propio; se seleccionaría como jugada la que condujera a la posición con la calificación más alta. En todo caso, la función debe ser pertinente para el problema de que se trate y establecida con base en la opinión –no infalible pero ilustrada– de algún experto.

Nota 6: He preferido no usar aquí imperativos, que es la manera usual de expresar los "comandos" de programación informática, a fin de alejar la impresión de que estas "instrucciones" requieran un ser consciente que dé las órdenes y otro que las reciba. Se trata más bien de una situación de carácter automático en que las leyes de la naturaleza realizan la acción, sin necesidad de conciencia ni de dualidad entre dos partes, excepto desde luego el encadenamiento natural de causas y efectos. En el caso de la informática, las leyes naturales implicadas son las de la electricidad, pues las computadoras que se construyen hoy son mecanismos electromagnéticos. En el caso de la evolución biológica, las leyes implicadas son las que regulan los fenómenos bioquímicos, fundamento de toda vida que nos sea conocida.

Referencias

Nota a: La informática como ciencia teórica en mi Epistemología e informática. (GUTIÉRREZ 93)

Nota b: Un mem llamado Internet en Apéndices de la quinta colección.

Nota c: La unificación mundial americana en de la quinta colección.

Nota d: La selección natural en este bloque.

Nota e: La acumulación del diseño en este bloque.

Claudio Gutiérrez - Copyright © 1996-2002


Algorithm - Fuente Encyclopedia Britannica

Procedure that produces the answer to a question or the solution to a problem in a finite number of steps. An algorithm that produces a yes or no answer is called a decision procedure; one that leads to a solution is a computation procedure. A mathematical formula and the instructions in a computer program are examples of algorithms. Euclid's Elements (c. 300 BC) contained an algorithm for finding the greatest common divisor of two integers. Manipulation of lists (searching for, inserting, and removing items) can be done efficiently by using algorithms.

Algorithm - Fuente Mc Graw-Hill

A well-defined procedure to solve a problem. The study of algorithms is a fundamental area of computer science. In writing a computer program to solve a problem, a programmer expresses in a computer language an algorithm that solves the problem, thereby turning the algorithm into a computer program. See also Computer programming.

Operation

An algorithm generally takes some input, carries out a number of effective steps in a finite amount of time, and produces some output. An effective step is an operation so basic that it is possible, at least in principle, to carry it out using pen and paper. In computer science theory, a step is considered effective if it is feasible on a Turing machine or any of its equivalents. A Turing machine is a mathematical model of a computer used in an area of study known as computability, which deals with such questions as what tasks can be algorithmically carried out and what cannot. See also Automata theory; Recursive function.

Many computer programs deal with a substantial amount of data. In such applications, it is important to organize data in appropriate structures to make it easier or faster to process the data. In computer programming, the development of an algorithm and the choice of appropriate data structures are closely intertwined, and a decision regarding one often depends on knowledge of the other. Thus, the study of data structures in computer science usually goes hand in hand with the study of related algorithms. Commonly used elementary data structures include records, arrays, linked lists, stacks, queues, trees, and graphs.

Applications

Many algorithms are useful in a broad spectrum of computer applications. These elementary algorithms are widely studied and considered an essential component of computer science. They include algorithms for sorting, searching, text processing, solving graph problems, solving basic geometric problems, displaying graphics, and performing common mathematical calculations.

Sorting arranges data objects in a specific order, for example, in numerically ascending or descending orders. Internal sorting arranges data stored internally in the memory of a computer. Simple algorithms for sorting by selection, by exchange, or by insertion are easy to understand and straightforward to code. However, when the number of objects to be sorted is large, the simple algorithms are usually too slow, and a more sophisticated algorithm, such as heap sort or quick sort, can be used to attain acceptable performance. External sorting arranges stored data records.

Searching looks for a desired data object in a collection of data objects. Elementary searching algorithms include linear search and binary search. Linear search examines a sequence of data objects one by one. Binary search adopts a more sophisticated strategy and is faster than linear search when searching a large array. A collection of data objects that are to be frequently searched can also be stored as a tree. If such a tree is appropriately structured, searching the tree will be quite efficient.

A text string is a sequence of characters. Efficient algorithms for manipulating text strings, such as algorithms to organize text data into lines and paragraphs and to search for occurrences of a given pattern in a document, are essential in a word processing system. A source program in a high-level programming language is a text string, and text processing is a necessary task of a compiler. A compiler needs to use efficient algorithms for lexical analysis (grouping individual characters into meaningful words or symbols) and parsing (recognizing the syntactical structure of a source program). See also Software engineering; Word processing.

A graph is useful for modeling a group of interconnected objects, such as a set of locations connected by routes for transportation. Graph algorithms are useful for solving those problems that deal with objects and their connections—for example, determining whether all of the locations are connected, visiting all of the locations that can be reached from a given location, or finding the shortest path from one location to another.

Mathematical algorithms are of wide application in science and engineering. Basic algorithms for mathematical computation include those for generating random numbers, performing operations on matrices, solving simultaneous equations, and numerical integration. Modern programming languages usually provide predefined functions for many common computations, such as random number generation, logarithm, exponentiation, and trigonometric functions.

In many applications, a computer program needs to adapt to changes in its environment and continue to perform well. An approach to make a computer program adaptive is to use a self-organizing data structure, such as one that is reorganized regularly so that those components most likely to be accessed are placed where they can be most efficiently accessed. A self-modifying algorithm that adapts itself is also conceivable. For developing adaptive computer programs, biological evolution has been a source of ideas and has inspired evolutionary computation methods such as genetic algorithms. See also Genetic algorithms.

Certain applications require a tremendous amount of computation to be performed in a timely fashion. An approach to save time is to develop a parallel algorithm that solves a given problem by using a number of processors simultaneously. The basic idea is to divide the given problem into subproblems and use each processor to solve a subproblem. The processors usually need to communicate among themselves so that they may cooperate. The processors may share memory, through which they can communicate, or they may be connected by communication links into some type of network such as a hypercube. See also Concurrent processing; Multiprocessing; Supercomputer.
 


 

 

 

 

AVIZORA.COM
Política de Privacidad
Webmaster: webmaster@avizora.com
Copyright © 2001 m.
Avizora.com