Definición de algoritmo y problema
Llamamos "algoritmo" al conjunto finito y ordenado de acciones con la que podemos resolver un determinado problema.
Llamamos "problema" a un situación que se nos presenta y que , mediante la aplicación de un algoritmo, pretendemos resolver
Los algoritmos están presentes en nuestra vida cotidiana y, aun sin saberlo, aplicamos algoritmos cada vez que se nos presenta un problema sin importar cual sea su grado de complejidad
Para ejemplificar esto imaginemos que estamos dando un paseo por la ciudad y que , al llegar a un esquina, tenemos que cruzar la calle. Intuitivamente, aplicaremos el siguiente algoritmo:
- Esperar a que la luz del semáforo peatonal este en verde (esperarSemaforo);
- Cruzar la calle (cruzarCalle );
La acción de esperarSemaforo implica:
- Observar la luz del semáforo (observarLuz);
- Si la luz está en "rojo" o en "verde intermitente" entonces
-ir a: observarLuz;
Por otro lado, la acción cruzarCalle implica:
- Bajar la calzada (bajarCalzada);
- Avanzar un paso (avanzarPaso);
- Si la distancia hacia la otra calzada es mayor que la distancia que podemos avanzar dando un nuevo paso entonces
Subir la calzada de la vereda de enfrente (subirCalzada);
Como vemos, cada acción puede descomponerse en acciones mas puntuales y especificas. Por lo tanto, cada una de las acciones del algoritmo se resuelve con su propio algoritmo o secuencia finita y ordenada de acciones.
Cuando una acción se descompone de acciones mas puntuales y especificas decimos que es un "modulo".
Podemos seguir profundizando cada acción tanto como queramos. Por ejemplo, analicemos la acción (o el modulo) bajarCalzada: esta acción se resuelve:
- levanto un pie,
- adelantándolo,
- inclinando el cuerpo hacia adelante,
- y poyando el pie en la calle, luego levanto el otro pie,
- adelantándolo y ,
- apoyándolo en la calle.
Análisis del enunciado de un problema
Resulta evidente que, si vamos a diseñar un algoritmo para resolver un determinado problema, tenemos que tener totalmente estudiado y analizado el contexto de dicho problema. Esto implica:
- Comprender el alcance.
- Identificar los datos de entrada
- Identificar los datos de salida o resultados
Análisis del problema
Repasemos el contexto del problema de "cruzar la calle" que formulamos mas arriba:
Caminando por la ciudad llegamos a una esquina y pretendemos cruzar la calle. Para poder cruzar con la mayor seguridad posible, tenemos que esperar que el semáforo habilite el paso peatonal.Hasta que esto ocurra nos encontraremos detenidos al lado del semáforo y una vez que esto lo permita avanzaremos, paso a paso, hasta llegar a la vereda de enfrente. Se considera que el semáforo habilita el paso peatonal cuando emite una luz "verde fija". En cambio si el semáforo emite una luz "roja" o "verde intermitente" se recomienda esperar
Datos de entrada
En este contexto podemos identificar los siguientes datos de entrada:
- Nuestra posición inicial, posición en donde nos detuvimos a esperar a que el semáforo habilite el paso peatonal.La llamaremos posInicial.
- Luz del semáforo, el color de la luz que el semáforo está emitiendo. Lo llamaremos luz.
- Distancia de avance de paso, que distancia avanzamos cada vez que damos un nuevo paso. La llamaremos distPaso.
- Posición de la vereda de enfrente. La llamaremos posFinal ya que es allí hacia donde nos dirigimos
Datos de salida
Si bien en este problema no se identifica datos de salida resulta evidente que luego de ejecutar la secuencia de acciones del algoritmo nuestra posición actual deberá de ser la misma de la posición de la vereda de enfrente. Es decir, si llamamos p a nuestra posición actual resultara que su valor al inicio del algoritmo sera posInicial y al final del mismo deberá ser posFinal.
biografia: "Algoritmos a fondo-Ing. Pablo A. Sznajdleder
No hay comentarios.:
Publicar un comentario