Unidad N°1
Unidad N°1
Lógica y algoritmos
Introducción
Video de Inmersión
Unidad 1. Lógica
La lógica puede definirse como la disciplina que formaliza el estudio de los métodos de razonamiento. Es un conjunto de
técnicas y teoremas que nos permiten modelar y definir formas de razonar. Las estructuras del pensamiento y las reglas que
las gobiernan son estudiadas en la lógica.
En el ámbito de la informática, la lógica es un concepto de fundamental importancia; es imprescindible que seamos capaces de
crear proposiciones para que el computador las pueda ejecutar. Recordemos que el computador no es capaz de interpretar, por
lo que, mientras menor sea la ambigüedad, mejor serán nuestros códigos.
Para representar una proposición, se utilizan sentencias y una serie de signos con un significado determinado.
Una característica fundamental de una proposición es que se debe poder definir si es verdadera o falsa en un momento del
tiempo. Por ejemplo, veamos las siguientes oraciones:
La hoja es blanca.
¿Qué es el océano?
Juan sabe leer.
¡Pórtese bien!
Analizando cada una de las oraciones, solo podemos decir que son verdaderas o falsas la primera y la tercera, ya que la hoja
puede ser blanca o no y Juan puede saber leer o no. La segunda oración, al ser una pregunta, no afirma nada sobre ninguna
cosa; por último, la cuarta oración es una orden que puede ser cumplida o no, pero al igual que la pregunta, no afirma nada
sobre ninguna cosa.
Una proposición lógica es toda oración declarativa que pueda decirse si es verdadera o falsa.
Es muy importante indicar que una proposición nunca puede ser verdadera y falsa. Esto se corresponde con los principios
fundamentales de la lógica proposicional:
Principio de no contradicción
Dadas dos proposiciones contradictorias entre sí, no pueden ser ambas verdaderas. Por ejemplo, si tenemos una proposición
que indica que -1 es un valor negativo y otra que indica que -1 es un valor positivo, solo una de estas oraciones es verdadera,
no pueden ser verdaderas ambas, ya que son contradictorias.
Principio de tercero excluido
Dadas dos proposiciones contradictorias entre sí, no pueden ser ambas falsas. Siguiendo con el ejemplo anterior, como ambas
proposiciones son contradictorias, no puede ser que ambas sean falsas a la vez; por lo tanto, una es verdadera y la otra es
falsa.
Principio de identidad
Toda proposición es idéntica en sí misma, es decir, algo no puede ser y no ser al mismo tiempo y en la misma relación. Este
es, sin duda, el principio más complejo, sin embargo, nos dice algo sumamente simple, porque indica que cada proposición es
igual a sí misma. Por ejemplo, el círculo es un círculo y no es un rectángulo, o un auto es un auto y no una bicicleta. Toda
proposición tiene una identidad propia.
El objetivo de la lógica proposicional no es determinar si algo es verdadero o falso, sino más bien las estructuras en la que las
proposiciones intervienen y las reglas que regulan las combinaciones. Por ejemplo:
El elefante es un mamífero.
5 es un número entero.
La luna gira en torno a la tierra.
Las proposiciones anteriores son de tipo simple, ya que pueden ser ciertas o no; pero estudiar si son realmente ciertas no es
responsabilidad de la lógica, sino más bien de la ciencia correspondiente.
Los valores de verdad indican dos posibles estados: verdadero o falso. Cuando hablamos de valores de verdad de una
proposición, nos referimos a si esta es verdadera o falsa.
Ejemplos
Revisemos algunos ejemplos para identificar el valor de verdad de una proposición.
Tabla 1: Ejemplos de preposiciones
Las proposiciones simples no siempre son suficientes para expresar lo que necesitamos; por este motivo, también existen las
proposiciones complejas.
Las proposiciones simples pueden combinarse de diferentes maneras para generar proposiciones más complejas, utilizando,
entre ellas, determinados operadores llamados conectores lógicos. Por ejemplo:
Para poder realizar operaciones sobre las proposiciones mediante conectores lógicos, se utilizan variables proposicionales.
Estas variables son –básicamente– formas simples de representar una proposición, como seudónimos. Por ejemplo:
La variable “p” representa la proposición Juan sabe hablar inglés. Ahora, cada vez que nos referimos a esta oración podemos
utilizar simplemente “p” y no escribirla por completo.
La variable “p” puede ser verdadera (valor representado por una letra V) o falsa (valor representado por una letra F). Podemos
utilizar una tabla denominada tabla de verdad, para ver todos los posibles valores que puede tener una proposición:
Verdadero.
Falso
Como lo vimos antes, una proposición solo puede tener dos valores: verdadero (V) o falso (F); por esta razón, la tabla de
verdad de una proposición simple solo tiene estas dos alternativas.
Conectores lógicos
Negación
El conectivo lógico de negación invierte el valor de verdad de una proposición. Cuando aplicamos este conector a una
proposición lógica verdadera, el resultado es falso. Cuando lo aplicamos a una proposición lógica falsa, el resultado es
verdadero.
Dada una proposición lógica p, se define como negación de p a la proposición ¬p (que se lee como no p), que es
verdadera si p es falsa, y falsa si p es verdadera.
Por ejemplo, dada la proposición p definida: “p: Juan sabe hablar inglés”, ¿cuál es ¬p (no p)?
La respuesta es que ¬p va a depender del valor de p. Los posibles valores se encuentran en la tabla de verdad:
Tabla 3: Tabla de verdad de p y ¬p
p ¬p
V ¿?
F ¿?
La negación de p es falsa si p es verdadera y verdadera si p es falsa, porque siempre es el valor contrario al que posee la
variable, por lo que la tabla de verdad se completaría de la siguiente forma:
Tabla 4: Tabla de verdad de p y ¬p resuelta
p ¬p
V F
F V
Cuando indicamos la expresión “hoy no es un día de verano”, en realidad, la proposición es “hoy es un día de verano”, que se
encuentra negada por el operador «no»; por lo tanto, quedaría de la siguiente forma:
Conjunción
Este operador conecta dos proposiciones simples mediante el término “y”. Esta es una de las formas más comunes de
combinar oraciones en nuestro lenguaje. Por ejemplo:
La conjunción utiliza el símbolo ^; de este modo, las proposiciones anteriores podrían ser representadas de la siguiente forma:
p ^ q.
Dadas dos proposiciones p y q, llamaremos conjunción de p y q a la proposición p ^ q (que se lee p y q), que es
verdadera si ambas, p y q, lo son, o es falsa en todos los otros casos.
Siguiendo con el ejemplo anterior, podemos elaborar la siguiente tabla de verdad:
Tabla 5: Tabla de verdad de p ^ q
Como ahora tenemos dos proposiciones, las posibles combinaciones son mayores. Mientras más proposiciones tengamos,
mayores serán las posibles combinaciones. La cantidad exacta es 2 elevada al número de proposiciones a combinar. En este
caso 22, lo que nos da un total de 4 filas.
Para resolver la tabla anterior, debemos volver a la definición de conjunción. El resultado es verdadero solamente cuando las
dos proposiciones son verdaderas, para todos los demás casos el resultado es falso.
Tabla 6: Tabla de verdad de p ^ q resuelta
p q p^q
V V V
F F F
V F F
F V F
Disyunción
La disyunción une dos proposiciones simples mediante el término “o”. Por ejemplo:
p q pvq
V V ¿?
F F ¿?
V F ¿?
F V ¿?
Para encontrar los resultados, debemos remitirnos a la definición de disyunción. El resultado es falso únicamente cuando
ambas proposiciones son falsas, para lo demás el resultado es verdadero.
Tabla 8: Tabla de verdad de p v q resuelta
p q pvq
V V V
F F F
V F V
F V V
Implicación
La implicación es un consecuente de las proposiciones anteriores, es decir, implica una condicionalidad sobre el resultante de
la tabla de valor de las proposiciones anteriores. Por ejemplo, si en todas las evaluaciones obtengo una nota superior a 9,
entonces promociono la materia.
Resumen
Veamos a continuación un resumen de los conectores vistos:
Tabla 9: Resumen de conectores proposicionales
Conectivo Símbolo Operación Significado
No es el caso de p
No ¬ Negación
Y ^ Conjunción pyq
O v Disyunción poq
Fuente: elaboración propia
Ejemplos
Podemos realizar combinaciones entre los diferentes conectores. Tomemos, por ejemplo, la siguiente frase para la aprobación
de una asignatura: “tener promedio sobre 6 o tener promedio sobre 4, y no tener notas bajo 4”.
Por último, debemos identificar que la segunda y la tercera proposición se encuentran unidas, ambas deben cumplirse juntas
para poder aprobar; en este caso, utilizamos paréntesis para poder agruparlas.
Ejercicio 1
Revisá los valores de verdad de las siguientes proposiciones y funciones y, luego, creá la tabla de la verdad.
Podrás descargar la tabla en el siguiente PDF:
Se puede definir como un sistema matemático basado en los valores 1 (verdadero) y 0 (falso), en conjunto con las
operaciones AND, OR y NOT. Las variables en este sistema no pueden tomar valores diferentes a 1 y 0, y se denominan
variables booleanas.
El álgebra nos ayuda a desarrollar una capacidad de razonamiento lógica; esto es fundamental a la hora de programar.
Operación AND
Esta operación se corresponde con la conjunción (y) de las proposiciones lógicas. La operación lógica AND se representa con
el símbolo ·. Lo que corresponde a una multiplicación lógica.
En este ejemplo, la operación es AND corresponde a la conjunción en proposiciones lógicas. Recordemos que 1 significa
verdadero y 0 significa falso. Recordemos también que el resultado de una conjunción es verdadero solo si ambas
proposiciones son verdaderas y falso en los otros casos. En este caso, sería lo siguiente: 1 (verdadero) · 0 (falso) = 0 (falso).
Veamos otro ejemplo; en este caso A = 1 y B = 1. Sigamos los pasos definidos anteriormente:
En este ejemplo, al igual que en el anterior, la operación es AND corresponde a la conjunción en proposiciones lógicas.
Recordemos que 1 significa verdadero y 0 significa falso. Recordemos también que el resultado de una conjunción es
verdadero solo si ambas proposiciones son verdaderas, y falso en los otros casos. En este caso, sería lo siguiente: 1
(verdadero) · 1 (verdadero) = 1 (verdadero).
La conjunción u operación AND corresponde a una multiplicación lógica, es decir, cada vez que multipliquemos por 0
(falso) el resultado será 0. Por lo tanto, la única oportunidad de que el resultado sea 1 (verdadero) es que ambas
variables sean 1.
Operación OR
Esta operación corresponde con la disyunción de las proposiciones lógicas. La operación lógica OR se representa con el
símbolo +. Lo que corresponde a una suma lógica. Por ejemplo, dados dos valores booleanos A = 1 y B = 0, ¿cuál es el
resultado de la operación A + B?
En este ejemplo, la operación es OR, que corresponde a la disyunción en proposiciones lógicas. Recordemos que 1 significa
verdadero y 0 significa falso. Recordemos también que el resultado de una disyunción es falso solo si ambas proposiciones son
falsas, y verdadero en los otros casos. En este caso, sería lo siguiente: 1 (verdadero) + 0 (falso) = 1 (verdadero).
En este caso, la operación es OR, que corresponde a la disyunción en proposiciones lógicas, sería la siguiente: (falso) + 0
(falso) = 0 (falso).
La disyunción u operación OR corresponde a una suma lógica, es decir, que cada vez que sumemos 1 (verdadero) el
resultado será 1. Por lo tanto, la única oportunidad de que
el resultado sea 0 (falso) es que ambas variables sean 0.
Operación NOT
Esta operación se corresponde con la negación de las proposiciones lógicas. La operación lógica NOT se representa con el
símbolo `. Por ejemplo, dado el valor booleano A = 1, ¿cuál es el resultado de la operación A`?
En este ejemplo, la operación es NOT, corresponde a la negación en proposiciones lógicas. Recordemos que 1 significa
verdadero y 0 significa falso. Recordemos también que el resultado de una negación es falso si la proposición es verdadera, y
verdadera si la proposición es falsa. En este caso, sería lo siguiente: (verdadero) ` = 0 (falso)
La operación NOT establece que, dada una variable booleana cuyo valor es igual a 1, el resultado de aplicar esta
operación será 0. Si la variable es igual a 0, el resultado de aplicar esta operación será igual a 1.
Así, queda demostrada la primera regla. Veamos la segunda para los mismos valores:
Leyes de Morgan
(A AND B)` = A`
OR B`. (A OR B)` = A` AND B`.
Una función lógica es la expresión que define las operaciones para realizar sobre un conjunto de variables, para obtener un
resultado. Por ejemplo, veamos la siguiente función:
s = (A + B) · [(C · A) + (D · B`)].
Tenemos la función “s” definida por un conjunto de operaciones sobre las variables A, B, C y D.
Las funciones lógicas se resuelven de la misma manera que hemos estado operando con variables y operadores booleanos
hasta ahora. Para resolver la función, primero, debemos obtener los valores de las variables; en este caso, serán los
siguientes:
A = 0.
B = 0.
C = 1.
D = 0.
Ahora que tenemos los valores de las variables, procedemos a resolver la función:
s = 0 · [0 + (0 · 1`)].
s = 0 · [0 + (0 · 0)].
s = 0 · [0 + 0].
s = 0 · 0.
s = 0.
Hemos resuelto la ecuación, y hemos llegado a la conclusión de que su resultado es cero, de acuerdo con los valores definidos
de las variables.
Existe cierta jerarquía a la hora de resolver una función, la cual detallamos a continuación:
Primero, resolvemos los paréntesis. En caso de existir subexpresiones, resolvemos de adentro hacia afuera. Por ejemplo,
si tememos [(1 · 0) + (0 · 0`)], resolvemos (1 · 0) y (0 · 0`).
Segundo, resolvemos el operador NOT, por ejemplo (0 · 1`) nos quedaría (0 · 0).
Tercero, resolvemos los operadores OR y AND.
En caso de tener operadores del mismo nivel de jerarquía, debemos considerar la resolución de izquierda a derecha. Por
ejemplo, si tenemos 0 · 0 + 0, primero, resolvemos el AND y luego el OR.
Ejercicios
Resolvé las expresiones que se presentan a continuación; determiná si son verdaderas (1) o falsas (0). Considerá los
siguientes valores para las variables.
A=1
B=0
C=1
D=1
Expresión Valor
(A · B)
(A · C)
(B · B’)
(A · C) + (B · B’)
(A’ · B’) + D
(D + D’) · D
(A + B) · (C + D)
D‘
(A · B)’
(C + D)’
[(C · B) + (B · B`)]
Fuente: elaboración propia
Ahora integrá los conceptos de lógica proposicional y álgebra de Boole y completá la siguiente tabla.
Importante: no olvides la ley de Morgan que establece que (A OR B)` es igual a A` AND B`.
Tabla 11: Ejercicio 3
A B A OR B (A OR B)` A` B` A` AND B`
0 0
0 1
1 0
1 1
Unidad 2. Algoritmos
Los problemas son algo cotidiano en nuestra vida, tenemos que resolver situaciones tanto en nuestro trabajo (llegar a tiempo
con la entrega de un determinado proyecto) como en nuestra vida personal (entender cuánto podemos gastar de acuerdo con
nuestro salario). Estamos resolviendo problemas casi todo el tiempo y, aunque no nos demos cuenta, siempre seguimos un
conjunto de pasos para resolverlos. Para entregar un proyecto a tiempo, primero, vemos cuánto trabajo nos queda por hacer
para verificar si realmente podemos entregarlo en la fecha establecida o, cuando calculamos cuánto podemos gastar, siempre
miramos nuestros ingresos primero. Ese conjunto de pasos que utilizamos para resolver problemas se denominan algoritmos.
Cuando los problemas son relativamente simples, podemos resolverlos mentalmente en pocos segundos; cuando esos
problemas son más complejos (como crear un sistema de software), existen técnicas y procedimientos que nos ayudan a
diseñar los pasos que deberíamos realizar para solucionarlos.
Podemos definir un algoritmo como un conjunto definido de instrucciones, con un orden y una cantidad determinada de pasos
(no existen algoritmos con infinitos pasos). Los algoritmos permiten llevar a cabo una actividad mediante pasos sucesivos que
no generen dudas a quien deba realizar dicha actividad.
☰ Ordenados
Los algoritmos no son solo el conjunto de pasos, se debe definir también la secuencia en la que dichos pasos se deben
realizar. Por ejemplo, no es lo mismo poner en el horno la comida por media hora y luego encender el horno. Existe cierto
orden que se debe cumplir para lograr el objetivo; en este caso, encender el horno y luego poner la comida por media hora.
☰ Finitos
Los pasos de un algoritmo tienen que tener una cantidad determinada de pasos y, eventualmente, tener al menos un paso
final. No existen algoritmos con un conjunto infinito de pasos. Esto sucede porque los algoritmos nos permiten obtener la
solución a un problema y necesitamos llegar a su final para conseguirlo. Si no tuvieran un fin, nunca obtendremos el resultado.
☰ Definidos
Dado un problema determinado, si se sigue el mismo algoritmo, se debe llegar a los mismos resultados. En el caso de seguir
el algoritmo para armar un mueble, por ejemplo, una mesa, por mucho que repitamos indefinidamente el algoritmo, siempre
nos entregará una mesa, nunca una silla. Los algoritmos tienen un objetivo a cumplir y esto se refleja en el resultado.
Por ejemplo, supongamos que queremos preparar un helado de frutilla, los pasos de la receta serían los siguientes:
Posee un orden: efectivamente, el algoritmo está ordenado por una secuencia de números que indican el orden que se debe
seguir. Antes de añadir leche, limón y azúcar, debemos cortar las frutillas, mezclarlas con azúcar y dejarlas reposar.
Es finito: el total de pasos es un número determinado, son ocho pasos en total y, después del último, obtenemos el resultado.
Es definido: si realizamos estos pasos exactamente de la misma manera, bajo las mismas condiciones, obtendremos el
mismo tipo de helado (frutilla).
Ahora sabemos que, cada vez que leemos una receta de cocina, estamos viendo un conjunto de pasos finitos y definidos, con
un orden determinado; por lo tanto, estamos viendo un algoritmo.
En el caso de la programación, los algoritmos son un poco más complejos, pero siguen las mismas bases que una receta.
Tienen pasos, orden y un mismo resultado, si se ejecutan dos o más veces.
Veamos un algoritmo simple de programación. Tenemos que determinar los pasos para sumar dos números y, al resultado,
multiplicarlo por dos (2). ¿Cuáles serían los pasos que se deben seguir?
Por ejemplo, si el primer valor es tres (3) y el segundo uno (1), el algoritmo se comportaría de la siguiente manera:
El resultado de aplicar el algoritmo con los números tres (3) y uno (1) es igual a ocho (8).
Programar la suma y multiplicación de tres números es algo muy distinto a elaborar helado de frutilla, pero podemos ver que
ambos algoritmos tienen las mismas características: tienen un número finito de pasos, dichos pasos están ordenados, y cada
paso está definido de forma tal que cada vez que ejecutamos los algoritmos obtenemos los mismos resultados.
Figura 2: Características de un algoritmo
Fuente: elaboración propia
Ejercicio 4
Imaginá que vas por una autopista y tu automóvil pincha una rueda, entonces, tenés que cambiarla. Buscaste en internet y
encontraste un algoritmo para poder hacerlo, pero no te convence.
Indicá cuál es el problema que identificás en el algoritmo planteado. Tené presente que un algoritmo siempre debe ser
ordenado, definido y finito.
1. Estacionar el automóvil.
2. Obtener las herramientas a utilizar.
3. Aflojar los tornillos de la rueda pinchada.
4. Sacar la rueda pinchada.
5. Levantar el automóvil.
6. Obtener la rueda buena del automóvil.
7. Poner los tornillos en la rueda nueva.
8. Poner la rueda buena en el automóvil.
9. Bajar el automóvil.
10. Volver a circular.
Entrada: los algoritmos siempre poseen una entrada; al ser nada más que una secuencia de pasos, se necesita una entrada a
la cual aplicar los pasos. Son los insumos que le entregarás al algoritmo para que pueda comenzar a trabajar.
Proceso: el proceso refiere a los pasos definidos, en los que manipulamos la entrada para llegar a un resultado.
Salida: una vez que terminamos de aplicar todos los pasos, siempre obtenemos un resultado. El resultado de las operaciones
o pasos de un algoritmo sobre una entrada específica se denomina salida.
Siguiendo con el ejemplo de la receta de helado, ¿cuáles serían las entradas del algoritmo? Los ingredientes son la entrada,
sería muy difícil hacer helado de frutilla sin las frutillas o sin azúcar.
Todos los algoritmos deben tener una entrada, porque los pasos en sí no pueden hacer nada si no tienen dónde aplicarse.
Ahora bien, ¿cuál sería la salida? El helado resultante de aplicar el último paso es la salida. Sin una salida, los algoritmos no
servirían para nada, ¿para qué vamos a hacer una secuencia de pasos que no da un resultado? Siempre se crea un resultado
después de ejecutar un algoritmo.
En el segundo ejemplo, el algoritmo de suma y multiplicación, tenemos como entrada dos números (el número utilizado para
multiplicar no es una entrada, porque se especifica en los pasos que debe ser igual a dos). Una vez que tenemos las dos
entradas, realizamos los pasos y obtenemos el resultado de la operación. Ese resultado es la salida.
Figura 3: Partes de un algoritmo
Ejemplo
Identificar correctamente las partes de un algoritmo es importante, ya que nos permite tener más claro su funcionamiento, los
insumos que requiere y lo que podemos esperar de él. De los siguientes algoritmos, identifiquemos cuáles son entradas,
procesos y salidas.
Tabla 12: Ejemplo de algoritmo
Pasos Clasificación
Pasos Clasificación
Pasos Clasificación
Ejercicio 5
Volvamos sobre el algoritmo para cambiar la rueda del auto. ¿Cuáles de estos pasos considerás que son una entrada, cuáles
de ellos son procesos y cuáles son salidas?
1. Estacionar el automóvil.
2. Obtener las herramientas a utilizar.
3. Aflojar los tornillos de la rueda pinchada.
4. Levantar el automóvil.
5. Sacar la rueda pinchada.
6. Obtener la rueda buena del automóvil.
7. Poner la rueda buena en el automóvil.
8. Poner los tornillos en la rueda nueva.
9. Bajar el automóvil.
10. Volver a circular.
Lenguaje
Podemos clasificar los algoritmos en virtud de si se escriben con un lenguaje natural, es decir, con palabras, o a través de
cálculos numéricos, esto es, con números y operadores -como la suma y la resta-.
Cualitativos
Se utilizan palabras para definir los pasos. Por ejemplo, un algoritmo cualitativo sería el conjunto de pasos para limpiar
correctamente un piso:
(2 + 3) x 2 – 4.
5 x 2 – 4.
10 – 4.
6.
Función
Podemos tener algoritmos que cumplan diferentes funciones que, en general, se pueden clasificar en las siguientes:
☰ Búsqueda
Estos algoritmos se encargan de encontrar un determinado ítem dentro de un conjunto. Por ejemplo, buscar un número dentro
de una lista o una palabra en un libro. Los más conocidos son los algoritmos que utilizan los buscadores de internet, como, por
ejemplo, Google.
☰ Ordenamiento
Su objetivo es ordenar un conjunto de valores de acuerdo con un criterio específico. El criterio puede ser ordenar
alfabéticamente, en orden numérico, entre otros. Por ejemplo, dada una lista de palabras, ordenarlas de manera alfabética.
Algunos ejemplos de esta clase de algoritmos en nuestra vida cotidiana son las recomendaciones que hacen aplicaciones
como Netflix, YouTube o Spotify, que ordenan su contenido de acuerdo con las preferencias de los usuarios.
☰ Encaminamiento
Algoritmos que buscan cómo debe ser la trayectoria de un objeto desde un lugar a otro. Por ejemplo, si tenemos que viajar a
tres ciudades diferentes, este tipo de algoritmo nos ayudará a decidir cuál es la forma más corta de hacer el viaje. Google
Maps utiliza este tipo de algoritmo, el que nos permite obtener rutas con menor cantidad de tiempo en el trayecto o menos
cantidad de kilómetros recorridos.
Por último, los algoritmos se pueden clasificar en relación con la estrategia que utilizan para llegar al resultado.
☰ Determinista
Cada paso dentro del algoritmo es lineal. Esto significa que cada paso (a excepción del primero) tiene un solo predecesor y un
solo sucesor (a excepción del último). No existen caminos alternativos de acuerdo con sus entradas. Dentro de estos
algoritmos, encontramos las funciones matemáticas.
☰ Probabilístico
Este tipo de algoritmo utiliza valores pseudoaleatorios como entrada para poder llegar a una solución. Estos algoritmos
ejecutan la cantidad suficiente como para determinar un nivel de confianza en su resultado. ¿Has jugado alguna vez a la
batalla naval? ¿Dónde debes hundir los barcos de tu enemigo? La selección de la casilla es aleatoria, el algoritmo es siempre
el mismo y, en algunas ocasiones, el resultado es correcto, es decir, que seleccionas una casilla en la que se encuentra un
barco.
☰ Voraz
Los algoritmos voraces evalúan cada una de las posibilidades y eligen la mejor de ellas. Esto se puede utilizar al buscar la ruta
óptima para llegar de un lugar a otro, o en la red, la ruta que debe seguir un paquete para tomar el menor tiempo.
Identificar un problema consiste en darse cuenta de que existe y que podemos darle una solución. Podemos detectarlo
nosotros mismos o puede surgir de un pedido en particular
El análisis del problema es el proceso mediante el cual este se interpreta y se buscan las posibles soluciones. Es decir, se
debe verificar la causa del problema, el alcance de la solución y el resultado esperado para poder identificar las diferentes
soluciones que se pueden aplicar a la hora de resolverlo.
Por ejemplo, supongamos que debemos viajar de una ciudad a otra; seguramente, tenemos varios caminos, cada uno con sus
ventajas y desventajas (uno es más corto, otro es pavimentado, etcétera).
Abstracción
Abstraerse de un problema es concentrarse en lo que es importante para solucionarlo.
Siguiendo con el ejemplo anterior, es importante ver el estado de la ruta, si tiene peaje o no, si tiene estación de gas; pero no
es importante conocer quién es el gobernador de la ciudad, ya que esto no nos aporta información útil para lo que queremos
solucionar. Lo que nos importa es usar el mejor camino; de lo demás debemos abstraernos y, por lo tanto, no tomarlo en
cuenta.
Aquí, estableceremos la estrategia que sea más efectiva para cumplir con el objetivo, que está directamente relacionado con el
problema a resolver. Tenemos que hacerlo con un detalle suficiente como para que no quede duda de lo que se debe hacer.
Volviendo al ejemplo del viaje, el plan podría representarse como las rutas que se van a tomar, cuándo se necesita doblar, por
cuáles pueblos pasar, cada cuánto cargar nafta, etcétera.
En nuestro ejemplo, podríamos hacer una simulación: seleccionamos diferentes caminos, analizamos cuánto sería el costo del
peaje, de nafta, verificamos en alguna aplicación los consejos de otras personas que realizaron la misma ruta, etc.
De esta prueba, podríamos concluir que el algoritmo cumple con el objetivo planteado o que se requieren hacer cambios para
poder ajustar el camino de nuestra estrategia.
Ajustar la estrategia
En el caso de que la prueba no haya dado los resultados deseados, debemos adaptar el plan, teniendo en cuenta la nueva
información.
Si en el camino encontramos muchos cortes en una ruta particular, podemos tomar otra ruta que sea más rápida en el próximo
viaje.
Es importante realizar pruebas y ajustar la estrategia hasta que tengamos un resultado deseado.
Figura 7: Pasos para la resolución de problemas
Fuente: elaboración propia.
Video de habilidades
Asignación de variables
Creación de objetos
Ejecución de funciones
Definición de clases
Justificación
Justificación
¿Cuándo el operador OR es verdadero?
Siempre es verdadero.
Siempre es falso.
Justificación
No existe el operador
Justificación
Enviar mensajes
Asociar atributos
Codificar en C++
Justificación
Cuadernillo de actividades
Actividad
Resolución
Glosario
Referencias
Magic Markers [Magic Markers]. (s.f.). ¿Qué es un algoritmo? [Video]. YouTube. [Link]