【问题标题】:efficient algorithm for guessing有效的猜测算法
【发布时间】:2011-09-15 04:57:38
【问题描述】:

我将一个现实世界的问题抽象为以下问题:

  • X 是所有可能的字母排列的集合。
  • Y 是一个字符串池。
  • F 是一个函数,它从 X 中获取一个候选 x,并根据 x 是否属于 Y 返回一个布尔值。

F 很贵,X 很大。 从 Y 中提取尽可能多的结果的最有效方法是什么?误报是可以的。

【问题讨论】:

  • 您可能想在这里提问:cstheory.stackexchange.com
  • 你把它抽象得太远了。在不了解 F 的情况下,没有比暴力搜索更好的方法了。
  • 从你告诉我的情况来看,我看不出有什么比顺序处理更好的了。但是,如果某些结果比其他结果更“有趣”,并且您希望有更好的机会更早地而不是更晚地看到这些有趣的结果,那么随机化顺序可能会有所帮助。

标签: algorithm performance computer-science data-mining heuristics


【解决方案1】:

确实没有办法很好地回答这个问题,因为这类问题的大多数解决方案都是高度特定于领域的。

您可能应该在这里尝试您的问题:https://cstheory.stackexchange.com/

但是,给你一个例子来说明你正在谈论的可能性范围;旅行推销员问题似乎很相似——通常用“自组织地图”解决:http://www.youtube.com/watch?v=IA6eGYMyr1A

当然,人们对旅行商问题提出的“解决方案”不一定是最好的解决方案,只是一个好的解决方案......所以你的问题并不表明这是否适用于你的情况与否。

听起来您在要求某种更有效的暴力破解技术……但根本没有。

作为另一个示例,对于破解密码(这似乎与您的问题相似),人们通常先尝试“常用词/密码”,然后再诉诸暴力……但这又是一个特定于域的解决方案。

【讨论】:

    【解决方案2】:

    引入另一个函数 G,它很便宜,也可以测试 x 是否属于 y。当 F 返回 true 时 G 必须返回 true,并且当 F 返回 false 时可能返回 true。首先使用 G 进行测试,仅当 G 返回 true 时才使用 F 进行测试。

    考虑到您的表述的一般性,我不知道该怎么说更具体。

    【讨论】:

      【解决方案3】:

      通过实现Delta based score calculation 降低 F 的成本。然后使用元启发式(或分支定界)找到尽可能多的 Y(例如使用 Drools Planner)。

      【讨论】:

        猜你喜欢
        • 2018-05-10
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-19
        • 2013-12-23
        • 2019-10-16
        • 2023-02-03
        相关资源
        最近更新 更多