Algorithm 如何编写程序来生成排序决策树?
在课堂上,我们得到了一个简单的决策树,用于对3个元素(a、b、c)进行排序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中的文章肯定不是一个
(来源:) 在我看来,这是有道理的。我能跟上它 然而,我现在必须为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]-/