簡體   English   中英

通過最少移動數來最小化裝滿球的桶的最大重量的算法

[英]Algorithms to Minimize Maximum Weight across Buckets filled with Balls by Making Least Number of Moves

我有K個水桶。 每個桶包含一定數量的球B,其中每個球都有一定的重量。

我想知道是否有算法可以完成以下任務:

我想一次移動一次,然后將一些重量從一個存儲桶轉移到另一個存儲桶,以使所有存儲桶的最大重量最小。 我想重復此過程,直到通過最少的步驟獲得最平衡的重量配置。

有沒有解決該問題的算法?

這是我想到的方法:

  1. 天真:遍歷鏟斗中所有球的組合,並采用具有min(max(所有鏟斗上的重量)的變體。這是我的最佳配置。現在一次移動一個球,直到實現此配置。 ,但無法編程,因為我們有num_buckets ^ num_balls個復雜度,這會導致無效的球數很大。

  2. 貪婪樹:從頭開始,以循環方式貪婪地將球分布在垃圾箱中。 在每次迭代中-將球放入最大最小的容器中。 這不會帶來最佳的平衡,但是會帶來更好的平衡,然后我可以一步一步地實現此配置。

這感覺就像是一個問題,其中我具有成本函數,並且在第一步中具有BxK的移動次數。

是否有已知的算法可以激發更好的解決方案? (由於我有固定數量的垃圾箱,因此垃圾箱在這里不起作用。)我不是在尋找一種解決方案,而是尋找一種解決平衡問題的算法,即使看起來不完全一樣,它也與此相似。

首先,讓我們對貪婪算法進行一些限制:將球按降序排列(最重)。

之后,從最重到最輕的垃圾箱進行工作。 對於每個垃圾箱,尋找可以減輕其重量而又不使移動的其他垃圾箱達到最大重量的交換或移動。 繼續此過程,直到無法再改善最重的垃圾箱為止。

我無法證明這是否會為您提供最佳解決方案,但這將是非常不錯的。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM