¿Definición de algoritmo?
un algoritmo es un conjunto finito de instrucciones o pasos precisos, definidos y ordenados que permiten solucionar un problema, realizar un cómputo o llevar a cabo una tarea específica.
Para que un conjunto de pasos sea considerado un algoritmo, debe cumplir con estas características fundamentales:
- Preciso: Cada paso debe estar claramente definido y no dar lugar a ambigüedades.
- Ordenado: Debe seguir una secuencia lógica; el orden de los pasos es crucial para obtener el resultado correcto.
- Finito: Debe tener un inicio y un fin definido; no puede ejecutarse infinitamente.
- General: Debe ser capaz de resolver el problema para diferentes valores de entrada (no solo para un caso específico).
- Eficiente: Debe lograr el objetivo utilizando la menor cantidad de recursos posibles (tiempo y memoria).
¿Como se representa?
Los algoritmos no son exclusivos de la informática; los usamos constantemente en la vida cotidiana. Por ejemplo, una receta de cocina es un algoritmo: recibes ingredientes (datos de entrada), sigues pasos secuenciales y obtienes un plato terminado (resultado).
En el ámbito técnico, se representan comúnmente de tres formas:
- Lenguaje natural: Descrito paso a paso con palabras cotidianas.
- Pseudocodigo: Una forma intermedia que usa convenciones similares a los lenguajes de programación pero legible para humanos.
- Diagrama de flujo: Representaciones gráficas que utilizan símbolos estandarizados para mostrar el flujo de la lógica.
Ejemplo básico (Lógica cotidiana)
Si quisiéramos crear un algoritmo para "Cambiar una bombilla fundida", se vería así:
¿Tipos de algoritmo?
Los algoritmos pueden clasificarse bajo diversos criterios, dependiendo de su función, su estrategia de resolución o su naturaleza técnica.
1. Clasificación por estrategia de diseño.
Esta es la forma más común de categorizar algoritmos en la informática, ya que define cómo resuelven un problema.
Algoritmos de Búsqueda: Diseñados para localizar un elemento específico dentro de una estructura de datos.
Ejemplo: Búsqueda binaria, búsqueda lineal.
Algoritmos de Ordenamiento: Organizan elementos en una secuencia específica (numérica o alfabética).
Ejemplo: Quicksort, Mergesort, Burbuja.
Algoritmos Voraces (Greedy): Toman la mejor decisión local en cada paso con la esperanza de alcanzar el óptimo global.
Ejemplo: Algoritmo de Dijkstra (para rutas cortas).
Algoritmos de Divide y Vencerás: Dividen el problema en sub-problemas más pequeños, los resuelven y luego combinan los resultados.
Ejemplo: Algoritmo de ordenamiento por mezcla.
Programación Dinámica: Resuelven problemas complejos dividiéndolos en sub-problemas, pero almacenando los resultados de estos para no tener que recalcularlos (evita redundancia).
Algoritmos de Backtracking: Exploran todas las soluciones posibles de forma sistemática y descartan las que no llevan a la solución.
Ejemplo: Resolver un Sudoku o el problema de las ocho reinas.
2. Clasificación por Naturaleza (¿Cómo funcionan?)
Algoritmos Computacionales: Diseñados para ser ejecutados por una computadora.
Algoritmos No Computacionales: Pasos lógicos que realiza un ser humano sin necesidad de una máquina.
Ejemplo: Una receta de cocina o las instrucciones para armar un mueble.
Algoritmos Deterministas: El resultado siempre será el mismo ante las mismas entradas.
Algoritmos Probabilísticos (o Aleatorios):
Introducen un elemento de azar en su lógica; el resultado puede variar o ser una aproximación.
3. Clasificación según la Tecnología o Área de Aplicación
Algoritmos de Aprendizaje Automático (Machine Learning):
Supervisados: Aprenden a partir de datos etiquetados (ej. clasificación de correos como spam).
No supervisados: Encuentran patrones ocultos en datos no etiquetados (ej. segmentación de clientes).
Algoritmos de Cifrado (Criptográficos): Utilizados para la seguridad y protección de la información.
Ejemplo: AES, RSA.
Algoritmos de Compresión: Reducen el tamaño de los datos.
Ejemplo: Algoritmos de pérdida (JPEG) o sin pérdida (ZIP).
Tipo Objetivo Principal
Búsqueda Encontrar un dato específico.
Ordenamiento Acomodar elementos en orden.
Greedy Decisión óptima local rápida.
Backtracking Explorar todas las rutas posibles.
Criptografía Proteger y asegurar información.
¿Características de algoritmo?
Para que una secuencia de pasos sea considerada formalmente un algoritmo en el ámbito de la computación y las matemáticas, debe cumplir con ciertas características fundamentales que garantizan su eficacia y utilidad.
1. Precisión (Definibilidad)
Cada paso del algoritmo debe estar claramente definido y no dejar lugar a ambigüedades. Las instrucciones deben ser precisas para que, al ser ejecutadas, el resultado sea siempre el esperado.
2. Determinismo
Un algoritmo es determinista si, ante los mismos datos de entrada, siempre produce exactamente el mismo resultado. No debe haber elementos de azar o incertidumbre en su ejecución lógica.
3. Finitud
El algoritmo debe tener un número finito de pasos. Esto significa que debe terminar después de realizar una cantidad determinada de operaciones, evitando entrar en bucles infinitos. Debe tener un inicio y un final.
4. Entrada (Input)
Todo algoritmo requiere cero o más datos de entrada para comenzar. Estos son los valores sobre los cuales el algoritmo operará para procesar la información.
5. Salida (Output)
Debe producir al menos un resultado o respuesta (o un cambio de estado en el sistema). Es la respuesta al problema que el algoritmo se diseñó para resolver.
6. Eficiencia
Aunque un algoritmo sea correcto, debe ser eficiente en términos de recursos. Esto se mide mediante la complejidad algorítmica:
Complejidad Temporal: Cuánto tiempo tarda en ejecutarse (número de pasos).
Complejidad Espacial: Cuánta memoria requiere para almacenar los datos intermedios.
¿Importancia de algoritmo?
Es una secuencia lógica, finita y ordenada de pasos diseñados para resolver un problema o ejecutar una tarea específica. Su importancia es fundamental en la era moderna, ya que actúan como el "ADN" de todo lo que ocurre en el mundo digital y gran parte de nuestro entorno físico.
Aquí detallo por qué son tan cruciales:
1. Estandarización y Eficiencia
Los algoritmos permiten que procesos complejos se realicen siempre de la misma manera, minimizando el error humano. Al automatizar tareas repetitivas, aumentan la velocidad y la precisión.
- Ejemplo: Un algoritmo bancario calcula el interés de miles de cuentas en milisegundos, algo que tomaría años a una persona manualmente.
2. Resolución de Problemas Complejos
Los algoritmos dividen problemas grandes o difíciles en pasos manejables y lógicos. Esto es la base de la programación, donde un problema de software se descompone en pequeñas instrucciones que una máquina puede ejecutar.
3. Personalización y Experiencia de Usuario
La mayor parte de la tecnología que usamos hoy (redes sociales, buscadores, plataformas de streaming) se basa en algoritmos de recomendación. Estos analizan datos para predecir preferencias individuales, mejorando la utilidad y relevancia del contenido para el usuario.
4. Avance de la Inteligencia Artificial
La IA no es otra cosa que algoritmos de aprendizaje automático (machine learning) que mejoran su rendimiento a medida que procesan más datos. Sin algoritmos, no existiría el reconocimiento facial, los asistentes virtuales, la traducción automática ni los vehículos autónomos.
5. Optimización de Recursos
En ámbitos como la logística, el transporte o la industria, los algoritmos determinan la ruta más corta, el uso más eficiente de energía o la gestión de inventarios, reduciendo costos y el impacto ambiental.
Resumen de su impacto:
|
Ámbito | Aplicación Práctica
|
|
Ciencia | Secuenciación de ADN, modelado climático.
|
|
Economía
|
Trading de alta frecuencia, detección de fraude.
|
|
Vida Diaria
|
GPS (Google Maps), motores de búsqueda, compras online.
|
|
Salud
|
Diagnóstico médico asistido, desarrollo de fármacos.
|
¿Qué es diagrama de flujo?
Un diagrama de flujo (o flowchart) es la representación gráfica de un algoritmo o de un proceso. Es una herramienta visual que utiliza símbolos estándar para mostrar los pasos secuenciales, las decisiones y las direcciones que toma una tarea desde su inicio hasta su finalización.
Su importancia radica en que traduce la lógica abstracta del algoritmo a un lenguaje visual, lo que facilita enormemente la comunicación, el análisis y la detección de errores.
Componentes básicos
Un diagrama de flujo se construye utilizando símbolos específicos que indican la naturaleza de cada acción:
Óvalo (Inicio/Fin): Representa el punto de partida o el resultado final del proceso.
Rectángulo (Proceso): Indica una acción, cálculo o instrucción de procesamiento.
Rombo (Decisión): Representa un punto donde se debe tomar una bifurcación (usualmente Sí/No o Verdadero/Falso).
Flechas (Líneas de flujo): Indican la dirección y el orden del proceso.
Paralelogramo (Entrada/Salida): Se utiliza para la lectura de datos o la muestra de resultados.
¿Por qué son útiles?
Claridad: Permiten visualizar procesos complejos de un solo vistazo, eliminando ambigüedades.
Detección de errores: Es mucho más fácil identificar cuellos de botella o lógica circular en un gráfico que en un bloque de código o texto.
Documentación: Sirven como un manual de instrucciones estándar para cualquier persona que deba ejecutar o auditar el proceso.
Comunicación Interdisciplinaria: Permiten que personas no técnicas (como gerentes o clientes) entiendan la lógica detrás de un sistema desarrollado por programadores.
Ejemplos sencillos sobre el uso de Diagramas de Flujo:
Tomar una decisión: ¿Qué hacer si está lloviendo.
Secuencia de pasos: Una guía paso a paso para preparar café.
Bucle o repetición: El proceso de estudio y repaso hasta entender un tema.
¿Qué es Pseudo-código?
es una forma de escribir algoritmos utilizando un lenguaje cercano al humano (generalmente español o inglés) en lugar de utilizar la sintaxis estricta de un lenguaje de programación específico.
Su objetivo principal es permitir que los programadores y estudiantes se concentren en la lógica y el diseño de la solución de un problema, sin tener que preocuparse por las reglas gramaticales, los puntos y coma, las llaves o la compilación técnica de un lenguaje como Python, C++ o Java.
Características principales
Legibilidad: Es fácil de leer y entender para cualquier persona, incluso sin conocimientos profundos de informática.
Independiente: No depende de ningún lenguaje de programación en particular.
Estructurado: Utiliza estructuras lógicas similares a la programación real (secuencial, condicional y repetitiva).
Sin ejecución: No puede ser ejecutado directamente por una computadora; debe ser "traducido" (codificado) a un lenguaje real.
Elementos comunes del pseudocódigo
Para que sea útil, el pseudocódigo suele emplear palabras clave estandarizadas:
Entrada/Salida: Leer (para obtener datos del usuario), Escribir o Imprimir (para mostrar resultados).
Asignación: <- o = (para guardar un valor en una variable).
Condicionales: Si... Entonces... Sino... FinSi.
Ciclos (Bucles): Mientras... Hacer... FinMientras o Para... Hasta... Hacer... FinPara.
¿Por qué se utiliza?
Planificación: Ayuda a organizar las ideas antes de empezar a escribir código real.
Depuración lógica: Es más sencillo encontrar errores de lógica en pseudocódigo que dentro de miles de líneas de código complejo.
Herramienta de enseñanza: Es el estándar en las facultades de ingeniería y ciencias de la computación para enseñar los fundamentos de la programación.
Ejemplos sencillos sobre el uso de Pseudo-código:
Estructura Secuencial: Muestra cómo calcular el promedio de dos notas (8 y 10), explicando el proceso paso a paso.
Estructura Condicional: Determina si un estudiante aprueba o reprueba basándose en una nota de corte, con ejemplos visuales de ambos resultados.
Estructura Repetitiva - Bucle: Ilustra cómo imprimir los números del 1 al 10 utilizando un contador que se incrementa en un bucle MIENTRAS.
Autor:
Christian Bondarchuk C. I:32.834.941.
Asesor técnico:
Lenin Villarroel
Sección 5
Asignatura: algoritmica de programación 1
Barcelona, 10/06/2026
Comentarios
Publicar un comentario