La simplification
Je tiens d'abord à simplifier le problème, à le faire:
- J'ai passer les axes et les ajouter les uns aux autres, il en résulte x2 croissance
- Je suppose que c'est une parabole sur un intervalle fermé
[a, b], where a = 0
et pour cet exemple, b = 3
Disons que vous êtes donné l' b
(deuxième partie de l'intervalle) et w
(la largeur d'un segment), alors vous pouvez trouver nombre total de segments en n=Floor[b/w]
. Dans ce cas, il existe un cas trivial de maximiser la somme de Riemann et de la fonction pour obtenir i-ième segment hauteur est de: f(b-(b*i)/(n+1)))
. En fait c'est une hypothèse, et je ne suis pas sûr à 100%.
Max ed exemple pour 17
des segments sur l'intervalle fermé [0, 3]
pour la fonction Sqrt[x]
vraies valeurs:
Et le segment des hauteurs de la fonction dans ce cas, est - Re[Sqrt[3-3*Range[1,17]/18]]
, et les valeurs sont:
{Sqrt[17/6], 2 Sqrt[2/3], Sqrt[5/2],
Sqrt[7/3], Sqrt[13/6], Sqrt[2],
Sqrt[11/6], Sqrt[5/3], Sqrt[3/2],
2/Sqrt[3], Sqrt[7/6], 1, Sqrt[5/6],
Sqrt[2/3], 1/Sqrt[2], 1/Sqrt[3],
1/Sqrt[6]}
{1.6832508230603465,
1.632993161855452, 1.5811388300841898, 1.5275252316519468, 1.4719601443879744, 1.4142135623730951, 1.35400640077266, 1.2909944487358056, 1.224744871391589, 1.1547005383792517, 1.0801234497346435, 1, 0.9128709291752769, 0.816496580927726, 0.7071067811865475, 0.5773502691896258, 0.4082482904638631}
Ce que vous avez archivé est un Bin-Packing problème, partiellement rempli bin.
Trouver b
Si b
est inconnu ou notre tâche est de trouver le plus petit possible b
en vertu de ce que tous les bâtons de la forme initiale du tas en forme. Ensuite, nous pouvons limiter au moins b
valeurs de:
- limite inférieure : si la somme des hauteurs de segments = somme des hauteurs de bâton
- limite supérieure :
nombre de segments = nombre de bâtonnets plus long bâton < le plus long segment de hauteur
Un de la façon la plus simple de trouver b
est de prendre un pivot à l' (higher limit-lower limit)/2
trouver si une solution existe. Ensuite, elle devient la nouvelle limite supérieure et inférieure, et vous répétez le processus jusqu'à ce que la précision demandée est respectée.
Lorsque vous êtes à la recherche pour b
vous n'avez pas besoin de résultat exact, mais sous-optimale et il serait beaucoup plus rapide si vous utilisez algorithme efficace pour trouver relativement proches du point de pivot à effectif b
.
Par exemple:
- triez les par le bâton longueur: du plus grand au plus petit
- commencer à "mettre de plus grands objets" dans la première bin ton ajustement