我正在尝试为以下问题找到一种启发式函数。您将得到n个油漆桶,它们的最大容量为max_i,当前容量为curr_i,其颜色为colour_i,i = 1,n,并列出了o种可能的颜色组合:col1 + col2-> col3。问题的最终状态是必须在存储桶#(final_state)<= no中找到的一组对(数量,颜色)。桶。
目标是将这些存储桶混合在一起,例如最后,在至少一个存储桶中找到来自最终状态的每一对。如果您倒入的水桶未满,则可以在每次移动时从一个水桶倒入另一个水桶。
问题是,我无法想到经典的启发式方法来解决此问题,因为我无法比较初始状态下的存储桶和最终状态下的存储桶(这不是唯一的)。试探法一定是从当前状态到最终状态的移动次数,还是随着我们接近范围而减少的某个数字?
启发式必须为admissible,因此它不应低估实际距离。当您接近目标时,原则上应该更精确,因此可能突然变得更快。但这是完全可以的,只要它不被低估。
由于到目标的距离通常是移动次数,因此很难看出它与目标完全无关。因此,是的,启发式方法应该与移动的数量有关,但不必如此,只要它是悲观而不是乐观的。