miércoles, septiembre 13, 2006

Más acerca de algoritmos

Como recordarán, durante la primera clase del curso vimos las características básicas de un algoritmo, su estructura y su propósito.

Como complemento a este tema, respondan a las siguientes preguntas:

  1. ¿Cuál es la importancia de expresar la resolución de problemas o procesos en forma de algoritmos?
  2. ¿Por que es usado tan ampliamente?
  3. ¿Qué datos o información interesante pueden encontrar sobre los algoritmos?

Saludos y seguimos en contacto!

7 Comments:

At 12:33 p.m., Anonymous Anónimo said...

Yuliana Crocker Ramirez


1.- El término algoritmo no está exclusivamente relacionado con la matemática, ciencias de la computación o informática. En realidad, en la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos son el uso de una lavadora (se siguen las instrucciones), pero no la preparación de una comida (porque no están perfectamente definidos los pasos). También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o incluso el método de Gauss para resolver Sistema lineal de ecuaciones.



2.-El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación, y en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces codificar) un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico cuyos códigos pueden estar en el idioma del programador.
Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de éste con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros es mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia, y en cualquier otro caso, devolverá una mezcla de señales positivas y negativas..



3.- Esto se me hace interesante la histiria del porque de los algoritmos.
Historia : La palabra algoritmo proviene del nombre del matemático llamado Muhammad ibn Musa al-Jwarizmi que vivió entre los siglos VIII y IX. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal logro no fuera el de crear nuevos teoremas o corrientes de pensamiento, sino el de simplificar la matemática a punto tal que pudieran ser comprendidas y aplicadas por un mayor número de personas. Cabe destacar cómo señaló las virtudes del sistema decimal indio (en contra de los sistemas tradicionales árabes) y cómo explicó que, mediante una especificación clara y concisa de cómo calcular sistemáticamente, se podrían definir algoritmos que fueran usados en dispositivos mecánicos en vez de las manos (por ejemplo, ábacos). También estudió la manera de reducir las operaciones que formaban el cálculo. Es por esto que aun no siendo el creador del primer algoritmo, el concepto lleva aunque no su nombre, sí su pseudónimo.
Así, de la palabra algorismo, que originalmente hacía referencia a las reglas de uso de la aritmética utilizando dígitos árabes, se evolucionó a la palabra latina, derivación de al-Khwarizmi, algobarismus, que más tarde mutaría a algoritmo en el siglo XVIII. La palabra ha cambiado de forma que en su definición se incluye a todos los procedimientos finitos para resolver problemas.
Ya en el siglo XIX, se produjo el primer algoritmo escrito para un computador. La autora fue Ada Byron, en cuyos escritos se detallaban la máquina analítica en 1842. Por ello que es considerada por muchos como la primera programadora aunque, desde Charles Babbage, nadie completó su máquina, por lo que el algoritmo nunca se implementó.
La falta de rigor matemático en la definición de "procedimiento bien definido" para los algoritmos trajo algunas dificultades a los matemáticos y lógicos del siglo XIX y comienzos de XX. Este problema fue en gran parte resuelto con la descripción de la máquina de Turing, un modelo abstracto de computadora formulado por Alan Turing, y la demostración de que cualquier método anticipado por otros matemáticos que pueda encontrarse para describir "procedimientos bien definidos" puede ser emulado en una máquina de Turing (una afirmación conocida como "tesis de Church-Turing").
En la actualidad, el criterio formal para definir un algoritmo es que se trata de un proceso que puede implementarse en una máquina de Turing completamente especificada, o en alguno de los formalismos equivalentes. El interés original de Turing era el problema de la detención: decidir cuándo un algoritmo describe un procedimiento de terminación. En términos prácticos importa más la teoría de la complejidad computacional, que incluye los problemas llamados NP-completos, es decir aquellos sobre los que generalmente se presume que requerirán tiempo más que polinómico para cualquier algoritmo (determinístico). NP denota la clase de los problemas de decisión que pueden ser resueltos en tiempo polinómico por una máquina de Turing no determinística.

 
At 6:17 p.m., Blogger Carlos Espitia Miñon said...

1.- El uso y la importancia de los algoritmos define la capacidad de los mismos para resolver cualquier tipo de problemas, ademas de que su utilizacion permite encontrar maneras mas rapidas y eficaces de resolver situaciones, sencillas o complejas.

2.-Los algoritmos son usados en todo momento y en cualquier area debido a que aunque no se tomen en cuenta, realmente se usan en todo lo que hacemos, de manera subjetiva estamos interrelacionados con ellos, por eso son tan usados.

3.-Los algoritmos de posicionamiento son los encargados de clasificar los resultados de las búsquedas en un orden. Tienen una importancia fundamental entre aquellas personas que desean aparecer en el mundo Web.

Se ha demostrado que el actual comportamiento de los usuarios de Internet pasa por la localización de la información a través de buscadores.

Los distintos buscadores existentes (Google,Yahoo,MSN) utilizan distintos algoritmos de posicionamiento. El objetivo de esta página es el de que los usuarios que sigan sus contenidos sean capaces de entender su filosofía y como aprovecharse de su conocimiento.

Mas info. en:

http://www.telefonica.net/web2/algoritmos-posicionamiento/

 
At 2:35 a.m., Anonymous Anónimo said...

1.-Cuando hablamos de resolución de problemas, siempre esperamos una respuesta referente a matemáticas o relacionada con ellas.
Los algoritmos son una forma de resolver problemas de manera clara, y que representan un papel importante dentro del ámbito de programación, mediante ellos nosotros podemos representar un problema de manera grafica y con un mayor grado de comprensión para un usuario externo que necesite comprenderlo sin tantas complicaciones.

Por ejemplo, realizando un algoritmo podemos resolver un problema cualquiera, no solo de programación si no también de la vida diaria, ya que los pasos que realizamos son siguiendo instrucciones secuénciales y finitas.

La principal importancia de realizar algoritmos es la de poder aterrizar nuestras ideas en pequeños pasos simples, que con el paso del tiempo llegaran a resolver un problema ó a el resultado final, y siempre serán de una forma simple y clara para cualquier persona.

2.- los algoritmos son usados tan ampliamente por su capacidad de comprensión por cualquier persona, ya que pueden ser tan complicados en algunas veces y en otras tan simples, que siempre terminaran en un resultado que sea racional y coherente con lo que se investiga. No solo en la informática son usados también en otras carreras y áreas de estudio por su fácil manejo y su estructura procedural que facilita el trabajo ampliamente.

3.- Esta pregunta es interesante, me encantan las redes y para ello se necesitan buenos algoritmos, tal vez se pregunte por que? Pero todos los protocolos por los que pasan sus paquetes (información) esta hecha por algoritmos, como? Pues muy fácil el diseño de algoritmos en redes comienza desde enviar un paquete a otra pc externa por la WAN, este paquete necesita pasar en el menor tiempo posible por la Internet, y debido a ello se generaron los protocolos de red como OSPF que es un protocolo capaz de realizar un algoritmo inspirado en los algoritmos de Dijkstra que le da pesos a los enlaces de red según su rapidez como un cable de red normal o uno de fibra que tendría mas peso. Esto son el simple hecho de pasar información mas rápidamente. Este proceso lo realiza un Router que es el encargado de buscar el camino mas corto o mas rápido según el protocolo de red instalado. Jajaja bueno si no me entendieron se los explico en clase jajajaja pero bueno esto es una de las importancias mas interesantes que he estudiado acerca de los algoritmos.

 
At 8:42 p.m., Anonymous Anónimo said...

Lizbeth Meza Gutierrez
1.-La importancia del algoritmo esta relacionado con todo problema ya que para darle solucion a un problema de manera facil es mediante pasos que sean faciles de comprender. El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos del problema a resolver.
Muchos problemas pueden resolverse buscando una solución fácil y directa pero, a la vez bastante ineficiente. Este método, llamado de fuerza bruta, puede ser muy directo, pero con un poco de análisis puede encontrarse algoritmos más eficientes. El esquema mas sencillo quizás sea el llamado divide y vencerás, basado en la descomposición de un problema en subproblemas
2.-El diseño de un algoritmo que resuelva un problema es, en general, una tarea difícil. Una forma de facilitar esta labor consiste en recurrir a técnicas conocidas de diseño de algoritmos, se decir, a esquemas muy generales que pueden adaptarse a un problema particular al detallar las partes generales del esquema.con esto todos los problemas tendran una solucion mas eficiente y mas segura.
3.-un dato interesante para mi es como es que existen: Los algoritmos genéticos, que son métodos sistemáticos para la resolución de problemas de búsqueda y optimización que aplican a estos los mismos métodos de la evolución biológica: selección basada en la población, reproducción sexual y mutación.

Los algoritmos genéticos son métodos de optimización, que tratan de resolver el mismo conjunto de problemas que se ha contemplado anteriormente, es decir, hallar (xi,...,xn) tales que F(xi,...,xn) sea máximo. En un algoritmo genético, tras parametrizar el problema en una serie de variables, (xi,...,xn) se codifican en un cromosoma.

 
At 10:11 p.m., Anonymous Anónimo said...

Alguna de las diferentes formas de implementar un algoritmo:


Algunas veces, en una red neuronal biológica (por ejemplo, el cerebro humano implementa la aritmética básica o, incluso, una rata sigue un algoritmo para conseguir comida), también en circuitos eléctricos, en instalaciones industriales o maquinaria pesada.

El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación, y en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces codificar) un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico cuyos códigos pueden estar en el idioma del programador.

Algunos escritores restringen la definición de Algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de éste con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros es mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia, y en cualquier otro caso, devolverá una mezcla de señales positivas y negativas..

 
At 10:13 p.m., Anonymous Anónimo said...

La programación de algoritmos no es más que el estudio de un problema, su análisis e implementación final del mismo.

En la programación de los algoritmos encontramos tres fases fundamentales, las cuales son: identificación del problema, análisis y desarrollo del problema e implementación.

En la programación de algoritmos la identificación del problema no es más que, que es lo que se quiere hacer, para ello en esta etapa, encontramos información de entrada o inicial, que servira para el análisis del problema.

La segunda etapa o fase es analizar el problema, en esta etapa es conveniente dividir o segregar las tareas necesarias e identificadas que ayudaran a la solucion del problema dado. De esta forma se simplificaran y seran más comprensibles para su desarrollo, es recomendable siempre ir de las tareas o actividades más simples a las más complejas. En esta fase se transforma la información de entrada recibida.

La tercera etapa en la programación de algoritmos, consiste en la implantación y puesta en desarrollo del mismo, aqui se obtiene la información y resultado final resultante de las etapas anteriores.

En la programación de algoritmos, se utiliza una nomenclatura llamada seudocodigo, una vez realizados los algoritmos en seudocodigo, estos pueden ser traducidos en cualquier lenguaje de programación que lo soporte.

 
At 4:14 a.m., Anonymous Anónimo said...

DESARROLLO Y APLICACION DE ALGORITMOS DE DISENO DE REDES PARA RESOLVER PROBLEMAS APLICADOS A LA INDUSTRIA.
A primera vista, se puede pensar que el conocimiento de estos algoritmos y estructuras de datos no tienen una aplicación práctica inmediata. Sin embargo, su conocimiento y correcta aplicación sirven para producir programas mejores, en el sentido de que aprovechan mejor la memoria del sistema, son más rápidos, eficientes, robustos y tolerantes a fallos.

Las aplicaciones de estos algoritmos en algunos casos son inmediatas; por ejemplo, hallar el trayecto más corto entre dos estaciones es algo que interesa a muchos viajeros del metro y se pueden obtener aproximaciones bastante buenas del mundo real utilizando algunos de los algoritmos que obtienen distancias mínimas. Otros algoritmos sirven para procesar cadenas, lo cual sirve de base para analizadores léxicos o algoritmos criptográficos, por ejemplo.

Además, tener conocimientos adecuados de algoritmia y estructuras de datos facilita el poder pasar de un lenguaje de programación a otro con mucha mayor facilidad: puesto que ya se tiene la base, sólo hace falta superar las dificultades técnicas particulares de cada lenguaje.

 

Publicar un comentario

<< Home