这是公认,对于每个拟阵和任何加权函数,有退出的算法,其返回的最大重量为基础的。那么,反向也是正确的吗?也就是说,如果有一些贪婪算法,那么也必须有一些拟阵结构。
这是公认,对于每个拟阵和任何加权函数,有退出的算法,其返回的最大重量为基础的。那么,反向也是正确的吗?也就是说,如果有一些贪婪算法,那么也必须有一些拟阵结构。
Answers:
实际上,这可以通过一个贪心算法需要解决的问题的全面彻底的描述是一个拟阵嵌入,从而推广拟阵的两个概念,一个的greedoid。答案是否定的-贪婪算法可解决的问题不必具有拟阵结构,但将具有拟阵嵌入的结构(可惜,要复杂得多)。
为此的一种心理模型可能是找到最小的生成树。Kruskal算法使用的结构是拟阵,但Prim算法(需要起始节点)使用的不是。(但是,它是一个贪婪的物体,并且是拟似的嵌入物。)
Helman等。(1993),在他们的论文《贪婪结构的精确表征》中,从集合系统的角度定义了贪婪算法的概念,这与拟阵和贪婪的形式主义相同。甲集系统 由一组和收集的子集的,所谓的可行集合。甲基础对于该组系统是一个极大可行集合,即,一组是可行的,但不包含在任何其它可行集合。一个目标函数的每个子集相关联带的值。一个S C S f :2 S → R S 在这种形式主义中,最优化问题在于找到给定集合系统和目标函数的最大目标值的基础。
用这种形式主义定义的贪婪算法非常简单:从空集开始,然后依次添加单个元素,直到达到基础为止,并始终确保(i)您的集在每个步骤中都是可行的,并且( ii)您添加的元素可最大程度地提高结果结果的客观功能wrt。您可能已添加的所有替代元素。(也就是说,从概念上讲,您尝试添加所有可行的替代方案,然后选择产生最高目标值的替代方案。)
您可能会争辩说,可能还有其他形式的贪婪算法,但是关于算法和组合优化的几本教科书将这种基于集合系统的算法描述为贪婪算法。我想这并不能阻止您描述不适合的内容,但仍可以称为贪婪。(不过,这不盖任何东西,可能有一个拟阵结构,例如,虽然它是多比较一般。)
什么Helman等。他们所做的是描述这种算法何时起作用。进一步来说:
他们表明,对于线性目标函数(目标值是元素权重的总和),贪婪算法将完全在定义为拟阵嵌入的结构上工作;
对于所谓的瓶颈目标(一组目标值等于各个元素权重中的最小值),它们给出了相似的特征;和
他们给出了精确的表征,这些目标函数(超越线性函数)是通过对拟阵嵌入的贪婪算法进行优化的。
考虑以下问题:硬币硬币兑换欧元:鉴于有无限数量的1,2,5,10欧元纸币,请使用尽可能少的纸币支付X欧元。这可以通过使用贪婪算法来解决,该算法会尽可能多地注意。但是在这个问题上没有拟阵结构。
孔覆盖:x_1,x_2,...,x_n处有孔。您的贴片长度为10厘米。使用尽可能少的补丁修补孔。同样,这可以用贪婪的方式解决(只要将补丁尽可能地正确放置即可),但是没有拟阵结构。