Vous êtes sur la page 1sur 9

Qu es un algoritmo?

Un algoritmo consiste en una lista ordenada de operaciones que tienen el


propsito de buscar la solucin a un problema en matemtica, informtica y
disciplinas afines.

Para las ciencias de la matemtica y de la computacin, un algoritmo es una


lista que, dado un estado inicial y una entrada, propone pasos sucesivos
para arribar a un estado final obteniendo una solucin. Sin embargo, el
algoritmo no es excluyente de las ciencias duras o matemticas. Tambin en
la vida cotidiana se emplean este tipo de operatorias casi sin notarlo: por
ejemplo, en los instructivos o manuales de usuario que incluyen ejemplos de
resolucin de problemas tcnicos.
El empleo de algoritmos no es exclusivamente propio de operaciones
complejas o ligadas al mbito de la investigacin cientfica. Al desarrollar un
programa de computacin, por citar un ejemplo, a menudo estamos
desarrollando o implementando un mtodo para resolver algn problema.
En definitiva, se trata de una relacin problema-solucin que tiene lugar a
travs de la informtica. Un algoritmo tpico tiene carcter finito, es preciso,
tiene tanto una entrada como una salida y es eficaz en la resolucin de un
problema.

Pseudocdigo o diagrama de flujo

El pseudocdigo es una herramienta algortmica que permite escribir


pseudoprogramas (una imitacin de un programa real) utilizando un
lenguaje de pseudoprogramacin que es una imitacin de los lenguajes de
programacin de alto nivel. As, un pseudocdigo es una combinacin de
smbolos (+, -, *, /, %, >, >=, <, <=, !=, ==, y, o, no), trminos (Leer,
Imprimir, Abrir, Cerrar, Hacer...Mientras, Mientras...Hacer, Para...Mientras,
etc) y otras caractersticas comnmente utilizadas en uno o ms lenguajes
de alto nivel.

No existen reglas que determinen que es o no es un pseudocdigo, sino que


vara de un programador a otro. El objetivo del pseudocdigo es permitir al
programador centrarse en los aspectos lgicos de la solucin evitando las
reglas de sintaxis de un lenguaje de programacin. Posteriormente el
pseudocdigo debe ser traducido a programa usando un lenguaje de
programacin de alto nivel como Java, C++, C, etc.

Caractersticas del algoritmo:

Tiene que ser finito (con un final), preciso (detallar el orden de las operaciones a realizar)
y unvoco (al aplicar el algoritmo a los mismos datos de entrada, siempre se obtendr el
mismo resultado a la salida).

Un Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que conducen a la


solucin de un problema. La naturaleza de los problemas varan con el mbito o con el
contexto donde estn planteados; as, existen problemas matemticos, qumicos,
filosficos, etc. Segn esto la naturaleza de los algoritmos tambin es variada y no todos
ellos pueden ser ejecutados por la computadora. En este curso consideramos aquellos
algoritmos que expresan soluciones usando reglas cuantitativas cuyas instrucciones pueden
ser introducidas en la computadora, a este tipo de algoritmos se denominan Algoritmos
Computacionales.

En la resolucin de un problema con la computadora la parte pensante esta en el algoritmo.


As pues la eficacia de un programador no est en conocer la herramienta de programacin,
cosa necesaria, sino en saber resolver problemas con la computadora para lo cual se
requiere conocer un concepto conocido como metodologa de la programacin cuyo eje
central es el algoritmo.

Una vez que la solucin de un problema ha sido expresada mediante un algoritmo el paso
siguiente es convertirlo a programa para lo cual se elige un lenguaje de programacin. De
modo que un programa resulta ser la implementacin de un algoritmo en un determinado
lenguaje de programacin. Esto significa, por otro lado, que un algoritmo es independiente
del lenguaje de programacin.

Clasificacion
Algoritmo computacional: Es un algoritmo que puede ser ejecutado en una
computadora. Ejemplo: Frmula aplicada para un clculo de la raz cuadrada de un valor x.
Algoritmo no computacional: Es un algoritmo que no requiere de una computadora
para ser ejecutado. Ejemplo: Instalacin de un equipo de sonido.
Algoritmo cualitativo: Un algoritmo es cualitativo cuando en sus pasos o
instrucciones no estn involucrados clculos numricos. Ejemplos: Las instrucciones para
desarrollar una actividad fsica, encontrar un tesoro.
Algoritmo cuantitativo: Una algoritmo es cuantitativo cuando en sus pasos o
instrucciones involucran clculos numricos. Ejemplo: Solucin de una ecuacin de segundo
grado.

Caracteristicas

. Debe ser Preciso, porque cada uno de sus pasos debe indicar de manera precisa e
inequvoca que se debe hacer.
2. Debe ser Finito, porque un algoritmo debe tener un nmero limitado de pasos.
3. Debe ser Definido, porque debe producir los mismos resultados para las mismas
condiciones de entrada.
4. Puede tener cero o ms elementos de entrada.
5. Debe producir un resultado. Los datos de salida sern los resultados de efectuar las
instrucciones.

PARTES DE UN ALGORITMO: Todo Algoritmo debe tener las siguientes partes:


Entrada de datos, son los datos necesarios que el algoritmo necesita para ser ejecutado.
Proceso, es la secuencia de pasos para ejecutar el algoritmo.
Salida de resultados, son los datos obtenidos despus de la ejecucin del algoritmo.

TCNICAS DE REPRESENTACIN: Para la representacin de un algoritmo, antes de ser


convertido a lenguaje de programacin, se utilizan algunos mtodos de representacin
escrita, grfica o matemtica. Los mtodos ms conocidos son:

Diagramacin libre (Diagramas de flujo).


Diagramas Nassi-Shneiderman.
Pseudocdigo.
Lenguaje natural (espaol, ingls, etc.).
Frmulas matemticas.

Tcnica de diseo de algoritmos


Diseo de Algoritmos:
Hasta ahora se han realizado algunos comentarios respecto a la necesidad de disear
algoritmos correctos y eficientes utilizando los elementos de un lenguaje de
programacin .Es necesario en este momento mencionar algo sobre como hacerlo. El acto de
disear un algoritmo puede considerarse como una tarea que difcilmente podr ser del
todo automatizada.
Todo problema algortmico es un reto para su diseador, algunos resultan inmediatos de
resolver, otros son bastante complejos. La investigacin en esta rea ha permitido
descubrir un conjunto de mtodos o esquemas de diseo hacia los cuales puede orientarse
la realizacin de muchos algoritmos.
No obstante, y a pesar de que resulta mas adecuado en bastantes casos utilizar alguno de
estos esquemas que realizar un diseo desde cero, idear un algoritmo continua siendo una
labor bastante creativa donde los conocimientos y la experiencia del propio diseador tiene
un papel fundamental.
El diseo de un algoritmo que resuelva un problema es, en general, una tarea difcil. Una
forma de facilitar esta labor consiste en recurrir a tcnicas conocidas de diseo de
algoritmos, se decir, a esquemas muy generales que pueden adaptarse a un problema
particular al detallar las partes generales del esquema.
Muchos problemas pueden resolverse buscando una solucin fcil y directa pero, a la vez
bastante ineficiente. Este mtodo, llamado de fuerza bruta, puede ser muy directo, pero
con un poco de anlisis puede encontrarse algoritmos ms eficientes. El esquema mas
sencillo quizs sea el llamado divide y vencers, basado en la descomposicin de un
problema en subproblemas. Otros esquemas requieren un anlisis minucioso del problema de
forma que la solucin se vaya construyendo en etapas. Si puede preverse que decisin
conviene en cada etapa para producir cierto tipo de mejor resultado, tenemos una solucin
voraz, si la decisin en una etapa, solo puede tomarse tras considerar varias soluciones de
otras etapas mas simples, la solucin es dinmica. Aun as, hay problemas cuya solucin no
puede hallarse sino mediante un proceso de bsqueda, a pesar de lo complejas que son las
operaciones de bsqueda, su uso adecuado mediante el esquema de bsqueda con retroceso
(o backtracking) permite ganar gran eficiencia respecto a soluciones de fuerza bruta. Por
ultimo, conviene conocer otros mtodos de diseo de algoritmos que tambin resultan
de utilidad prctica.
Nos estamos refiriendo a mtodos basados en la mejora de la eficiencia (por ejemplo, el
uso de parmetros de acumulacin al resolver problemas utilizando divide y vencers, y
el empleo de tablas como estructura auxiliar para la resolucin eficiente de problemas
donde se aplica programacin dinmica), y a mtodos basados en transformaciones del
dominio para encontrar una solucin mas fcilmente a un problema en un dominio
transformado, siendo dicha solucin finalmente adaptada al dominio original.
Consideraciones generales
Si el hbil programador dispone de un recetario de algoritmos de donde poder seleccionar
el ms adecuado para cada problema, su tarea se simplifica.
Supongamos que disponemos de una especificacin precisa, completa y consistente del
problema a resolver y queremos obtener un algoritmo en el que, dados uno datos de entrada
valido, se produzca cierto resultado. Si no nos importa la eficiencia del algoritmo,
podramos utilizar un algoritmo general llamado algoritmo del museo britnico. Se programa
un computador de manera que parta de un conjunto de axioma matemticos y los que use
para reducir aleatoriamente teoremas validos.
Aprender los principios bsicos del diseo de algoritmos podemos preguntarnos por un
mtodo aceptable. El mas entendido, y quizs el mejor, es organizar el diseo sobre un
esquema de algoritmo o una tcnica de diseo que haya demostrado su utilidad para otros
problemas. Este mtodo de trabajo es practicable, puesto que existe un nmero reducido
de esquema y tcnicas de diseo.
El conocimiento de tcnicas de diseo es solo un primer paso para el diseador, que debe
completarse con otros
conocimientos y, sobre todo, con la experiencia.
Mtodo de fuerza bruta
Comenzamos el estudio de esquemas algortmicos con un mtodo sencillo, pero que debe
evitarse siempre que se pueda, dad su ineficacia; la fuerza bruta. En realidad, no es un
esquema algortmico, si no mas bien calificativo
Para una forma de disear algoritmos: tomar una solucin directa, poco reflexionada. En
principio, esto no es malo, pero dado que no se ha analizado apenas el problema, es muy
probable que no se hayan aprovechado propiedades deducibles del problema y que la
solucin sea terriblemente ineficiente.
Una solucin por fuerza bruta tambin puede resultar adecuada como primera aproximacin
a la solucin final, porque su desarrollo puede permitir profundizar ms sobre el problema y
conocer propiedades que sean utilizadas para obtener otra versin ms eficiente.
Por ejemplos:
Algunos algoritmos de bsqueda de un elemento en un vector. Uno de ellos realizaba una
bsqueda secuencial con complejidad lineal sobre el tamao del vector y poda usarse con
cualquier vector. Otro algoritmo realizaba un bsqueda dicotomica o binaria, con
complejidad logartmica, y solo se poda usar cuando el vector estuviese ordenado. El
algoritmo primero responde a un razonamiento ms sencillo, por lo que uno puede sentirse
tentado a usar siempre. Esta es la solucin de fuerza bruta: una solucin directa, pero poco
reflexionada. Lo ms razonable es comprobar si el vector esta ordenado y, en caso positivo,
aprovechar esta circunstancia para usar el algoritmo ms eficiente: el de bsqueda binaria.

ASPECTOS DE LA SOLUCIN DE PROBLEMAS

No existe un mtodo universal que permita resolver cualquier problema. En general, la


solucin de problemas es un proceso creativo donde el conocimiento, la habilidad y la
experiencia tienen un papel importante. El proceder de manera sistemtica puede ayudar
en la solucin. Es muy importante que el problema tratado est perfectamente definido: se
trata en este momento de saber qu es lo que hay que resolver antes de averiguar cmo
resolver el problema. Esta etapa de definicin lleva consigo eliminar las ambigedades y la
informacin irrelevante que aparezcan en el enunciado de un problema, y saber
exactamente qu elementos constituyen una solucin vlida.

Al comenzar a abordar un problema es necesario tener en cuenta que, para la mayora de


ellos, hay muchas maneras de resolverlos y pueden existir muchas soluciones. Se plantean
sin embargo criterios o estrategias generales que se deben tener en cuenta, para ello se
pueden seguir ocho etapas, articuladas de tal forma que cada una depende de las
anteriores, lo que indica que se trata de proceso complementario y por lo tanto cada paso
exige el mismo cuidado en su elaboracin. Las etapas son:

Definicin y delimitacin del problema a solucionar: Por computador se pueden resolver


cualquier clase de problema una vez definidos los pasos o instrucciones.

Seudocdigo o diagrama de flujo (algoritmo): Este es en realidad el primer paso que


se debe de seguir pues generalmente ya se tiene definido el problema. En esta etapa es
donde se determinan los pasos o instrucciones a seguir y el orden lgico de su ejecucin
para darle una eficiente solucin al problema. Aqu es donde radica toda la dificultad para
solucionar un problema por computador; el resto de las etapas bsicamente se
circunscriben a la adaptacin para que un computador determinado ejecute los pasos o
instrucciones planteados en el seudocdigo y se obtengas los resultados esperados.

Prueba de escritorio: Luego de realizar el seudocdigo viene la prueba de escritorio, la


cual consiste en hacer un seguimiento manual de los pasos seguidos que se definieron en el
seudocdigo y comprobar, con base en sus datos, si el resultado al cual se llega es el
esperado.

Codificacin: Es la escritura de las instrucciones o enunciados, determinados en la etapa


de la diagramacin o la seudocodificacin en un lenguaje de alto nivel (Basic, Cobol, Pascal,
C, etc.) incluyendo las instrucciones de control adecuadas al computador donde se vayan a
ejecutar.

Digitacin: Ya codificadas las instrucciones se convierten a un medio legible para el


computador. Es pasar las instrucciones al editor del lenguaje de programacin a utilizar.

Compilacin: Es aqu donde el computador Chequea si todas las instrucciones estn


escritas correctamente desde el punto de vista de la sintaxis y gramtica de cada lenguaje
y las transcribe, dentro de la memoria, del lenguaje de alto nivel al lenguaje de mquina
para obtener el llamado programa objeto.

Ejecucin del Programa: El programa objeto es ejecutado por el computador para llegar
a los resultados esperados, utilizando los dispositivos, unidades y memoria necesaria, segn
cada paso o programa.

Evaluacin de Resultados: Obtenidos los resultados se les evala para verificar si son
correctos. En caso contrario, se revisa en las etapas anteriores para detectar la falla o
error, entrar a corregirlo y reiniciar desde este punto los pasos para resolver de nuevo y
en forma correcta el problema.

Las consideraciones mencionadas hasta ahora corresponden a la solucin general de


problemas (no necesariamente a problemas informticos); sin embargo, estas ideas se
pueden particularizar para resolver problemas donde se use el computador como
herramienta. A veces, la situacin ms frecuente para mucha gente es comenzar a
programar la solucin de un problema que no est completamente definido, o pensar en
detalles de implementacin sin saber cmo abordar el problema independientemente del
computador. Es mucho ms productivo conocer primero un problema lo suficiente y plantear
una estrategia adecuada para su solucin, que comenzar prematuramente a programar la
solucin a un problema incompleto, ambiguo o que no ha sido analizado adecuadamente.

Operadores Aritmticos:

suma +

resta -

multiplicacin *

divisin /

potenciacin ^

divisin entera \ div

resto de divisin entera mod

Prioridad de las operaciones aritmticas:

*, /

+, -

div, mod

Todas las subexpresiones entre parntesis se evalan primero. Las subexpresiones


con parntesis anidados se evalan de dentro - a fuera; el parntesis ms interno se evala
primero.

La prioridad de operaciones dentro de una misma expresin o subexpresin, los


operadores se evalan en el siguiente orden:

Primero *, /, Div, Mod.

Ultimo +, -.

Regla asociativa izquierda. Los operadores de una misma expresin o subexpresin


con igual nivel de prioridad (tal como * y /) se evalan de izquierda a derecha.

Operadores Relacionales: se utilizan para expresar condiciones.

= igual

<> diferente

<= menor o igual

>= mayor o igual

> mayor que

< menor que

El resultado de la operacin expresin1 operador relacional expresin2 ser verdadero o


falso.
Estos operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos de datos
estndar: entero, real, lgico y carcter.

Operadores Lgicos: permiten relaciones lgicas (si/no) y sirven para representar


condiciones compuestas.

no (not) no p negacin de p

y (and) p y q conjuncin de p y q

o (or) p o q disjuncin de p y q

Teniendo en cuenta los datos anteriores la siguiente expresin tiene como resultado:

3 + 5 * (10 - (2 + 4)) = ?

Evaluacin: Resolver el ejercicio planteado en la forma que usted cree ms conveniente.

Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones


en Basic, Pascal, Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma

INTRODUCCIN A LOS ALGORITMOS

Introduccin: Los lenguajes de programacin permiten expresar los algoritmos en una


notacin formal que pueda ser reconocida y ejecutada por el computador.

Objetivos: 1. Utilizar los algoritmos para la solucin de problemas.

2. Describir las fases de desarrollo de un sistema de procesamiento de datos.

Recursos Tablero Acrlico.

Didcticos Marcadores borrables.

Material textual de apoyo.

Desarrollo:

Hasta ahora se han realizado algunos comentarios respecto a la necesidad de disear


algoritmos correctos y eficientes utilizando los elementos de un lenguaje de programacin.
El acto de disear algoritmos puede considerarse como una tarea que difcilmente podr
ser del todo automatizada. Todo problema es un reto para el diseador: algunos resultan
inmediatos de resolver, otros son bastante complejos. La investigacin en esta rea ha
permitido descubrir un conjunto de mtodos o esquemas de diseo hacia los cuales puede
orientarse la realizacin de muchos algoritmos. No obstante, y a pesar de que resulta ms
adecuado en bastantes casos utilizar algunos de estos esquemas que realizar un diseo
desde cero, idear un algoritmo contina siendo una labor bastante creativa donde los
conocimientos y la experiencia del propio diseador tienen un papel fundamental.

Dos tcnicas de las ms usadas en la prctica son divide y vencers y el mtodo voraz.

Divide y vencers: Consiste en descomponer un problema en subproblemas, resolver


independientemente los subproblemas para luego combinar sus soluciones y obtener la
solucin del problema original. Esta tcnica se puede aplicar con xito a problemas como la
multiplicacin de matrices, la ordenacin de vectores, la bsqueda en estructuras
ordenadas, etc.

Como ejemplo sencillo de aplicacin de esta estrategia puede considerarse la bsqueda de


una palabra en un diccionario de acuerdo con el siguiente criterio. Se abre el diccionario
por la pgina central (quedando dividido en dos mitades) y se comprueba si la palabra
aparece all o si lexicogrficamente es anterior o posterior. Si no se ha encontrado y es
anterior, se procede a buscarla en la primera mitad; si es posterior, se buscar en la
segunda mitad. El procedimiento se repite sucesivamente hasta encontrar la palabra o
decidir que no aparece.

Mtodo Voraz: Este mtodo trata de producir algn tipo de mejor resultado a partir de un
conjunto de opciones candidatas. Para ello, se va procediendo paso a paso realizndose la
mejor eleccin (usando una funcin objetivo que respeta un conjunto de restricciones) de
entre las posibles. Puede emplearse en problemas de optimizacin, como el conocido de la
mochila, en la bsqueda de caminos mnimos sobre grafos, la planificacin en el orden de la
ejecucin de unos programas de computador.

Consideremos ahora el problemas de la devolucin del cambio al realizar una compra.


Suponiendo que se disponga de cantidad suficiente de ciertos tipos de monedas de curso
legal, se trata dar como cambio la menor cantidad posible usando estos tipos de monedas.
La estrategia voraz aplicada comienza devolviendo, cuando se pueda, la moneda de mayor
valor (es decir, mientras el valor de dicha moneda sea mayor o igual al cambio que se resta
por dar), contina aplicndose el mismo criterio para la segunda moneda ms valiosa, y as
sucesivamente. El proceso finaliza cuando se ha devuelto todo el cambio.

Evaluacin: Se deben tener presentes todos y cada uno de los conceptos descritos
anteriormente, pues cada vez que se desee resolver un problema se deben utilizar
adecuadamente.

Bibliografa: Guillermo Correa Uribe (1998), Desarrollo de Algoritmos Y Sus Aplicaciones


en Basic, Pascal, Cobol y C, McGraw-Hill.

Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.

Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, Ra-
Ma

Caracteristicas

PRECISIN

Indica el orden de realizacin de cada paso dentro del proceso.

DEFINICION

Indica la exactitud y consistencia de los pasos descritos en el proceso,

si el algoritmo se prueba dos veces, en estas dos pruebas, se debe

obtener el mismo resultado.

FINITUD
Indica el nmero razonable de pasos, los cuales deben conllevar a la finalizacin del proceso
y producir un resultado en un tiempo finito.

Al disear un algoritmo se debe tener presente las caractersticas de precisin,


definicin y finitud.

Vous aimerez peut-être aussi