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
Algorithm 如何编写程序来生成排序决策树?_Algorithm_Sorting_Computer Science_Decision Tree - Fatal编程技术网

Algorithm 如何编写程序来生成排序决策树?

Algorithm 如何编写程序来生成排序决策树?,algorithm,sorting,computer-science,decision-tree,Algorithm,Sorting,Computer Science,Decision Tree,在课堂上,我们得到了一个简单的决策树,用于对3个元素(a、b、c)进行排序 (来源:) 在我看来,这是有道理的。我能跟上它 然而,我现在必须为4个元素(a、b、c、d)建立一个决策树,而叶子的数量刚刚增加到24个 我正在努力以一种有条不紊的方式接近决策树,这有助于我跟踪每个分支中我想比较的元素 构建更大决策树的方法是什么?如果我知道怎么做的话,我甚至愿意编写一个程序来吐出可能的leafs结构。查尔斯·福吉(Charles Forge)已经描述过这种算法:参见。(很抱歉,WP中的文章肯定不是一个

在课堂上,我们得到了一个简单的决策树,用于对3个元素(a、b、c)进行排序


(来源:)

在我看来,这是有道理的。我能跟上它

然而,我现在必须为4个元素(a、b、c、d)建立一个决策树,而叶子的数量刚刚增加到24个

我正在努力以一种有条不紊的方式接近决策树,这有助于我跟踪每个分支中我想比较的元素


构建更大决策树的方法是什么?如果我知道怎么做的话,我甚至愿意编写一个程序来吐出可能的leafs结构。

查尔斯·福吉(Charles Forge)已经描述过这种算法:参见。(很抱歉,WP中的文章肯定不是一个快速的答案,但它可能是一个好的开始)

您可能想看看S。我认为,应该可以将给定数量的输入的最佳排序网络转换为决策树

或者,您可以采用给定的排序算法并逐步执行,在每次比较时创建一个新分支


最后,您可以反向执行此操作—例如,采用合并排序类型的方法:在树的底部列出所有24个可能的排序顺序。选择一个比较,并根据结果将叶子分成两组。对每个分支递归重复,直到每个分支只有一片叶子。

在本例中,一个简单的方法是扩展现有的树。深度3树最多可以对
2^3=8
不同的结果进行排序,这足以对3个元素进行排序,因为
3!=图中为6和
6+1。我刚刚阅读了关于决策树的文章,这对我很有帮助。
// note: read from right to left
d<x<y<z -[yes]- (d<x)? -[yes]-- (d<y) -
x<d<y<z -[no]-/               /
x<y<d<z -[yes]- (d<z)? -[no]-/
x<y<z<d -[no]-/