Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Algorithm 什么是算法/结构,可以用来有效地发现一个对象是否匹配一组模式中的任何一个?_Algorithm_Data Structures_Language Agnostic_Tree - Fatal编程技术网

Algorithm 什么是算法/结构,可以用来有效地发现一个对象是否匹配一组模式中的任何一个?

Algorithm 什么是算法/结构,可以用来有效地发现一个对象是否匹配一组模式中的任何一个?,algorithm,data-structures,language-agnostic,tree,Algorithm,Data Structures,Language Agnostic,Tree,模式是包含值和函数的散列。例如: pattern = {a:1,b:2,c:function(x){ return x<5; }} 假设我有一组模式,我想找出一个对象是否匹配这些模式中的任何一个。我可以一个接一个地检查,但是,通过这种方式,我有一个O(n)复杂度,其中n是模式的数量。我有一种感觉,如果我使用这组模式来构建其他结构,这可以得到优化;但我不确定那是什么结构。想法?您可以创建(或将其优化为数据结构)。这需要在每个对象的评估期间仅读取一次每个相关变量 BDD是一种计算逻辑公式的方

模式是包含值和函数的散列。例如:

pattern = {a:1,b:2,c:function(x){ return x<5; }}
假设我有一组模式,我想找出一个对象是否匹配这些模式中的任何一个。我可以一个接一个地检查,但是,通过这种方式,我有一个O(n)复杂度,其中n是模式的数量。我有一种感觉,如果我使用这组模式来构建其他结构,这可以得到优化;但我不确定那是什么结构。想法?

您可以创建(或将其优化为数据结构)。这需要在每个对象的评估期间仅读取一次每个相关变量

BDD是一种计算逻辑公式的方法,在您的情况下,逻辑公式是

pattern_1 OR pattern_2 OR pattern_3 OR .... OR pattern_n

这怎么会是哈斯克尔的问题呢?老实说,我忍不住要引起一些哈斯克尔人的注意。那很糟糕,我知道,对不起。我将删除标签。(注意:我已经问了一个类似的问题,但我仍然无法解决问题。)说实话,维基百科上的文章有点糟糕。我不清楚如何为这个问题实现决策树。我正在研究,稍后会更新。谢谢。@Dokkat可能会更有帮助。如果您有关于BDD数据结构或如何将其用于您的案例的具体问题,请告知我(或者,如果您觉得BDD数据结构超出了范围,请就您的问题提出新问题,并向我发表意见,以便我看到第二个问题)。
pattern_1 OR pattern_2 OR pattern_3 OR .... OR pattern_n