Algoritmos

Los algoritmos se utilizan en muchos lados, especialmente en programación. Explicaré que son y daré un ejemplo.

Antes de dar una definición de algoritmo, quiero aclarar que existen muchas enunciaciones de los mismos, pero para mí la mejor descripción de ellos es:

«Un algoritmo es una secuencia de pasos definidos para alcanzar la solución a un determinado problema.»

Los algoritmos suelen ser muy utilizados en informática para la resolución de problemas y la generación de programas.

Los mismos deben cumplir con ciertas características, ellas son:

  • I. Finitud: un algoritmo siempre debe terminar después de un número finito de pasos. Este número de pasos debe ser un número razonable, sin que este sea demasiado grande.
  • II. Determinación: cada paso de un algoritmo debe estar definido con toda precisión. Las acciones a efectuar deben estar especificadas, para cada paso, rigurosamente y sin ambigüedad. En los algoritmos se deben eliminar las imprecisiones, de modo que sus reglas describan operaciones simples y bien definidas capaces de ser ejecutadas por una máquina.
  • III. Entrada: un algoritmo puede tener cero o más entradas, es decir, cantidades que le dan inicialmente, antes de que el algoritmo comience.
  • IV. Salida: un algoritmo tiene una o más salidas, o sea, cantidades que tienen una relación específica con las entradas.
  • V. Efectividad: para que un algoritmo sea efectivo todas las operaciones que realice deben ser lo suficientemente básicas y elementales como para que puedan hacerse en un intervalo de tiempo finito, es decir que las acciones descritas como sus reglas de control deben ser realizables y aplicables por un humano o máquina.

Hay muchos tipos de algoritmos, entre ellos podemos encontrar:

  • Algoritmos numéricos.
  • Algoritmos lógicos.
  • Algoritmos lúdicos.
  • Algoritmos informáticos (suelen combinar algoritmos numéricos con lógicos).
  • Etc.

A continuación mostraré un ejemplo de algoritmo en la cual se describen los pasos para jugar al famoso TATETI. En dicho algoritmo se detallan los pasos que se deben seguir para ganar una partida en el caso de comenzar primero. El detalle de todo el algoritmo se puede descargar en un archivo al final del artículo, en el documento que completa el algoritmo se contempla el caso de que el rival comience primero, pero en este segundo caso, puede que no se llegue a ganar la partida si el rival aplica el algoritmo del paso anterior para ganar el juego.

También quiero mencionar que el algoritmo está escrito en un seudo lenguaje en las que podemos encontrar las siguientes expresiones:

  • «SELECT CASE» = «Seleccionar un caso»
  • «CASE» = «Caso»
  • «END CASE» = «Fin de selección de un caso»
  • «SI» = «Si ocurre que»
  • «SINO» = «Si no ocurre lo anterior y ocurre lo siguiente»
  • «FIN SI» = «Finaliza la evaluación de una condición»

Bueno luego de estas aclaraciones para entender mejor el algoritmo sigamos con lo prometido.

Algoritmo para jugar al TATETI

Referencias:

Suponiendo el siguiente tablero.

Ref. Tablero

A

B C
D E F
G H I

Y las siguientes definiciones:

NF1 = Nuestra Ficha 1

NF2 = Nuestra Ficha 2

NF3 = Nuestra Ficha 3

RF1 = Rival Ficha 1

RF2 = Rival Ficha 2

RF3 = Rival Ficha 3

(Aquí comienza el algoritmo) 

Para el caso de comenzar primero:

Ubicar la primer ficha (NF1) en el centro E.

SELEC CASE

CASE  RF1 = F (Caso en el que el rival ponga su ficha en el casillero «F»)                                   Poner segunda ficha (NF2) en G

            Si rival pone la ficha (RF2) en C, entonces

                                   Poner la tercer ficha (NF3)  en I

            Sino si rival pone la ficha (RF2) en , A,B,D,H,I , entonces,

                                   Poner tercer ficha (NF3) en C.

            Fin si

            Si RF3 NO ES H, ENTONCES

                        MOVER NF1 A H

            SINO SI RF3 = H, ENTONCES

                        MOVER NF2 HACIA D.

                        MOVER NF2 HACIA A

            FIN SI

CASE  RF1 = D

                                   Poner segunda ficha (NF2) en I

            Si rival pone la segunda ficha (RF2) en A, entonces

                                   Poner la tercer ficha (NF3) en G

            Sino rival pone la ficha (RF2) en B,C,F,H,G , entonces,

                                   Poner tercer ficha (NF3) en A.

            Fin si              

            Si RF3 NO ES H, ENTONCES

                        MOVER NF1 HACIA H

            SINO SI RF3 = H, ENTONCES

                        MOVER NF2 HACIA F.

                        MOVER NF2 HACIA C

            FIN SI

CASE  RF1 = B

                                   Poner segunda ficha (NF2) en I

            Si rival pone la segunda ficha (RF2) en A, entonces

                                   Poner la tercer ficha (NF3) en C

            Sino rival pone la ficha (RF2) en C,F,H,G,D , entonces,

                                   Poner tercer ficha (NF3) en A.

            Fin si

            Si RF3 NO ES F, ENTONCES

                        MOVER NF1 HACIA F

            SINO SI RF3 = F, ENTONCES

                        MOVER NF2 HACIA H.

                        MOVER NF2 HACIA G

            FIN SI

CASE  RF1 = H

                                   Poner segunda ficha (NF2) en A

            Si rival pone la ficha (RF2) en I, entonces

                                   Poner la tercer (NF3) ficha en G

            Sino si rival pone la ficha (RF2) en , B,C,D,F,G,H , entonces,

                                   Poner tercer ficha (NF3) en I.

            Fin si

            Si RF3 NO ES D, ENTONCES

                        MOVER NF1 HACIA D

            SINO SI RF3 = D, ENTONCES

                        MOVER NF2 HACIA B.

                        MOVER NF2 HACIA C

            FIN SI

CASE  RF1 = I

                                   Poner segunda ficha (NF2) en D

            Si rival pone la ficha (RF2) en F, entonces

                                   Poner la tercer ficha (NF3) en C

            Sino si rival pone la ficha (RF2) en , A,B,C,G,H,I , entonces,

                                   Poner tercer ficha (NF3) en F.

            Fin si

            Si RF3 NO ES G, ENTONCES

                        MOVER NF2 HACIA G

            SINO SI RF3 = G, ENTONCES

                        MOVER NF2 HACIA A.

                        MOVER NF1 HACIA B.

            FIN SI

CASE  RF1 = C

                                   Poner segunda ficha (NF2) en D

            Si rival pone la ficha (RF2) en F, entonces

                                   Poner la tercer ficha (NF3) en I

            Sino si rival pone la ficha  (RF2) en, A,B,C,G,H,I , entonces,

                                   Poner tercer ficha (NF3) en F.

            Fin si

            Si RF3 NO ES A, ENTONCES

                        MOVER NF2 HACIA A

            SINO SI RF3 = A, ENTONCES

                        MOVER NF2 HACIA G.

                        MOVER NF1 HACIA H

            FIN SI

CASE  RF1 = A

                                   Poner segunda ficha (NF2)en H

            Si rival pone la segunda ficha (RF2) en B, entonces

                                   Poner la tercer ficha (NF3) en C

            Sino si rival pone la ficha (RF2) en , A,C,D,G,H,I,F , entonces,

                                   Poner tercer ficha (NF3) en B.

            Fin si

            Si RF3 NO ES G, ENTONCES

                        MOVER NF2 HACIA G

            SINO SI RF3 = D, ENTONCES

                        MOVER NF2 HACIA I.

                        MOVER NF1 HACIA F

                        FIN SI

CASE  RF1 = G

                                   Poner segunda ficha (NF2) en B

            Si rival pone la segunda ficha (RF2) en H, entonces

                                   Poner la tercer ficha (NF3) en I

            Sino si rival pone la segunda ficha (RF2) en , A,B,C,D,F,I , entonces,

                                   Poner tercer ficha (NF3) en H.

                        Fin si

            Si RF3 NO ES A, ENTONCES

                        MOVER NF2 HACIA A

            SINO SI RF3 = A, ENTONCES

                        MOVER NF1 HACIA F.

                        MOVER NF2 HACIA C

                        FIN SI

Para el caso de que el rival comience primero… (Continua en el archivo)

Descargar algoritmo completo: Algoritmo para jugar al tateti

Otro ejemplo de algoritmo es el utilizado para resolver los sistemas de ecuaciones explicado en el post «Método Gauss Seidel»

2 comentarios en «Algoritmos»

  1. Ola.. muy bn explicado esto! pero nesecitos ejemplos y conceptos acerrca de los algoritmos logicos y de uso general!
    esperando tus concideradas respuestas
    gracias!

  2. opino lo mismo neceito algoritmos de uso general aunque tengo una idea y tambien cuales son ejemplos de algoritmos lógicos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.