viernes, 27 de octubre de 2023

CODIGO COMPARAR DOS NUMEROS

# Pedir al usuario que introduzca dos números
numero1 = float(input("Introduce el primer número: "))
numero2 = float(input("Introduce el segundo número: "))

# Comparar los números y mostrar el resultado
if numero1 > numero2:
    print(f"El número {numero1} es mayor que el número {numero2}.")
elif numero1 < numero2:
    print(f"El número {numero2} es mayor que el número {numero1}.")
else:
    print("Ambos números son iguales.")


Introduce el primer número: 4 Introduce el segundo número: 6 El número 6.0 es mayor que el número 4.0.

RESOLUCION DE PROBLEMAS CON PYTHON

Contenido

  1. Método de Fuerza Bruta
  2. Técnicas de Divide y Vencerás
  3. Programación Dinámica
  4. Algoritmos Voraces (Greedy)
  5. Backtracking
  6. Optimización

1. Método de Fuerza Bruta

El método de fuerza bruta es uno de los enfoques más simples para resolver problemas. Consiste en enumerar todas las posibles soluciones hasta encontrar la correcta.

Ejemplo: Búsqueda de un elemento en una lista

jecutemos este código con un ejemplo.

Trabajo finalizado
Mostrar detalles de ejecución

El resultado es 4, lo que significa que el elemento 5 se encuentra en el índice 4 de la lista. Este método tiene una complejidad de tiempo (), lo cual es ineficiente para listas grandes.

2. Técnicas de Divide y Vencerás

Este método implica dividir el problema en subproblemas más pequeños, resolverlos de manera independiente y luego combinar sus soluciones para resolver el problema original.

Ejemplo: Ordenamiento por Mezcla (Merge Sort)

Voy a implementar el algoritmo de ordenamiento por mezcla y ejecutarlo con un ejemplo.​​

Trabajo finalizado
Mostrar detalles de ejecución

La lista ordenada resultante es [3,9,10,27,38,43,82]. El algoritmo de ordenamiento por mezcla tiene una complejidad de tiempo (log), lo que lo hace bastante eficiente.

3. Programación Dinámica

La programación dinámica se utiliza para resolver problemas de optimización dividiéndolos en subproblemas más pequeños y almacenando las soluciones de estos subproblemas para evitar cálculos redundantes.

Ejemplo: Serie de Fibonacci

Implementaré una versión de la serie de Fibonacci utilizando programación dinámica y la ejecutaré con un ejemplo.​​

Trabajo finalizado
Mostrar detalles de ejecución

El 10º número en la serie de Fibonacci es 55. Al utilizar programación dinámica, la complejidad del tiempo se reduce a ().

4. Algoritmos Voraces (Greedy)

Los algoritmos voraces toman decisiones óptimas en cada paso local con la esperanza de encontrar una solución óptima global.

Ejemplo: Cambio de monedas

Supongamos que tenemos monedas de denominaciones 1, 5, 10, 25 y queremos hacer cambio para un valor dado . Implementaré un algoritmo voraz para resolver este problema.​​

Trabajo finalizado
Mostrar detalles de ejecución

El cambio para 67 utilizando las monedas de denominaciones 1, 5, 10 y 25 sería [25,25,10,5,1,1].

5. Backtracking

Backtracking es una técnica general para encontrar todas o algunas de las soluciones a problemas computacionales, especialmente de optimización y satisfacción de restricciones.

Ejemplo: Generación de todas las permutaciones de una cadena

Voy a implementar un algoritmo de backtracking para generar todas las permutaciones de una cadena dada.​​

Trabajo finalizado
Mostrar detalles de ejecución

Las permutaciones generadas para la cadena "abc" son [,,,,,].

6. Optimización

Finalmente, la optimización es una parte integral de la resolución de problemas. Se pueden utilizar diversas técnicas, como algoritmos genéticos, optimización de enjambre de partículas, etc., para mejorar la eficiencia de un algoritmo.


Problema de la Mochila (Knapsack Problem)

Supongamos que un inversor tiene un capital inicial y una lista de proyectos en los que podría invertir. Cada proyecto tiene un costo y un retorno esperado. El objetivo es maximizar el retorno total sin superar el capital inicial.

Para simplificar, digamos que el inversor tiene $50,000 para invertir y tiene 5 proyectos entre los cuales elegir:

  • Proyecto A: Costo = $10,000, Retorno = $20,000
  • Proyecto B: Costo = $15,000, Retorno = $30,000
  • Proyecto C: Costo = $20,000, Retorno = $40,000
  • Proyecto D: Costo = $25,000, Retorno = $50,000
  • Proyecto E: Costo = $30,000, Retorno = $60,000

Este es un problema de optimización combinatoria que se puede resolver con programación dinámica.

Implementación en Python

Voy a implementar una solución utilizando programación dinámica.

Trabajo finalizado
Mostrar detalles de ejecución

El retorno máximo que se puede obtener con un capital inicial de $50,000 es de $100,000. Los proyectos seleccionados para alcanzar este retorno óptimo son los proyectos A, B y D.

Esto muestra cómo se pueden tomar decisiones de inversión óptimas utilizando técnicas de programación dinámica, lo cual es muy aplicable en el campo de la Economía para la optimización de recursos.

Este tipo de enfoques podrían incorporarse en tus cursos, especialmente en "Análisis de Datos con Python y Asistentes Inteligentes" y "Proyectos con Aprendizaje Automático", donde la toma de decisiones basada en datos es crucial.