请输入您要查询的百科知识:

 

词条 排列树
释义

§ 含义

排列是组合数学问题,而很多组合数学问题都可以在图之间进行转换。树是一种特殊的图。在这里我用一种特殊的树结构实现排列算法,这种树就是N层满N叉树(N可以是任意自然数)。图一就是一个三层满三叉树。它刚好有3层,并且除叶结点外每节点有3个儿子。利用这种树的性质我们很容易就能直观的获得一个3排列。[1]

§ 设计一个可排列的树形结构

根节点(000000)

--第一层子节点1(000100)

----第二层子节点1(000101)

----第二层子节点2(000102)

----第三层子节点3(000103)

--第一层子节点2(000200)

----第二层子节点1(000201)

----第二层子节点2(000202)

----第三层子节点3(000203)

--第一层子节点3(000300)

如果按照这样的排列顺序插入数据库表里。通过dtree的js来实现,因为按照id,从数

据库取出来的记录集List已经是一个排列好了的结构,所以把List传到jsp页面,再循

环给dtree.add(id,name,parent),这样实现成树没有任何问题。

数据库表结构如下:

id   -- 记录id

name  -- 节点名称

parent -- 父节点id

现在如果希望把这颗树当中的节点的排列顺序做个调整,把第一层子节点1(000200)和

第一层子节点2(000200)的顺序对调。如:

根节点(000000)

--第一层子节点2(000200)

----第二层子节点1(000201)

----第二层子节点2(000202)

----第三层子节点3(000203)

--第一层子节点1(000100)

----第二层子节点1(000101)

----第二层子节点2(000102)

----第三层子节点3(000103)

--第一层子节点3(000300)

这样dtree好像无法做到,想到的是把传给页面的List里已经排好了顺序,这样dtree

才能办到。问题是,现在如何设计数据库表,加个字段,这个字段放什么好,怎样才

能得到一个已经排列好了的List,List里面的对象顺序如下:

根节点(000000)

--第一层子节点2(000200)

----第二层子节点1(000201)

----第二层子节点2(000202)

----第三层子节点3(000203)

--第一层子节点1(000100)

----第二层子节点1(000101)

----第二层子节点2(000102)

----第三层子节点3(000103)

--第一层子节点3(000300)

§ 关于系统排列

系统排列最早由德国的治疗师伯特海灵格创立而来。这种治疗方法里,会把个人放在一个更大的整体里面来观察,如家庭系统或一个组织,而不是把个人看做一个独立的实体。需要在这个整体中去理解个人的行为、感受和态度。在任何系统中,我们作为其中一员,那些家庭中的、组织里的潜藏的规则,在不知不觉中影响着我们的行为。让个案的案主从现场参与者中挑选代表,帮助他完成系统排列,以此把隐藏的系统能量挖掘出来。

§ 举例

当所给问题的确定n个元素满足某种性质的排列时,相应的解空间树称为排列树。排列树通常有n!个叶结点。因此遍历排列树需要奥秘加(n!)计算时间。旅行售货员问题的解空间是一棵排列树。

回溯法搜索排列树的算法一般可以描述如下:

void backtrack(int t) {

if (t > n)

output(x);

else

for (int i = t; i < n; i++) {

swap(x[t], x[i]);

if (constraint(t) && bound(t))

backtrack(t + 1);

swap(x[t], x[i]);

}

}

随便看

 

百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/11/14 15:29:26