es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dado un conjunto de números positivos, encuentra las combinaciones aditivas que sean lo más cercanas posible a una constante dada.

Digamos que tengo un conjunto de números. Ahora quiero descubrir con qué combinaciones aditivas se desviarán menos de 0.2 (en total). Cada número solo puede emparejarse con otro número.

Por ejemplo, los números son 0.1, 0.15, 0.3, 0.2 y 0.13… Par 1: 0.1 + 0.15, par 2: 0.3 + 0.2… luego, sea d_i la desviación del par i, ¿cómo encontrar las combinaciones aditivas que logren la suma mínima de d_i?

He pensado mucho y he buscado, pero aún no he podido resolver esta pregunta con Python. Una combinación que se desvíe mínimamente de 0.2 podría hacer que otra combinación se desvíe aún más.

SOS por favor.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que te estás enfrentando requiere encontrar la desviación mínima de pares de números a partir de un valor dado. Un enfoque para resolver este problema es utilizar la combinatoria para generar todos los posibles pares y luego calcular la desviación para cada par. Finalmente, selecciona el conjunto de pares que desvíe lo menos posible del valor dado.

    A continuación, se presenta un enfoque en Python para resolver este problema:

    import itertools
    
    # Conjunto de números
    numbers = [0.1, 0.15, 0.3, 0.2, 0.13]
    
    # Valor al que desviarse
    target_value = 0.2
    
    # Generar todos los posibles pares
    pairs = list(itertools.combinations(numbers, 2))
    
    # Calcular la desviación para cada par
    deviations = [abs(sum(pair) - target_value) for pair in pairs]
    
    # Seleccionar pares con la desviación mínima
    min_pairs_idx = [i for i, d in enumerate(deviations) if d == min(deviations)]
    
    # Imprimir pares con la desviación mínima
    for i in min_pairs_idx:
        print(f"Par {i + 1}: {pairs[i]} con desviación {deviations[i]}")
    

    Este enfoque genera todos los posibles pares de números a partir del conjunto dado utilizando itertools.combinations. Luego, calcula la desviación para cada par restando la suma del par al valor objetivo y tomando el valor absoluto. Después de eso, selecciona los pares con la desviación mínima e imprímelos.

    Espero que esto te ayude a resolver tu problema. Si tienes alguna pregunta o inquietud adicional, por favor avísame.

Comments are closed.