【发布时间】:2014-06-26 03:40:09
【问题描述】:
我无法解决一个看似简单的问题。我和我的女朋友正在尝试制定每周的膳食计划,我有一个绝妙的主意,我可以优化我们购买的东西,以最大限度地利用它来制作东西。问题是,问题并不像看起来那么容易。简而言之,问题陈述如下:
问题: 给定 100 种成分的列表和由 100 种成分中的一种或多种成分组成的 50 种菜肴的列表,找出可以产生最多菜肴数量的 32 种成分的列表。
这个问题看起来很简单,但我发现计算答案并非易事。我采用的方法是将 32 种成分的组合计算为 100 位字符串,其中设置了 32 位。然后我检查一下可以用那个配料号做哪些菜。如果菜肴的数量大于当前的最大值,我会从列表中保存。然后我计算下一个有效的成分组合并重复、重复和重复。
32 种成分的组合数量惊人!在我看来,使用我的方法计算大约需要 300 万亿年。我已经优化了代码,因此每个组合只需要 75 微秒就可以计算出来。假设我可以优化代码,我也许可以将运行时间减少到仅仅万亿年。
我认为需要一种全新的方法。我目前在 XOJO (REALbasic) 中对此进行编码,但我认为真正的问题在于方法而不是具体实现。有人对本世纪有可能完成的方法有想法吗?
谢谢,
罗恩
【问题讨论】:
-
我发现了一个真正了不起的算法,可以使用 BASIC 在 O(1) 中计算这个,这个评论太窄了,无法包含。
-
可能类似于this question?
-
马特,我很想看看你有什么。可以PM我看看吗?
-
彼得,是的,这本质上是同一个问题。感谢您向我指出。我会研究一下,看看我能不能找到它。
标签: algorithm optimization combinations