viernes, agosto 28, 2009

Retrospectiva

El día de hoy me puse a revisar un poco los viejos posts en este sitio y me he encontrado con un par de joyas de la literatura, que si no supiera que lo escribi yo, me iria con la finta de que lo realizo un profesional :P. La cosa esta en que he tenido mis momentos de lucides en los cuales he podido volcar la masa neuronal y vertirla en algun texto que se vea inteligible, cosa que parece no he seguido fomentando y a lo mejor podria tener mi propio ALT1040, BarraPunto, Gizmondo, o cualquier blog famoso de los que cotidianamente leo, y es que me gusta estar informado de lo que esta aconteciendo en la tecnología y entretnimiento, pero no le veo mucho sentido a volver a enlazar o recitar lo que estos sitios estan generando, porque supongo que cada quien tiene sus propios intereses de información y si lo quisieran leer acudirian directamente a las fuentes pues son bastante populares o reconocidas.

En fin en la experiencia que he tenido desarrollando este blog, siempre ha sido desde un punto de vista personal, tratando de contar de mis experiencias en el mundo de la computación, de como sortear algunos retos y siento que eso ha dado un poco más de valor al menos en cuestión personal. Nunca he tenido más alla de 3 o 4 lectores, todos ellos buenos amigos y conocidos, tal vez ha sido el miedo de levantar la voz y no decir realmentre nada interesante con lo cual decepcione a los lectores, pero si de cualquier forma no he hecho el intento por hacer ruido esos mismos lectores en este momento ahora no estan en mi sitio compartiendo ideas, creo que es un buen momento en que puedo dejar la pasividad y expresar lo que tengo que decir, platicar, compartir, pues día a día tenemos inquietudes que se manifiestan y tratan de salir para fluir y tomar su cause.

viernes, agosto 21, 2009

Diseño de Algoritmos

Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema en un tiempo razonable.

El desarrollo de un algoritmo se realiza mediante varias etapas.
  • Primero se modela el problema que se necesita resolver.
  • Después se diseña la solución
  • Se analiza está para determinar su grado de corrección y eficiencia
  • Finalmente se traduce en instrucciones en un lenguaje de programación
El modelo especifica los supuestos que se tienen acerca de los datos de entrada y la capacidad computacional que tiene el algoritmo. El diseño se basa en los distintos métodos de resolución de problemas. Para la etapa de análisis de un algoritmo se deben de estudiar cuantas operaciones se realizan para resolver un problema.

Computacionalmente hablando cada algoritmo tiene un costo A(x) por resolver determinado problema x, definido por las operaciones que realiza para solucionar dicho problema. Al máximo valor de operaciones realizadas se le conoce como el peor caso, y el minimo de, como el mejor caso. El peor caso proporciona una cota superior al costo del algoritmo y es el comunmente estudiado, hay casos donde se puede obtener el caso promedio, para lo cual se define una probabilidad de ocurrencia p(x) de ciertas condiciones del problema y se calcula una suma ponderada, pero generalmente es muy dificíl de clacular o imposible de definir por la complejidad del problema.

Si es posible demostrar que no existe un algoritmo capaz de realizar menos operaciones para resolver un problema, se dice que el algoritmo es óptimo.