高效的猜测算法

| 我将一个现实世界的问题抽象为以下问题: X是字母所有可能排列的集合。 Y是一个字符串池。 F是一个函数,它从X提取候选x并根据x是否属于Y返回布尔值。 F昂贵而X巨大。 从Y提取尽可能多的结果的最有效方法是什么?误报是可以的。     
已邀请:
        引入另一个便宜的函数G,并测试x是否属于y。每当F返回true时,G必须返回true,并且在F返回false时可以返回true。首先使用G进行测试,仅当G返回true时才使用F进行测试。 考虑到您的表达方式的一般性,我看不出要说的更具体。     
        确实没有办法很好地回答这个问题,因为针对这些类型问题的大多数解决方案都是特定于领域的。 您可能应该在这里尝试您的问题:https://cstheory.stackexchange.com/ 但是,举一个您正在谈论的可能性范围的例子; “旅行推销员”问题似乎很相似-通常可以通过“自组织地图”解决:http://www.youtube.com/watch?v=IA6eGYMyr1A 当然,“解决方案”人员提出的旅行业务员问题不一定是最佳解决方案,而只是一个很好的解决方案...所以您的问题并不表示这是否适用是否适合您的情况。 听起来您正在寻求某种更有效的暴力破解技术...但是根本没有。 再举一个例子,为了破解密码(这似乎与您的问题类似),人们通常先尝试使用“常用单词/密码”,然后再使用总蛮力……但这又是特定于域的解决方案。     
        通过实施基于增量的得分计算,使F的成本降低。然后使用元启发法(或分支定界法)找到尽可能多的Y \(例如,使用Drools Planner)。     

要回复问题请先登录注册