Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 迭代发现定义向量条件的布尔规则的算法_String_Algorithm_Search_Boolean Logic - Fatal编程技术网

String 迭代发现定义向量条件的布尔规则的算法

String 迭代发现定义向量条件的布尔规则的算法,string,algorithm,search,boolean-logic,String,Algorithm,Search,Boolean Logic,我感兴趣的是找到一个迭代发现定义向量条件的布尔规则的算法。例如,假设向量是一本书中的所有字母,这个规则旨在告诉你这本书是否是詹姆斯·乔伊斯写的,但我们不知道这个规则是什么,我们想发现它。对于任何提交的向量,规则引擎将始终回答True或False。因此,例如,如果我们提交一个包含“尤利西斯”中所有字符的向量数组,那么引擎可能会响应“True”,如果规则是好的 所以,想象一下我们把《尤利西斯》分成两半,A和B,然后将每一半分别提交给引擎。引擎对A的回答为真,但对B的回答为假。从这一点我们可以推断出规

我感兴趣的是找到一个迭代发现定义向量条件的布尔规则的算法。例如,假设向量是一本书中的所有字母,这个规则旨在告诉你这本书是否是詹姆斯·乔伊斯写的,但我们不知道这个规则是什么,我们想发现它。对于任何提交的向量,规则引擎将始终回答True或False。因此,例如,如果我们提交一个包含“尤利西斯”中所有字符的向量数组,那么引擎可能会响应“True”,如果规则是好的

所以,想象一下我们把《尤利西斯》分成两半,A和B,然后将每一半分别提交给引擎。引擎对A的回答为真,但对B的回答为假。从这一点我们可以推断出规则所寻找的东西只在A中找到。因此,现在我们再次将A分为两部分,A1和A2。这一次发动机对这两种情况都说是假的。现在,我们可以推断规则中一定有AND条件,AND条件的一个原子必须在A1中,另一个在A2中。例如,规则可能是:“如果向量中的单词‘meatjuice’和‘carracarra’返回True。这与我们的测试结果一致,因为“meatjuice”在书的第一季度,“carracarra”在第二季度

通过连续分割文本并重新提交到引擎,我们最终可以发现引擎使用的隐藏规则


我怀疑已经有一种算法可以做到这一点,但我不知道它叫什么,也不知道如何找到它。

我将这个问题描述为使用成员查询学习单调公式。Angluin(查询和概念学习,1988)给出了一种与您类似的算法,但它使用了等价查询(即,找到一个当前假设不起作用的例子)以及成员资格查询。否则的问题是,找到最后一个术语可能需要相当长的时间。例如,假设规则是

   (A1 && B1) || (A2 && B1) || ... || (An && B1)
|| (A1 && B2) || (A2 && B2) || ... || (An && B2)
|| (B1 && B2).

由前两行组成的假设与规则仅在
2^(n+2)中的一个方面不同
输入。

在每次迭代中,如果搜索字符串的一部分位于第一个分区,而另一部分位于第二个分区,那么这种二进制搜索不是有第三种可能性吗?在这种情况下,我们必须从第一部分找到字符串的开始字符,从第二部分找到结束字符(再次通过二进制搜索)。如果规则只有一个原子,则该算法将转换为简单的二进制搜索。例如,如果规则是“如果书中有单词carracarracarra,则为True”,则您可以使用二进制搜索来发现该规则。但该规则可能有多个原子。例如,该规则可能是“如果(a&B&C)| |(D&E)| | |(F&G&H)|”(一) | |(J&K)then True“其中A-K是不同的单词。因此,问题是创建一个算法来发现这个规则。