Apuntes
Apuntes
Apuntes
2 Ciclos
También conocida como optimización de rutas o problemas de ciclo hamiltoniano,
se refiere a la búsqueda de la ruta más corta o eficiente que pase por un conjunto
dado de nodos (o ciudades) exactamente una vez y vuelva al nodo de origen.
3.1.3 Globales
Se refiere a la búsqueda de la mejor solución posible en todo el espacio de
búsqueda, considerando todas las posibles soluciones y explorando múltiples
regiones del espacio de búsqueda para encontrar el óptimo global. A diferencia de
la optimización local, que se enfoca en encontrar un óptimo dentro de una región
específica del espacio de búsqueda, la optimización global busca la solución
óptima en todo el espacio de búsqueda, incluso cuando hay múltiples óptimos
locales.
3.1.4 De mirilla.
Se refiere al ajuste y optimización de parámetros para obtener la mejor calidad de
imagen o visión en aplicaciones que involucran cámaras, telescopios u otros
dispositivos ópticos.
3.2 Costos
generalmente se refiere a los recursos, ya sea en términos de recursos
computacionales, esfuerzo humano o recursos financieros, que se requieren para
realizar una tarea o actividad relacionada con el desarrollo, mantenimiento o
ejecución de software.
3.2.1 Costos de ejecución.
Abarcan una variedad de recursos computacionales, incluyendo tiempo de CPU,
memoria, ancho de banda de red, recursos de E/S y consumo de energía, que son
necesarios para ejecutar un programa de software de manera eficiente y efectiva.
Optimizar estos costos es fundamental para garantizar un buen rendimiento y una
experiencia de usuario satisfactoria.
3.2.2 Criterios para mejorar el código.
Sigue los principios de diseño limpio y código limpio: Utiliza nombres descriptivos
para variables, funciones y clases. Mantén las funciones pequeñas y enfocadas en
una sola tarea. Evita la duplicación de código y utiliza comentarios cuando sea
necesario para explicar el propósito o el funcionamiento del código.
Elimina código redundante: Revisa tu código en busca de repeticiones
innecesarias. Esto incluye líneas de código que realizan la misma tarea, bloques
de código que se repiten en diferentes partes del programa y variables que no se
utilizan.
Utiliza estructuras de datos eficientes: Elije las estructuras de datos más
adecuadas para tu problema y utiliza métodos y funciones integradas para
manipular y procesar datos de manera eficiente. Por ejemplo, utiliza listas por
comprensión en lugar de bucles for para operaciones simples en listas.
Evita la anidación excesiva de bucles y condicionales: Demasiada anidación
puede hacer que el código sea difícil de entender y mantener. Intenta refactorizar
el código para eliminar la anidación excesiva utilizando funciones auxiliares o
técnicas de programación funcional.
Aplica técnicas de programación funcional y expresiones lambda: Utiliza funciones
lambda y funciones de orden superior como map(), filter() y reduce() para realizar
operaciones en listas de manera concisa y elegante.
Haz un uso adecuado de la comprensión de listas, conjuntos y diccionarios: Utiliza
la comprensión de listas, conjuntos y diccionarios de Python para crear y
manipular colecciones de datos de manera concisa y legible
Compilación:
Antes de entrar en a generación de código objeto, es importante entender el
proceso de compilación en su totalidad. La compilación es el proceso mediante el
cual un programa escrito en un lenguaje de alto nivel (como C++, Java, etc) se
traduce en un programa ejecutable entendible por la computadora.
Instrucciones de máquina:
El código objeto contiene instrucciones de máquina específicas para la
arquitectura de la CPU para la que se compila el programa. Estas instrucciones
son ejecutadas directamente por el procesador.
Enlazado:
Después de la generación de código objeto, el siguiente paso es el enlazado. En
esta etapa, se combinan todos los archivos de código objeto necesarios y se
resuelven las referencias a símbolos externos para formar un programa ejecutable
completo.
4.1 Registros
¿Qué son los registros?
Los registros son pequeñas unidades de almacenamiento de datos que forman
parte del procesador de computadora. Son células almacenamiento de datos de
una de alta velocidad que se utilizan para almacenar información temporalmente
durante la ejecución de programas.