tree

2024-10-10

tree(精选11篇)

tree 篇1

0 引言

随着应用的发展, 数据访问量的逐日递增, 磁盘数据库系统的“I/O瓶颈”问题也逐渐显露出来, 不能满足现代应用对数据库的实时性处理的要求。如:视频网站的播客系统、电话交换机的实时呼叫处理、移动通信HLR/VLR等系统, 它们都需要实时地对数据进行处理。传统的磁盘数据库已经无法满足这一需求, 那么需要引入一种新的数据库——分布式内存数据库。在当前的数据库中, T-树都是主流的索引结构。但是它在数据的插入和删除操作上, 需要遍历整个树时经常会导致数据的溢出。针对这种情况, 本文在T-树的基础上设计一种新的索引结构:TTB-树来解决这一问题。

1 T-树索引结构

T-树已经成为内存数据库中最主要的一种索引方式。一般来说, T-树是由AVL树和B树发展而来的, 可以定义为:一棵在一个结点内包含多个关键词的平衡二叉树。图1展示了T-树节点的结构和T-树结构。

T-树不仅保持了AVL树内在的二分搜索的特征, 而且T-树节点包含多元素, 所以T-树有比较良好的更新和存储特性。但对于数据插入和删除的操作通常需要根据平衡因子来对该树进行平衡操作。因此T-树的平衡操纵是影响T-树性能的关键因素之一。

2 T-树索引结构优化

为了提高T-树的性能, 解决在数据的插入和删除操作上需要遍历整个树时经常会导致数据溢出的问题, 本文在T-树结构的基础上设计一个新的索引结构TTB-树。图2展示了TTB-树节点的结构和TTB-树结构。

TTB-树的节点与经典的T-树节点的结构很类似, 唯一不同之处在于:TTB-树的每一个节点都增加了一个后续线索指针来指向它的后续节点。所以能够很好地处理由于节点的插入和删除操作造成的数据溢出的情况。同时在进行区间查询操作不需要遍历整个树, 从而避免搜索一些无用的数据。比如要查询从大于25小于42的范围, 在T-树中的查找步骤为 (如图3所示) :首先从节点N11开始查找值为25的所在节点, 节点N11没有找到, 继续查找N11的左子树跟节点N21, N2节点没有找到25, 继续查找它右子树的根节点N32, 直到找在N44节点中找到25, 然后再查找42所在的节点。这样通过T-树查找大于25范围的查找路径为:N11→N21→N32→N44, 但是查找42时所查找的路径为N44→N32→N21→N11→N22→N33, 然而节点N32、N21、N11、N22都是无用节点。但采用TTB-树结构去的查询42所在节点 (如图4所示) , 可以利用后续线索指针从而可以跳过无用节点即查找路径为N44→N11→N33从而提高查找效率。

3 TTB-树的查找、插入、删除算法

3.1 TTB-树算法描述

TTB-树的查找、插入、删除算法与T-树的查找、插入、删除算法很类似, 但不同之处在于:在插入算法中, 当需要进行平衡操作时, 直接可以通过后续线索指针把新的界限最大值插入到相应的位置作为该右子树的最小节点而不是它左子树的最大节点, 从而能处理数据上溢的问题;在删除算法中, 在删除某个节点导致数据下溢, 可以通过后续线索指针直接去借用它右子树的最小值, 而避免了遍历整个树。

3.2 TTB-树算法

3.2.1 查找算法

(1) 从根节点开始查找, 用一个指针指向当前查找节点。

(2) 如果被查找节点的值小于当前节点的最小值, 指针指向该节点左子树的根节点, 转到 (1) 。如果被查找节点的值大于当前节点的最大值, 通过该节点的后续线索指针来指向它的后续节点, 转到 (1) 。否则搜索当前节点, 转到 (3) 。

(3) 采用二分查找法查找节点, 如果查找到该节点, 查找成功, 并结束查找算法, 否则查找失败, 并结束查找算法。

3.2.2 插入算法

(1) 查找要插入的节点, 如果查找成功, 插入算法结束, 否则转到 (2) 。

(2) 若找到限界节点N, 则转到 (3) , 否则转到 (4) 。

(3) 如果N有空间, 则插入该节点, 插入成功, 并结束插入算法。否则转到 (5) 。

(4) 在搜索的最后限界节点插入该节点, 若限界节点没空间, 则添加一个新的叶子节点, 并把插入该节点作为该叶子节点的最小值, 然后修改后续指针和进行树的树的平衡操作, 最后结束插入算法。

(5) 若插入节点的值大于N中的最大值, 则把节点插入N后继节点, 并作为的最为最小值, 再更新限界节点N和它的后续节点的最大值和最小值, 最后结束插入算法。若插入节点的值小于N中的最大值, 则把N中的最大值移到它的后续节点, 作为最小值, 再更新限界节点N和它的后续节点的最大值和最小值最后结束插入算法。

3.2.3 删除算法

(1) 查找删除节点的界限节点N, 若找到, 则转到 (2) , 否则删除失败并结束算法。

(2) 若在界限节点N没找到删除节点, 则删除失败并结束删除算法。否则转到 (3) 。

(3) 若删除该节点且不产生下溢, 则删除成功并结束删除算法。若删除该节点且产下溢, 则借健合并, 再进行树的平衡操作, 最后删除成功并结束算法。

4 实验测试

根据本文提出对T-树优化的算法, 分别采用T-树和TTB-树索引技术对测试数据进行插入、删除、查找以及查找数据范围。从实验结果如图5至图8。在数据插入测试中, 根据每个节点的大小 (从20到100) 随机插入10000个节点, 两种索引技术所消耗时间如图5所示;在数据删除测试中, 根据每个节点的大小 (从20到100) 随机删除2000个节点, 测试结果如图6所示;在查找数据测试中, 根据每个节点的大小 (从20到100) 随机查找4000个节点, 测试结果如图7所示;在对区间查找的测试中, 根据每个节点的大小 (从20到100) 随机查找100个范围的连续节点, 测试结果如图8所示。同时对处理并发访问的情况也进行测试, 测试用20个线程去访问服务器其测试结果如图9所示, 从测试的结果可以看出来测试数据量是21489325, 用时44753765ms平均每条记录的用时2ms, 系统的吞吐量是480num/s, 而从Mysql数据库中这样的并发访问和数据量测试结果是4~5个每秒。可以看到系统性能是得到了极大的提升。

5 总结

本文研究了数据库索引, 设计并实现了一种适于分布式内存数据库系统的索引TTB-树索引。TTB-树通过后续线索指针能够很快的查找它的后续节点并且能够很好地解决数据溢出的问题。通过实验证明, 虽然在对数据的查找、删除、操作的效率没有质的飞跃, 但是对区间数据查找的和处理并发访问的情况, 性能得到极大的提升。这种分布式内存数据库系统的策略给数据库管理系统提供了一种新思路和新方法。

摘要:分布式内存数据库已经成为了当今数据库的研究热点, 而索引能够极大地提高数据库操作的性能。T-树索引是数据库系统中广泛使用索引技术之一。在T-树的基础上设计一种新的索引结构, 在处理区间查询操作时其效率有明显的提高, 也能够很好地解决数据插入、删除操作所造成的数据溢出问题。

关键词:T-树,TTB-树,分布式内存数据库

参考文献

[1]严蔚敏, 吴伟民.数据结构 (C语言版) [M].清华大学出版社, 1996.

[2]Tamer M.Ozsu, Patrick Valdurie.分布式数据库系统原理[M].清华大学出版社, 2002, 6.

[3]杨武军, 张继荣.内存数据库技术综述[J].西安邮电学院学报, 2005, 10 (3) :96-99.

[4]Tenenbaum A M.Data Structures Using C[M].Prentice-hall Of IndiaPvt Ltd, 2007.

[5]Lu Hongjun, Yuet Yeung Ng, Tian Zengping.T-tree or B-tree:MainMemory Database Index Structure Reviewed[C]//Australasian Data-base Conference, 2000.

[6]Rao J, Ross K A.Making B+-Trees Cache Conscious in Main Memory[C]//Proc.of the 2000 ACM SIGMOD International Conference onManagement of Data, Dallas, 2000:475-486.

[7]Ailamaki A.DBMSs on a modern processor:where does time go[C]//Proc.of the 25th VLDB Conference, 1999.

[8]Richard A Hankins, Jignesh M Patel.Effect of Node Size on the Per-formance of Cache Conscious B+-tree[C]//SIGMETRCS’03, June10-14, 2003, San Diego, California, USA.

[9]孙梅丽, 宋宝燕, 等.Cache-Conscious Index Mechanism for Main-Memory Database[J].武汉大学学报:英文版, 2006, 11 (1) :309-312.

tree 篇2

Then the boy because a young man .He needs money.The tree says.“Sell my apples”

When the young man needs a house ,the tree says “Cut off ma brabches”.The boy does so .

Then the young man wants aboat .The tree gives him its trunk.

When the young man becomes old ,he is tired. The tree only has roots now .It says, “sit down on my roots”.The old man sits down .The tree is happy.

tree 篇3

Excerpts1)

It was on Sunday week in the evening, when he was lying in the orchard listening to a blackbird and composing a love poem, that he heard the gate swing to, and saw the girl come running among the trees, with the red—cheeked, stolid2) Joe3) in swift pursuit. About twenty yards away the chase ended, and the two stood fronting each other, not noticing the stranger in the grass—the boy pressing on, the girl fending him off. Ashurst4) could see her face, angry, disturbed; and the youth’s—who would have thought that red—faced yokel5) could look so distraught6)! And painfully affected by that sight, he jumped up. They saw him then. Megan7) dropped her hands, and shrank behind a tree trunk; the boy gave an angry grunt, rushed at the bank, scrambled over and vanished. Ashurst went slowly up to her. She was standing quite still, biting her lip—very pretty, with her fine, dark hair blown loose about her face, and her eyes cast down.

“I beg your pardon,” he said.

She gave him one upward look, from eyes much dilated8); then, catching her breath, turned away. Ashurst followed.

“Megan!”

But she went on; and taking hold of her arm, he turned her gently round to him.

“Stop and speak to me.”

“Why do you beg my pardon? It is not to me you should do that.”

“Well, then, to Joe.”

“How dare he come after me?”

“In love with you, I suppose.”

She stamped her foot.

Ashurst uttered a short laugh. “Would you like me to punch his head?”

She cried with sudden passion:

“You laugh at me—you laugh at us!”

He caught hold of her hands, but she shrank back, till her passionate little face and loose dark hair were caught among the pink clusters of the apple blossom. Ashurst raised one of her imprisoned hands and put his lips to it. He felt how chivalrous9) he was, and superior to that clod10) Joe—just brushing that small, rough hand with his mouth! Her shrinking ceased suddenly; she seemed to tremble towards him. A sweet warmth overtook Ashurst from top to toe. This slim maiden, so simple and fine and pretty, was pleased, then, at the touch of his lips! And, yielding to a swift impulse, he put his arms round her, pressed her to him, and kissed her forehead. Then he was frightened—she went so pale, closing her eyes, so that the long, dark lashes lay on her pale cheeks; her hands, too, lay inert11) at her sides. The touch of her breast sent a shiver through him. “Megan!” he sighed out, and let her go. In the utter silence a blackbird shouted. Then the girl seized his hand, put it to her cheek, her heart, her lips, kissed it passionately, and fled away among the mossy trunks of the apple trees, till they hid her from him.

Ashurst sat down on a twisted old tree growing almost along the ground, and, all throbbing and bewildered, gazed vacantly at the blossom which had crowned her hair—those pink buds with one white open apple star. What had he done? How had he let himself be thus stampeded by beauty—pity—or—just the spring! He felt curiously happy, all the same; happy and triumphant, with shivers running through his limbs, and a vague alarm. This was the beginning of—what? The midges12) bit him, the dancing gnats13) tried to fly into his mouth, and all the spring around him seemed to grow more lovely and alive; the songs of the cuckoos and the blackbirds, the laughter of the yaffles14), the level—slanting sunlight, the apple blossom which had crowned her head—! He got up from the old trunk and strode out of the orchard, wanting space, an open sky, to get on terms with these new sensations. He made for the moor, and from an ash tree in the hedge a magpie15) flew out to herald him.

Of man—at any age from five years on—who can say he has never been in love? Ashurst had loved his partners at his dancing class; loved his nursery governess; girls in school—holidays; perhaps never been quite out of love, cherishing always some more or less remote admiration. But this was different, not remote at all. Quite a new sensation; terribly delightful, bringing a sense of completed manhood. To be holding in his fingers such a wild flower, to be able to put it to his lips, and feel it tremble with delight against them! What intoxication16), and—embarrassment! What to do with it—how meet her next time? His first caress had been cool, pitiful; but the next could not be, now that, by her burning little kiss on his hand, by her pressure of it to her heart, he knew that she loved him. Some natures are coarsened by love bestowed on them; others, like Ashurst’s, are swayed and drawn, warmed and softened, almost exalted, by what they feel to be a sort of miracle.

And up there among the tors17) he was racked18) between the passionate desire to revel19) in this new sensation of spring fulfilled within him, and a vague but very real uneasiness. At one moment he gave himself up completely to his pride at having captured this pretty, trustful, dewy—eyed thing! At the next he thought with factitious20) solemnity: “Yes, my boy! But look out what you’re doing! You know what comes of it!”

Dusk dropped down without his noticing—dusk on the carved, Assyrian21)—looking masses of the rocks. And the voice of Nature said: “This is a new world for you!” As when a man gets up at four o’clock and goes out into a summer morning, and beasts, birds, trees stare at him and he feels as if all had been made new.

1.节选部分描写了小说的男女主人公(阿什赫斯特和梅甘)在苹果园里初次相拥亲吻的情景。

2.stolid [?st?l?d] adj. 感觉迟钝的

3.Joe:乔,小说中的一位农夫,很喜欢女主人公

4.Ashurst:阿什赫斯特,小说的男主人公,来自伦敦,刚大学毕业,已取得律师资格。

5.yokel [?j??k(?)l] n. 庄稼汉,乡下人

6.distraught [d??str??t] adj. 发狂的,发疯的

7.Megan:梅甘,小说的女主人公,是一位漂亮的姑娘,在姑姑家的农场里帮忙。

8.dilated [da??le?t] adj. 扩大了的;经扩张的

9.chivalrous [???v?lr?s] adj. 骑士风度的

10.clod [kl?d] n. 乡下佬

11.inert [??n??(r)t] adj. 不动的

12.midge [m?d?] n. 蠓;摇蚊;双翅目小昆虫

13.gnat [n?t] n. 小昆虫

14.yaffle [?jaf(?)l] n. 绿色啄木鸟

15.magpie [?m?ɡpa?] n. 鹊

16.intoxication [?n?t?ks??ke??n] n. 陶醉

17.tor [t??(r)] n. 石山,突岩

18.rack [r?k] vt. 使(在肉体上或精神上)受剧烈痛苦,折磨

19.revel [?rev(?)l] vi. 狂欢

20.factitious [f?k?t???s] adj. 做作的,不自然的

21.Assyrian [??s?r??n] adj. 亚述的。亚述为古代西亚一个奴隶制国家。

作品赏析

高尔斯华绥的《苹果树》是一曲凭吊青春与爱情的挽歌。小说的开篇,年近五旬的阿什赫斯特和妻子斯特拉为了庆祝银婚,开车前往初次相遇的托基小镇,途中停靠在乡间做短暂的休息。阿什赫斯特看到似曾相识的风景,发觉自己曾来过这里,由此想起了一段往事。26年前,阿什赫斯特和朋友一起徒步在这一带旅行,因为腿部受伤,不得不在当地一家农场暂住。养伤期间,他和农家女孩梅甘相爱了,两个人在苹果园里订下了爱情的誓言。阿什赫斯特承诺带梅甘去伦敦,开始新的生活。可是当阿什赫斯特来到附近的托基镇打算取些钱给梅甘买几件衣服,为两人的离开做准备时,却邂逅了朋友哈利迪和他的三个妹妹。阿什赫斯特没有向朋友一家提起梅甘,也没有按照计划马上返回农场,而是陪着朋友一家在镇上游玩,耽搁了两三天。在这段时间里,他体会到了自己想法的变化,预见到了如果他和梅甘私奔,两人并不可能长久相爱。因为梅甘只是个单纯的农村姑娘,而自己受过高等教育,两人的共同语言并不多,以后的婚姻多半不会幸福。与其未来痛苦,不如就此了断。为此,他乘车离开小镇,返回伦敦,并且在一年后迎娶了哈利迪的大妹妹斯特拉。斯特拉聪慧大方,夫妻相敬如宾。然而,在阿什赫斯特的内心,始终隐藏着对梅甘的怀恋。如今,故地重游,阿什赫斯特难免心怀牵动。他想知道梅甘这些年生活得究竟怎样,却从当地人口中得知,痴情的梅甘见他迟迟不归,神思恍惚,早在他离开的当年,就溺水而亡,魂归黄土,现在就长眠在他歇脚的路旁那个无名的坟茔里。

在《苹果树》中,如果梅甘在那个春天没有遇到来自伦敦的大学生阿什赫斯特,她的人生一定会是另外的格局。或许她会嫁给热烈追求她的那个名叫乔的粗壮农夫,成为一名勤勉的家庭主妇,生养一群茁壮的孩子。但对阿什赫斯特的痴心改变了她的命运,使她的人生终止在最美好的年纪。

对于梅甘之死,阿什赫斯特的确负有责任。他是自私的逃兵,无法超越阶级的差异,无法摆脱世俗的看法,放弃了对梅甘的爱。然而,应该由阿什赫斯特负担全部的责任吗?小说的答案是否定的。阿什赫斯特并不是一位花花公子,他对梅甘的情感是真诚的。月下相拥亲吻的那一幕,只有近乎圣洁的美,没有欺骗。他离开梅甘,并不是因为始乱终弃后的厌倦,而是因为他预见到在以后的生活中只有爱情是不够的,他们两人的情感一旦在现实中成型,必然会腐坏变质。为了两人将来的幸福,阿什赫斯特选择了离开,但是他没有想到这场短暂的恋爱对双方来说会是以悲剧告终。梅甘为之付出了生命的代价。而阿什赫斯特虽然找到了人生的良伴,和门当户对的斯特拉生活在一起,但是他人生最美好的情感已经给了苹果树下相拥的梅甘。这使他和斯特拉的婚姻在庸常幸福之外有了不可弥补的缺憾。他的内心所向往的是梅甘那没有沾染世事的纯真。

两个相爱的人演出了一场悲剧,除了该埋怨阿什赫斯特的懦弱,哀叹梅甘的单纯,或许应该承担责任的还有爱情本身。在《苹果树》中,踏上怀旧之旅的阿什赫斯特正在阅读诗剧《希波吕托斯》。这部作品出自古希腊悲剧大师欧里庇得斯之手。故事中的希波吕托斯是雅典王忒修斯的儿子,他不相信爱情,所崇拜的是贞洁的狩猎神阿耳忒弥斯。为此,爱神阿佛洛狄忒决定让他见识见识自己的威力。在爱神的蛊惑下,后母淮德拉爱上了希波吕托斯,她向希波吕托斯求爱,却被他坚决拒绝。淮德拉因此绝望自杀,并留言给丈夫忒修斯,谎称希波吕托斯企图玷污她。忒修斯听到传闻,勃然大怒,他祈求海神降罪于希波吕托斯。为此希波吕托斯遭遇奇祸,身受重伤。虽然在狩猎神阿耳忒弥斯的干预下,最终真相大白,父子和解,但希波吕托斯还是因伤势过重,不治身亡。在这场爱神阿佛洛狄忒发动的战争中,所有的凡人都是输家:淮德拉为爱而亡;忒修斯为爱是非不分;希波吕托斯虽然拒绝去爱,但他的命运却因为淮德拉对他执着的爱而彻底改变。

《希波吕托斯》这部古希腊悲剧呼应了《苹果树》中的悲剧。在《苹果树》中,女主人公梅甘同样因为无望的爱情而自杀;阿什赫斯特为了摆脱爱情选择离开,然而梅甘却为他而死,他将终身背负思念与愧疚。爱情的力量是凡人所无法抗拒的。难怪在古希腊和罗马神话中,爱情源于神的操控。只有神的参与,才能解释爱情的无边魔法以及反复无常。爱神是蛮不讲理的,她的赐予可以是最美的祝福,也可能是最深的创痛。在《苹果树》中,阿什赫斯特和梅甘相遇在青春年少最为飞扬的时光,两个人的邂逅又恰逢万物欣欣向荣的春季。人心的悸动呼应着天地万物的生长。花朵开放,草木蓬勃生长,一切都充满了希望。在心动的一刹那,没有人会想到现实世界里的重重羁绊。在柔和的月光下,在苹果树的绿叶下,爱情受着春风的接引,像洁白的苹果花一样自然而然地盛放。

tree 篇4

关键词:KD-Tree,并行化,GPU,算法

通常,KD-Tree创建算法基于CPU的串行进行设计,并且采用数据结构——栈的前序遍历方法。在单核CPU中,尽管KD-Tree串行创建算法的理论时间复杂度为O(nlog(n)),但是对于复杂的元素集合,KD-Tree的创建仍然不能满足很多应用的要求。文中结合GPU的并行特性,充分改进原有算法,发掘其中可以并行计算的部分,从而大大优化KD-Tree创建算法的性能。

1 KD-Tree

1.1 KD-Tree创建

K Dimensional-Tree,简称KD-Tree,1980年由J.Bentley提出[1,2],它是对数据点在K维空间中划分的一种数据结构。实际上,KD-Tree是一棵BSP树(Binary Space Partitioning)。由于采用树型结构,KD-Tree从指定集合中获取必要的信息的时间复杂度从O(n)降到了O(logn),因此提高了获取信息的过程。KD-Tree主要用于光线跟踪、光子映射、流体模拟等领域中。

KD-Tree具有如下性质[3]:

1)若它的左子树不为空,则左子树上所有节点的第d维的值均小于它的根节点的第d维的值,其中d为根节点的分辨器值;

2)若它的右子树不为空,则右子树上所有节点的第d维的值均大于它的根节点的第d维的值;

3)它的左右子树也分别为KD-Tree。

目前有关KD-Tree创建的在CPU上的实现方法已经很成熟。由于计算机硬件能力的不断增强,KD-Tree创建的速度随之被关注。

因此通过采用平台模型,结合的并行特性,可以大大优化创建算法的速度,从而扩大更多的应用。

1.2 在单核CPU中——采用栈结构

在单核CPU平台上,传统的KD-Tree创建算法是典型串行的算法。算法的核心内容如下[4]:

其创建过程是前序遍历的创建树的过程,即先分割当前节点,然后依次分割其左右子结点。一般采用数据结构-栈进行实现。

2 KD-Tree创建的并行化

2.1 CPU与GPU

异构并行设备的计算能力,主要体现在三个方面[5]:线程并发数、线程存储资源、线程计算资源。CPU的现场并发数很低,但每一个线程的存储资源很多,计算资源丰富。这意味着,其算法更适合分配数据,然后各线程相对独立的处理数据,即MIMD算法模式。因此通常称CPU的线程是一种相对重量级的现场。而对于GPU,由于其流处理器数量庞大,要充分利用这些流处理器,就需要很高的线程并发度,如果并发模型无法达到高度并发,则难以发挥GPU的性能。但每一个线程的存储资源少,计算资源少。这意味着,无法采用为各线程分配数据的方法,必须逐模块协同执行,即SIMD算法模式,所以称GPU的线程是一种相对轻量级的线程。当然CPU亦可执行SIMD算法模式,但就同价位GPU来说,其计算能力却相对低下。

2.2 在多核CPU中——采用多线程

无论是空间上还是逻辑上,KD-Tree树中每个节点的子树的创建过程都是高度独立的[6]。因此,可以采用线程的方式来进行处理,方法为:首先采用一个线程创建根节点,然后再创建一个线程,分别用两个线程处理左子树与右子树,此时创建KD-Tree的效率将提高一倍。采用两个线程的进行创建的方法适合应用在双核的CPU中。如果是四核CPU,则把树中第三层上的所有节点采用四个线程进行分割,进一步提高创建速度。双核创建KD-Tree的基本算法的核心内容如下:

Split Node(root.left)(in thread0);

Split Node(root.right)(in thread1);

通过线程的方式,可以在双核、四核CPU上进行一定程度的并行化。但由于当前CPU计算核心数量的限制,如果采用上述类似方式对KD-Tree的第四层进行并行化,将达不到理想的优化效果。因为第四层的KDTree中有8个节点,需要创建8个线程(包括主线程),则线程的数量大于CPU的物理计算核心的数量。在每个周期内,实际上只有一半的线程在工作,并且CPU的线程需要进行频繁切换,线程间的不断切换大大降低了KD-Tree的创建降低速度。

2.3 在CPU和GPU中——采用多线程和GPU特性

在四核CPU中,如果继续采用线程的方式来对树中第四层的节点进行分割,则需要8个线程,数量显得太多,但切换到GPU中,8个线程又太少。因为GPU要求100-10000个线程,才能达到GPU的最佳性能[7]。根据上述思想,可采取一种折中的方式,首先利用多核心的CPU创建一定层数的KD-Tree。当底层的节点数量很多时,充分利用GPU的硬件特性,把创建过程切换到GPU上,实现KD-Tree的创建。优化算法的核心内容如下:

算法的前半部分在CPU中采用多线程方式对节点进行分割,有了较大的并行度。算法的后半部分,利用了GPU进行并行计算。算法的并行是建立在节点上的。

利用CPU构建KD-Tree的前几层,当KD-Tree的层数达到可以并行的时候,再利用GPU来创建KD-Tree剩下的层数。与传统算法比较,此算法的并行度有很大的改进,但其运行速度相当。主要原因有以下两点:

1)在从CPU切换到GPU创建的过程中,有大量的内存数据从主存传输到了显存。由于PCIE的带宽有限,传输将花费大量的时间。

2)CPU创建算法的终止条件是所有节点数量小于一定的阈值。如果阈值设置不合理,CPU有可能停止运行,此时GPU的个别线程将遍历大量的数据。由于CPU包含多级Cache系统,可以用于隐藏内存访问延迟,但GPU是通过线程切换来隐藏的,如果个别线程的行为时间过于长,则其他线程也要被迫等待,并处于闲置状态,这将浪费大量硬件资源。

综合上述原因,该算法很难在实际中得到推广。

2.4 在GPU中-采用GPU特性

随着GPU的发展与应用,研究人员提出了在GPU上创建KD-Tree[8]。由于GPU的大规模并行性和高性价比等特性,线程如果少于一定数量,则全局访问的延迟无法隐藏,将降低程序的性能。所以对于KD-Tree中的前几层节点,采用GPU进行并行处理是很困难的,因为节点数量较少,并行粒度较小,而GPU适合于并行粒度较大的。下面通过KD-Tree创建中的并行元素,从而改建算法特性。

创建当前节点的左、右子树的过程是相互独立,但是这种独立性的并行度非常小,所以很难利用并行设备进行加速。但相对于节点分割的独立性来说,元素分配的独立性具有规模大,操作简单的特性,这就非常适合GPU进行并行加速。而且对于KD-Tree的创建过程来说,元素的个数不会因为层数的增加而有指数级的变化。因此线程数量就不会有太大的变化,从而保证了算法的稳定性[9]。优化算法的核心内容如下:

该算法是通过两条路径实现并行计算的。第一条路径是进行分配元素,每个线程只关心与其相对应的图元将被分配哪个子节点中。而对于元素间的交互,很少进行处理。这种方法非常适合GPU进行并行计算。第二条路径是进行创建节点,线程相对于节点是并行的。与上述算法的比较,该算法特点是:

1)算法中只包含一个拷贝内存的操作,所以即使线程少,对其效率性能影响很小。

2)在GPU的每个线程中会有大量的遍历,因此有可能导致性能快速下降。

由于元素的数量较大,随之并行度也非常高,完全避免了CPU与GPU之间大量的数据传输过程,因此利用GPU进行并行计算要比CPU速度快很多。

3 结论

针对传统的KD-Tree的串行创建算法进行逐步优化,深入地探讨了三种KD-Tree的并行创建算法,分别为:在多核CPU中采用了多线程方法、多线程和特性结合、特性,其中第三种并行方法理论上可以极大的提高的创建速度。

参考文献

[1]Tim Foley and Jeremy Sugerman,KD-Tree acceleration structures for a GPU raytracer[J].Graphics Hardware,2005(7):15-17.

[2]Sebastian Bindick*,Maik Stiebler,Manfred Krafczyk.Fast kd-tree-based hierarchical radiosity for radiative heat transport problems,2011,86(9):1082-1100.

[3]杜振鹏,李德华.基于KD-Tree搜索和SURF特征的图像匹配算法研究[J].计算机与数字工程,2012,2(2):96-97.

[4]熊云艳,毛宜军,闵华清.有序的KD-Tree在图像特征匹配上的应用[J].化工自动化及仪表,2012(10):84-87.

[5]李勇.光线跟踪加速算法在异构多核平台上的设计与实现[D].南京邮电大学,2011(03):18-38.

[6]卢贺奇.基于OpenCL的实时KD-Tree与动态场景光线跟踪[D].浙江大学,2011.2:15-45.

[7]范文山,王斌.启发式探查最佳分割平面的快速KD-Tree构建方法[J].计算机学报,2009(2):186-192.

[8]Byeongjun Choi;Byungjoon Cha.Construction of efficient kd-trees for static scenes using voxel-visibility heuristic,Computers&graph ics,2012,36(1):38-48.

tree 篇5

参考范文:

It’s spring. It’s time to plant trees.

I want to plant a tree in our garden. Dad and Mum are very happy. They like green. Dad helps me plant the tree. First, we dig the soil. Then I put a little tree into the soil. Next I water it. I am so excited and I wait for the tree to grow. Two weeks later, my tree has some little leaves. I water it every day. Now it has lots of leaves. It grows fast. We should plant more trees. They make our world beautiful.

参考译文:

这是春天。这是种树的时间。

tree 篇6

A long time ago (很久以前), there was a huge (巨大的) apple tree. A little boy loved to come and play around it every day. He climbed (爬) to the tree top (树顶), ate the apples, took a nap (打盹) under the shadow (树荫)... He loved the tree and the tree loved to play with him.

Time went by(时光流逝). The little boy grew up and he no longer (不再) played around the tree.

One day, the boy came back to the tree and looked sad. “Come and play with me,” the tree asked the boy. “I am no longer a kid (小孩子). I dont play around trees anymore.” The boy replied (回答) , “I want toys (玩具). I need money (钱) to buy them.” “Sorry, I dont have money, but you can pick (摘) all my apples and sell (卖) them. Then, you will have money.” The boy was so excited (激动的). He picked all the apples on the tree and left happily. The boy didnt come back after he picked the apples. The tree was sad (伤心的).

One day, the boy returned and the tree was so excited. “Come and play with me!” the tree said. “I dont have time to play. I have to work for my family. We need a house for shelter (遮风挡雨). Can you help me?” “Sorry, I dont have a house. But you can cut off (砍下) my branches (树枝) to build (建造) your house.” So the boy cut all the branches of the tree and left happily.

The tree was glad to see him happy, but the boy didnt appear (出现) since then. The tree was lonely again and sad.

One hot summer day, the boy returned and the tree was delighted (高兴的). “Come and play with me!” the tree said. “I am sad and getting old. I want to go sailing (航海) to relax (放松) myself. Can you give me a boat?” “Use my trunk (树干) to build a boat. You can sail and be happy.” So the boy cut the tree trunk to make a boat. He went sailing and did not show up (出现) for a long time.

tree 篇7

关联规则挖掘作为一种获取隐藏在数据库中的知识的有效手段自Agrawal于1993年[1]首次提出以来,一直是KDD领域的一个重要课题。目前的研究大多集中于在单一层次的规则挖掘,并提出了Apriori[1],Charm[2],FP-growth[3],Closet[4],P-ARM[5]等著名算法。但基于多层次的关联挖掘是一个非常值得我们研究的领域,原因有二:一是在不同层次上获取相应的关联规则比仅仅在单层次上挖掘会提供更多的信息[4]。比如“面包→牛奶”对经理们可能会比“小麦面包→果汁牛奶”对他们更具有指导意义。二是在较高的层次上会获得更大的支持度,使程序面对不同环境有更大的灵活性。人为设定的支持度阈值如果设定过低会产生过多规则,设置过高便会产生过少规则,多级关联规则挖掘在一定程度上帮助解除了这种进退两难的困境,使产生的规则更加趋于合理、实用。

关于多级关联规则挖掘方面的研究到目前为止还非常有限,尤其是在减少所需存储空间、产生有效规则、缩短计算时间方面还有很多工作要做。目前已经提出的多级关联规则挖掘算法包括文献[6,7,8]等。文献[8]通过提出一个AL-log框架以及对ILP的一系列针对多级关联规则挖掘的补充,更注重是从语言、理论层面上对多级关联规则挖掘进行改进和完善[8]。韩家炜等人[3][4]提出的基于Apriori的多级关联规则挖掘算法,在若上层项目为非频繁集则其子项目也为非频繁集的假设(暂称其为假设A)下,根据预先得知的概念层次关系,从上而下进行深入规则挖掘,并提出了一套编码系统对程序进行优化。此后的研究[9,10]大多也遵循这一假设,自上而下进行层次关联规则挖掘。假设A的运用使基于Apriori等通过产生候选集式生成关联规则的算法可以大大缩小搜索空间,从而更快更有效的产生候选集。

FP-Tree的特性,使基于它的关联规则算法可以大大压缩了数据存储空间,同时可以避免重复多次扫描数据库和避免产生过多候选频繁集。故本文提出一种基于FP-Growth的多级关联规则挖掘算法。另外本文在采用假设A的同时,提出假设B:设a∈A,b∈B,若A→B不能满足用户指定支持度,则a→b也不会满足指定支持度。从后文的论述中,可以得知,该假设的运用可以有效提高算法的时间性能。本文提出算法较之前的研究主要有两个不同点:一是本文将基于FP-Tree进行多级关联规则挖掘。二是本文算法在采用假设A的同时,采用假设B,将大大减少构建条件FP-Tree所需空间和时间,提升算法性能。

1 FP-Tree及FP-Growth算法介绍

FP-Tree是一种用来压缩存储模式的关键信息的扩展前缀树,在FP-Tree中,每个节点由4个域组成:节点名称、节点计数、节点链接及父节点指针。另外,为方便树遍历,创建了一个频繁项目头表,它由两个域组成:项目名称和项目链头,其中,项目链头指向FP-Tree中与之同名的第1节点,频繁模式树FP-Tree的构造算法大致如下:

(1)扫描数据库一次,产生频繁项目集合F及其支持数,按其支持数降序排列,生成频繁项目列表L。

(2)创建FP-Tree的根节点,标为“null”,对于数据库中的每个事务做如下处理①按L中的次序排列每个事务中的频繁项目,设排列后的结果为[p|P],其中p是第1个项目,而P是剩余项目的列表;② 调用insert_tree([p|P],T)③ 如果P非空,递归调用insert_tree(P,N)。过程insert_tree([p|P],T)的执行情况如下:如果T有子女N使得N.node-name=p,则N的计数增加1;否则创建一个新节点N,将其名称、计数t分别设置为p,1,由父节点指针链接到它的父节点T,并通过节点链将其链接到具有相同名称的节点。

FP-Growth算法是由韩家炜等人2001年提出的基于FP-Tree的一种高效的挖掘算法。首先它利用FP-Tree的特性,在很大程度上压缩原始数据,而且避免了非常耗时的多次重复扫描数据库。其次它采用了pattern-fragment growth方法避免了产生大量的候选集。另外,它还采用了divide-and-conquer方法,将挖掘任务划分成一系列小任务,从而大大缩小了程序的搜索空间,提高了算法的性能[3]。

2 基于FP-Tree的多级关联规则挖掘算法

为了方便算法的阐述,我们给出,1)一个预先定义的对象层次树,对于0<i<q, Ni,m{Ni+1,1 ,Ni+1,2 ,…,Ni+1,n},其中q-1为最大层次数,q=0代表顶层;m代表该节点为第i层的第m个对象;n为节点Ni,mi+1层的子节点数量。2)一个用户访问事务集,Ti{Ap,…,Aq},其中Ti为事务标识,AiI(i=p,…,q),I是所有数据项的集合。

定义1:模式是一项目Ai或是一些项目Ai,…,Aj的联合,记Ai∧…∧Aj

定义2:支持度是模式A在事务集合S中出现的频率,用来描述模式的有效程度。

2.1 简单算法

采用韩的编码方法,对数据库进行预处理,然后通过对数据库进行一次扫瞄,获得各层一项频繁集。然后自上而下为每一层建立独立的FP-Tree,然后在每一棵树上采用FP-Growth算法,分别获得每一层上的关联规则。 算法的优点在于,1)简单易懂,只需要在原FP-Growth算法基础上略加修改。2)自上而下地为每一层数据建立相应的FP-Tree,利用了假设A,可以减少建立较低层次FP-Tree的时间。3)区别于其他多级关联规则挖掘,该算法采用了FP-Growth算法为原型,利用FP-Growth无需产生侯选集和无需多次重复扫描数据库等优点减少算法的时间消耗。

2.2 改进算法

上述的简单算法应该说是FP-Growth在多级关联规则挖掘中的一种简单应用,但它除了在为每层建立FP-Tree是利用了非频繁集其子项一定为非频繁集的特性对需扫描的数据库进行精简以获得一定程度上的性能优化外,并没有充分利用多级关联本身最大的特点:层次关系。下面,我们将以此为出发点,着手改进算法。

假设B:在每一层次最小支持度相等的情况下,若Ni,mNi,n不能满足最小支持度,则对于ni+1,kNi,m,ni+1,hNi,n,,ni+1,kni+1,h ,必然不满足最小支持度。

性质1[3]:对于任何频繁项Ai,所有包含有Ai的模式都可通过遍历FP-Tree中所有包含Ai的分支获得。也就是通过对Ai前缀树(ai-prefix-tree)进行挖掘,即可获取所有包含Ai的模式。

定义3:若n为概念层次关系中的层次数,则Sn表示在n层上的所有频繁项目的集合。

性质2:aB,AiC,且B,C在层次n上,若aAi前缀树中的一个节点,则必然存在{BC}∈Sn

构建Ai前缀树的目的在于产生所有包含Ai的模式,故不难从假设B推得性质2,下面我们将通过实例说明,运用假设B,我们可以减少ai前缀树的规模,从而使后续的建立条件树(conditional-tree)的工作量得到大大的减轻。

举例:如有一层次关系,如表1所示(算法采用了韩的编码方式,为了更直观、简洁的表达,在文中暂用字母与数字组合代替实际编码)。用户访问事务记录集合如表2所示。我们设定最小支持度为3。我们现在要建立c1的前缀树。

步骤一:通过对数据库进行一次扫描,获取各个层次的一项频繁集,从层次关系的树状结构图上看,对每一层次的同一父节点的所有子节点按出现频次进行递减排序。

步骤二:对第0层对象建立fp-tree0。如图1所示。并对其进行关联挖掘,获得频繁集s={A,B,C,BC}。

步骤三:在fp-tree0基础上构建第1层的fp-tree1,如图2所示。

步骤四:由s知,并不存在规则CAAC,根据假设B,在A,C的子项之间也必然不存在相应的规则。故建立c1前缀树时,可以忽略所有属于A的子项。由于存在规则BC,暂时保留所有B的子项。我们建立的c1前缀树如图3所示。

对于第四步中的前缀树简化,可能有读者担心会造成模式的丢失,其实不然,构建c1前缀树的目的是获取所有包含c1的模式,由特性1可知,不包含c1的模式则会在其他前缀树的挖掘中产生。

建立前缀树算法伪码如下:

3 结束语

目前的关于多级关联规则挖掘的研究大多都是基Apriori算法,但因Apriori算法本身具有需多次重复扫描数据库和产生大量频繁集等不足,使得基于Apriori的多级关联规则挖掘算法在减少存储空间、产生有效规则、缩短计算时间等方面也总是不能令人满意。基于此,本文提出一种基于FP-Tree的多级关联规则挖掘算法,并在性能上给予了进一步优化。

摘要:关于多级关联规则挖掘方面的研究到目前为止还非常有限,尤其是在减少所需存储空间、产生有效规则、缩短计算时间方面还有很多工作要做。基于FP-Tree的算法在以上方面被证实有其非常大的优势。提出了一种基于FP-Tree的多级关联规则挖掘算法,并采用简化前缀树的方法优化算法性能。

关键词:多级关联规则,FP-Tree,FP-Growth

参考文献

[1] Agrawal R, Imielinski T, Swami A. Mining association rules between sets of items in large databases. In: Proc 1993 ACM-SIGMOD int. Conf. Management of Data, Washington DC. 207—216, May 1993

[2] Zaki M J.Generating non-redundant association rules.In:Proceed-ings of the Sixth ACM-SIGKDD International Conference on Knowl-edge Discovery and Data Mining,NewYork,NY:ACM,34—43

[3] Han Jiawei,Jian Pei, Yin Yiwen, et al. Mining Frequent Patterns without Candidate Generation: a frequent-pattern tree approach,Data Mining and Knowledge Discovery, 2004

[4] Pei J,Han J,Mao R.CLOSET:an efficient algorithm for mining fre-quent closed itemsets.In:Proceedings of ACM_SIGMOD Internation-al Workshop on Data Mining and Knowledge Discovery;2004

[5] Dr William P. P-trees: universal data structure for query optimization to data mining (Powerpoint). http://www.cs.ndsu.nodak.edu/~perrizo/classes/765/cpt611.ppt;2005

[6] Han Jiawei,Fu Yongjian.Mining multiple-level association rules inlarge databases.IEEE Transactions on Knowledge and Data Engineer-ing.September/October 1999;11(5):1—12

[7] Han Jiawei, Fu Yongjian. Discovery of multiple-level association rules from large databases. Proceedings of the 21st VLDB (Very Large Data Base) Conference, Zurich Switzerland, 1995

[8] Lisi F A,Malerba D.Inducing multi-level association rules from mul-tiple relations,Machine Learning,,2004;55(2):175—210

[9] Rajkumar N,Karthik M R,Sivanandam S N.Fast algorithm for min-ing multilevel association rules.IEEE,2010;02(03):746—752

tree 篇8

关键词:KD-Tree,GPU,光线跟踪

本文提出的算法在GPU内核函数中模拟了栈的行为, 有效的对于KD-Tree进行深度遍历, 从而提升了光线遍历求交的性能。本文的并行算法相对于传统的单核处理器的串行算法加速高达50倍。

1 光线跟踪简介

光线跟踪时一种全局光照渲染技术[1], 可以生成照片级质量的图片, 可以很好的支持反射、折射和阴影等效果。

随着可编程GPU技术的发布, 更多的学者用GPU并行计算光线跟踪, 从而得到了一定程度的优化, 使得光线跟踪技术速度上升了很多。但是实时的光线跟踪渲染技术仍然是很大的挑战。

2 本文的光线跟踪算法

本文利用CUDA架构, 充分发掘GPU的硬件性能, 改进了传统光线跟踪算法的性能。

2.1 光线跟踪算法概述

首先, 算法根据光栅化的原理[2], 生成覆盖每个像素的三角形索引。然后并行生成一级光线, 一级光线可以直接与其相对应的三角形求交, 而不用进行KD-Tree的遍历。因为三角形与光线是已知相交的, 所以其求交算法可以简化为光线与平面相交, 从而进一步改进了光线跟踪算法的性能。

在一级光线求交结束后, 算法对于交点进行着色过程。本文的着色算法应用的是经典的Phong局部光照模型。与局部光照模型不同的是, 在着色过程中, 会通过一条阴影光线计算光照中的阴影, 从而实现像素级别的阴影效果。在着色过程中, 每个像素的着色是有单独的线程完成的, 因为像素着色之间是互不干扰的, 这样可以最大化的利用GPU的硬件能力优化算法中。

在像素着色过程中, 有的三角形的材质是有折射或反射属性的, 根据三角形的材质属性, 算法会生成二级光线。在二级光线生成后, 重复上述循环。不过二级光线的求交过程是需要通过遍历KD-Tree进行的。二级光线的着色结果会累加到相应的像素中, 从而实现了折射和反射的效果。

2.2 基于栈行为的KD-Tree遍历算法

本文提出的算法在GPU内核中实现了KD-Tree的深度遍历过程。必须在GPU内核函数中利用有限的硬件资源高效的实现栈的行为。

本文算法中的栈是利用32位的无符号整数位操作实现的。因为这种局部内存是存储在硬件中的寄存器中的, 访问速度相对很快, 所以非常适合进行栈的模拟。32位无符号整数的资源有限, 本文的栈是基于位操作的, 从而充分利用了硬件的资源。

其工作方式大致如下:

1) 如果光线与当前节点的某一个子节点相交, 以同样方式继续遍历这个子节点。

2) 如果光线没有和叶子节点中的三角形相交, 需要进行回朔过程。在回朔中, 首先检查当前对应的位是否为1。如果该位是1, 则代表当前节点的兄弟节点已经被访问过了, 所以直接退到其父亲节点。如果该位是0, 则检查光线是否与其兄弟节点相交, 相交的话就把相应的位更新为1。否则把相应的位更新为0, 然后退到其父亲节点。

根据上述算法, 可以利用32位的无符号整数有效的模拟二叉树遍历中的栈的行为, 从而在GPU内核函数端进行KD-Tree的深度遍历。

2.3 去除噪音的后处理过程

由于光线跟踪算法的一些局限性, 其生成的图片仍然会存在一些噪音。主要原因有以下两点:

1) 很多三角形与光线几乎平行, 所以导致出现了病态方程。由于计算机的浮点计算精度有限, 致使其求交结果很不精确。

2) 为了避免反射折射光线与当前三角形相交, 本文的算发会把生成的光线沿着光线方向移动一个位移。从而避免一些错误的阴影、折射和反射的计算。但是在一些精度很高的模型中, 这个位移会直接穿过一些原本与其相交的三角形, 所以导致求出错误结果。

上述问题是有与光线跟踪本身的特性造成的, 很难从根本上避免。可以采用多采样的方式进行弥补, 不过这回使算法的性能下降非常快。

本文采用一种后出里的简单快速的方法去除噪音。对于每个像素, 算法检查周围其与周围4个像素的差值。如果这些差值的绝对值之和大于一定阈值, 那么算法会认为当前像素是因为上述原因造成的噪音, 从而进行一定的平滑处理。

这种噪音处理方法具有一定的局限性, 可能会模糊一些物体的边缘。但是人的视觉对于噪音比边缘敏感很多, 所以大部分情况下, 其结果还是比未处理的更优。

3 本文的并行光线跟踪算法的性能

本文所进行的实验在Nvidia GTX 285的环境下进行测试, 得到的实验结果与性能如下:

上述算法的性能比较中, 图片的分辨率为1024×768。数据显示, 本文的算法相对于传统的CPU实现的光线跟踪算法有了大幅度的性能提升, 基本达到了每秒2帧左右的水平。对于非常复杂的场景, 本文的算法依然可以达到接近每秒1帧左右的性能。

4 结论

本文介绍了利用CUDA实现的光线跟踪算法。利用GPU内核中的虚拟栈的行为, 实现了基于深度的KD-Tree遍历过程, 从而使得光线跟踪优化很多, 几乎达到了交互式的性能。

然而, 由于过多的全局内存访问, 大量的分支现象存在, 本文的算法还没有达到实时的性能。继续优化算法中的瓶颈, 利用多核心GPU进行并行计算, 将是优化的工作方向。

参考文献

[1]孙家广.计算机图形学基础课程[M].2版.清华大学出版社, 2009.

tree 篇9

因特网的迅速发展带动了网络信息的急剧膨胀, 从而也促进人们对网页信息进行快速分类的需求。目前, 网页分类成为一个研究热点, 已经提出了很多网页分类方法, 其中基于机器学习的网页信息分类方法应用最为广泛, 如最近邻分类 (KNN) [1]、朴素贝叶斯分类、支持向量机 (SVM) [2]、规则学习算法等。这些分类算法一般都是建立在文本分类方法基础上的, 一般都要经过抽取文本的特征向量这一过程。但是HTML文本和一般文本是不同的, HTML页面除了一般的文本信息外, 还有其固有的特点。因此, 把网页分类转化为一般的文本分类显得尤为重要。网页特征向量提取方法的好坏直接影响到网页分类的效果, 本文就这一问题着重研究了HTML页面的结构特点, 提出了一种进行网页特征向量提取的非常有效的方法, 使得网页分类的效果也相应提高。

1 HTML超文本标记

HTML是在SGML定义下的一种描述性语言, 是一种描述文档结构的标记语言。HTML 4.01 Specification[3]详细规定了HTML语言的语法和格式, 约定了用来标记HTML文档的超文本标记, 即标签。HTML定义了许多标签来描述网页的格式和特性, 大部分HTML标签的书写格式如下:

内容

从HTML的总体结构上, 可以把HTML分为HEAD部分和BODY部分。HTML文本的框架结构一般由TABLE, DIV, TR, TD, FRAME等标签决定, 整个网页被这些标签分为表或者块, 表或者块的布局、再嵌套构成网页的架构。跟踪这些标签就可以大致地勾划出整个网页的结构。

经过分析发现, 一些超文本标记起到了标记文本信息重要性的作用, 由这些超文本标记修饰的文本蕴含的信息的重要性明显比其它标记修饰的文本蕴含的信息更强。这些超文本标记包括:标题

,

, …,

;粗体, 下划线, 斜体;标记里的属性内容:Meta里的属性一般有description, keywords, classification…, 这些内容也提供了一些很重要的信息。但是Meta标记的格式不是很规范, 而且并不是每一个HTML都有, 所以只是起到一个辅助作用。这些重要超文本标记组成标记集合G1={TITLE, H1, H2, H3, H4, H5, H6, B, U, I, Meta}。

2 HTML的页面表示方法介绍

HTML网页依据不同的应用目的, 有多种不同的表示方法, 本文介绍两种表示方法。一种是常用的网页的特征向量表示方法[4,5], 另一种是利用多叉树的HTML-Tree表示方法[6]。

2.1 网页的特征向量表示

文本可以看成是由许多的特征词条按照一定的顺序组成的多维信息空间。在向量空间模型 (VSM) 中, 这些特征词条被称为特征向量, 这个模型中即用向量

来表示一个文本。其ti中表示文本d中的一个特征词条, ωti (d) 表示ti这个词条在文本d中的权值, 这个权值是根据某种规则计算出来的。

ωti (d) =φ (tfi (d) ) 。常用的φ函数有布尔函数、平方根函数、对数函数和TFIDF算法, 其中最为常用的是TFIDF算法。

传统的TFIDF算法描述如下:

ωj= (0.5+0.5 (TFj/TFmax) ) *IDF (1)

其中, ωj是文档中术语j的权重, TFj是术语j在文档中出现的次数, TFmax是术语j在文档集中出现的最大的次数, IDF是反向文档频率。

向量空间模型也可以应用到HTML文本。通过提取HTML文本中的文本信息, 运用向量空间模型来表示HTML文本。

2.2 网页的HTML-Tree表示

文献[6]中简单地介绍了网页的HTML-Tree表示方法, 该方法可以形象地表示HTML文本, 它把一个HTML文本构建成一颗多叉树的形式, 从而可以更加直观方便地对HTML文本进行操作。

每一个HTML文本都有一个ROOT, 这个根节点有两个子节点: HEAD节点和BODY节点; 根据HTML标签书写的格式, 可以很容易地构建一个多叉树, 在构建过程中同时消除一些不严格的语法, 最后生成如图1所示的HTML多叉树。

在此多叉树中, 节点分为标签节点和数据节点两种类型。标签节点就是超文本标记所在的节点, 每一个节点都包含其标签名称、属性及属性值、父节点, 子节点等。如果一对超文本标记中间不是嵌套别的超文本标记, 而是超文本标记实际的数据, 那么这些数据被存储在数据节点。

2.3 改进的HTML-Tree网页表示方法

上述HTML-Tree网页表示方法值得借鉴, 但也有需要改进之处, 这里应该仅仅以提高网页分类的效果为目标, 弱化对中心任务没有太大影响的步骤。本文就上述目的对该算法进行了改进, 使得构建HTML-Tree更有目的性和可用性。

第一, 引入网页标签权值这一概念。标签的重要性实际体现了标签修饰的内容的重要性, 这里用标签的重要性进行统一。标签集合G1中标签的重要程度显然比其他普通标签的重要程度强, 应该赋予更高的权值。另外, 经过研究HTML页面的特点, 本文提出一种称为TopicTerm的标记符号, 这种标记符号的约定如下:

定义1 在TABLE, TR, TD, DIV等起到映面结构化作用的超文本标记所修饰的HTML表或块中起到概括作用的文本, 这些文本在HTML中通常是非链接文字, 这里称之为TopicTerm。TopicTerm是对网页文本中局部一个表或块内容的概括, 在网页文本分类中有重要的作用。

基于对TopicTerm的研究, 还有如下性质:

性质1 如果HTML文本的表或块以链接为主, 当在该块或表中出现TopicTerm时, 表或块中的链接文字在分类过程中的作用可以忽略, 而用TopicTerm代表整个表或块包含的信息。

TopicTerm与前面的超文本标记集合G1结合组成集合G={G1, TopicTerm}。集合G中标签的内容在整个页面中具有很高的重要性, 因此考虑对这些重要标签进行适当的加权是必要可行的。假定网页中普通标签的权值是1, 对集合G中的标签按照表1给定权值。

按照表1对HTML-Tree中的各个节点赋予不同的权值, 这样就构建了节点带有权值的HTML-Tree。

第二, 纵观整个HTML-Tree, 会发现当某个节点的重要性较高, 即权值较大时, 它的上一级节点的重要性也会随之增高, 即权值随之增大, 以此类推。这就又促使本文提出一种节点的反馈作用系数, 能够体现本节点对上一级节点的反馈作用。表1中列出了标记集合G中的标记的反馈系数, 可以看出不同的标记具有不同的反馈系数。标记的权值系数越大, 它的反馈系数也即越大。综合起来, HTML-Tree中节点的权值可以按照以下规定来计算:

超文本标记集合G中的标签所在节点的权值按照表1给定权值, 其他节点默认权值为1

对HTML-Tree中的节点自下而上地计算最终权值, 每个节点的权值是其自身的权值与其直接子节点对其反馈值的累积和。反馈值是指节点的权值与该节点的反馈系数的乘积。

一个HTML网页有很多的内容块组成, 但只有少数几个, 甚至只有一个中心内容块, 整个网页都是围绕这些中心内容块构建的。通过上述计算得到BODY和HEAD节点的直接子节点的权值, 设定一个阈值就可以得到这个网页的中心内容块。

第三, 对HTML-Tree中的内容块进行分类。HTML-Tree构建完成后, 在HEAD节点和BODY节点下由TABLE、DIV这些结构化标签分割成一个个的子树, 这里称之为内容块。每一个内容块有其自身的特点, 有的以文字说明为主, 称为主题类型内容块;有的以图片和超链接为主, 称为链接类型内容块。对每一种类型的内容块有不同的处理方法。对主题类型的内容块, 提取其文本内容, 组成具有主题信息的文本;对链接类型的内容块, 由于其大多是图片和超链接, 对网页分类的作用不是很大;但是根据性质1, 当该链接型内容块出现TopicTerm时, 用TopicTerm的内容代表该内容块的包含的信息, 还要对此内容进行一定的加权。对内容块分类的主要依据该内容块中的包含的文字段数目与链接数目的比例。

经过上述改进, 构建的HTML-Tree具有以主题型内容块为主、每一个节点带有权值的特点, 这在一定程度上起到了去除噪声信息, 突出重要信息的作用。

2.4 改进的网页特征向量表示方法

针对HTML文档的特点, 文献[4,7]提出了考虑超文本标记不同重要性的改进向量空间模型方法, 该算法考虑了网页中超文本标记不同重要性对特征项权值的影响。但是该算法计算出的特征项权值是指该特征项在一个文档集中重要性的一种体现, 而不是在一个网页中的重要性的体现, 计算的前提是有一个网页文档集;但现实任务是有一个网页文档, 就要找到一个特征向量来表示该网页文档, 显然上述算法存在一定的局限性。

为了完成寻找特征向量表示一个网页文档这一任务, 本文结合HTML-Tree的结果, 提出一种适合本文的计算特征项权值的公式:

undefined

其中ωi表示特征项i的权值, BWj表示内容块j的权值, Wij表示特征项i在内容块j中的权值, TNj表示内容块j中特征项的总数, TFij表示特征项i在内容块j中出现的次数, BN表示内容块的个数。公式既考虑到了内容块权值对特征项权值的影响, 又考虑了特征项词频对权值的影响。

3 特征向量的获取过程

网页的特征向量表示方法和HTML-Tree表示方法结合起来, 可以更好地表示网页, 并有利于获取网页的特征向量。整个特征向量的提取过程如图2所示, 按照下面的步骤进行:

Step1:对HTML文本进行初步的去噪净化。

Step2:根据HTML语法库, 构建HTML-Tree, 并依据表1的约定计算各个节点的权值。

Step3:对HTML-Tree中的内容块进行分类, 分为主题类型和链接类型两种内容块, 保留主题类型的内容块。

Step4:对留下的HTML-Tree各内容块选择中心内容块。

Step5:对中心内容块的文本数据进行分词, 并去掉中英文停用词和高频词。

Step6:计算Step5后各特征项的权值, 获得满足条件的特征向量。

3.1 网页去噪与净化

原始网页中存在大量的无用信息, 而网页分类利用的正是网页的主体信息, 在对网页进行进一步处理前, 对网页进行去噪净化处理是非常必要的。本方法中有两处去噪净化操作, 一处是初步去噪净化, 主要去除网页中的导航信息、网页尾部的版权信息、script语句及style语句等;另一个是在构建完HTML-Tree后, 对没有贡献的链接分类的节点进行清除, 进一步净化HTML-Tree。

3.2 分词

分词操作是把文本中的文字序列切分成有意义的词, 主要分为三大类[1]。本文对分词技术不做深入探讨, 采用现有的比较出色的分词技术-中科院计算技术研究所开发的汉语词法分词系统ICTCLAS[2], 该系统的分词正确率高达97.58%。

3.3 特征向量权值的计算与获取

通过计算得到的中心内容块是特征向量获取的主要来源, 因为网页的主要信息都在这些中心内容块中。

特征向量的选取依据上述提到的特征项的权值, 因而特征项权值的合理正确是正确提取特征向量的保证。结合上述提到的各个环节, 可以按照下述过程得到网页的特征向量。

for标签树中的每个中心内容块TBj do

for TBj中的每一个节点TAGi do

if该节点的标记是普通标记then

该节点默认权值是1

else该节点的标记在集合H中then

该节点的权值按照表1的规定给定, 并向上传递贡献权值

endif

if该节点中的特征项在停用词表或高频词表do

删除此特征项

else

记录该特征项的内容块号, 节点号及其权值

endif

end

end

按照公式2计算特征项的权值, 按照约束获取特征向量

特征向量的个数不要太多, 如果个数太多, 得到的特征向量的维数会很大, 这不利于网页分类器的计算效率。特征向量个数的选取可以通过设定阈值截取计算得到的特征项, 或者预先约定个数N, 在特征项中取前N个特征项即可。

4 实验与结果

为了验证本文提出的基于HTML-Tree的特征向量提取方法, 利用支持向量机 (SVM) 网页分类法进行实验。实验采用“中文Web信息检索论坛”的中文网页训练集和测试集[8], 中文网页分类集CCT2002-v1.1是从新闻网站上抓取得到对应类别的新闻网页, 它包括11678个训练网页和3630个测试网页, 分布在11个类别中。传统的支持向量机分类方法, 只支持二类分类, 这里采用“one-against-other”方法扩展使支持向量机方法可以支持多类分类, 核函数采用RBF函数。

使用能够综合反映分类准确度P和召回度R的F1指标来衡量中文网页分类器的性能。P, R和F1的计算公式如下:

Pi=li/mi (3)

Ri=wi/ni (4)

F1=2pr/ (p+r) (5)

其中, mi是经分类系统输出分类结果为第i类的文档数, li是依据中分类属于第i类的正确文档数;wi是经分类系统输出分类结果属于第i类且结果正确的文档数, ni是所有测试文档中属于第i类的文档个数。

表2中列出了本实验的结果。为了方便对分类效果进行比较, 同时列出了采用同一中文网页分类集的一些分类方案的测试结果[9], 这些测试结果采用的网页的预处理方法与本文的方法不同, 使用的分类方法有SVM方法和KNN方法等不同方法, 但同样具有可比性。

表2中的各项数值是分别是分类方案对中文网页测试集进行分类后11大类别各类的P, R和F1的平均值。

通过上述实验数据比较得出, 本文提出的基于HTML-Tree的特征向量提取方法对分类器的准确度和召回度的提高效果明显。对于中文网页分类方法来说, 这一方法达到了预期的目的, 取得了满意的结果。

5 结束语

本文在经过研究HTML文档的结构特点后, 提出一种基于HTML-Tree的网页特征向量的提取方法。该方法最大的特点是利用HTML本身结构化的特点, 恰当地使用多叉树表示HTML文档, 对多叉树进行去除支干杂干, 保留主干的处理, 并对多叉树中的各个节点适当赋值。特征向量权值的计算和选取充分考虑到了特征项的词频和所在超文本标记权值的影响, 做到了两者的兼顾。经过大量的实验证明, 利用本文方法提取到的HTML特征向量, 可以有效提高网页分类器的分类准确率和查全率。本方法也有不足之处, 没有过多的考虑链接文字对网页分类的影响, 下一步的研究工作主要集中在这一课题上。

摘要:中文网页特征向量的提取是提高中文网页分类准确度和召回度的关键。经过研究HTML网页的结构特点, 提出一种基于改进的HTML-Tree及网页元素权重的中文网页文本预处理方法, 并在此基础上进行网页文本特征向量的提取。该方法充分利用不同类别网页的特点, 考虑了网页内各种元素权重的贡献。经过实验验证, 该方法提高了网页特征向量提取的效率, 有效提高了中文网页分类的准确度和召回度。

关键词:HTML-Tree,特征向量,网页分类

参考文献

[1]Fang Yuan, Liu Yang, Ge Yu.Improving the K-NN and applying it into Chinese text classification[C].Guangzhou:Proceedings of theFourth International Conference on Machine Learning and Cybernetics, August 2005:18-21.

[2]Jiu-Zhen Liang.SVM based Chinese web page automatic classification[C].Xi’an:Proceedings of the Second International Conference onMachine Learning and Cybernetics, November 2003:2265-2268.

[3]HTML4.01 Specification[EB/OJ].http://www.w3c.org/TR/html4/, W3C Recommendation 24 December 1999.

[4]宋斌, 方小璐.基于网页特征的TFIDF改进算法[J].微计算机应用, 2002, 23 (1) :18-20.

[5]许建潮, 胡明.中文Web文本的特征获取与分类[J].计算机工程, 2005, 31 (8) :24-26.

[6]李晓明, 阎宏飞, 王继民.搜索引擎-原理、技术与系统[M].北京:科学出版社, 2006.

[7]Yue-Heng Sun, Pi-Lian He, Zhi-Gang Chen.An improved termweighting scheme for vector space model[C].Shanghai:Proceedings ofthe Third International Conference on Machine learning and Cyberne-tics, August 2004:1692-1695.

[8]中文网页分类训练集CCT2002-v1.1[EB/OL].http://www.cwirf.org/SharedRes/DataSet/cct.html, 2002.

tree 篇10

无线传感器网络技术(Wireless Sensor Network ,WSN)是物联网的关键技术, 是全球未来四大技术产业之一[1]。 而Zig Bee技术因其低成本、低功耗、低复杂度、 高可靠性等特点, 在工业自动化、 农业、 交通运输、 智能家居、医疗等领域都得到广泛应用[2]。Zig Bee网络拓扑结构主要有星型(Star) 、 树形(Tree) 和网状(Mesh)3 种网络结构[3]。 其中Zig Bee树型拓扑结构因扩展方便覆盖范围广,且Cluster-Tree算法仅依靠父子关系路由, 不需要进行路由发现和路由列表维护,因而很大程度上降低了网络泛洪压力,节省了网络带宽,降低了开销和能耗,所以被广泛的应用到低功耗、低成本的无线传感器网络中[4]。

然而, 当所构建的网络中要采集大量信息时, 承担较大业务量的底层节点往往因依据Cluster-Tree算法进行路由不能及时传输信息,而造成丢包和传输延时。 同时信息量传输大的路径上, 节点能耗快, 因而容易导致网络分割。 比如煤矿开采[5]等环境复杂多变的情况下,采集节点平时需要传输的数据比较少。 但当出现突发事件时,需要紧急传输大量详细信息。 此时网络中容易出现拥塞、丢包等问题,不利于控制中心的处理。 如何降低网络拥塞,提升网络吞吐量是目前面临的重要问题。

目前对Zig Bee树型拓扑结构的改进算法中,如参考文献[6-9] 中提到的HCTR算法、ENTR算法、 一种改进的Cluster-Tree算法和SATR算法,往往是通过结合引入的邻居列表, 从距离上优化路由的下一跳, 而并未考虑其所选下一跳是否发生拥塞,或是否在发生拥塞的路径上,以及当节点发生拥塞后如何处理的问题。 因此本文提出Z-DMHCTR算法, 不仅使一跳范围内的传输可以直接通过邻居列表送达, 而且对于缓存区剩余容量小于一定数值的节点, 可利用其邻居列表寻找额外的路径进行传输。 在额外路径的选取中,首先要考虑转发节点的缓冲区大小; 然后通过选中的节点转发数据时, 要避免选用发生拥塞的节点所在的源传输路径上的节点进行转发, 以此降低再次发生拥塞的可能性, 提升网络吞吐量。

1 Zig Bee无线网络Cluster - tree路由机制

Zig Bee无线网络中根据设备功能不同分为两类: 可用来充当协调器和路由器的全功能设备FFD和仅用来充当终端叶子节点的精简功能设备RFD。 在Zig Bee网络中,每个节点都具有64 位的IEEE扩展地址作为其唯一的标识。 此外,还会获得由其父节点动态分配的16 位网络地址[10]。 以下分别介绍Zig Bee网络层地址分配机制和等级树路由过程。

1 . 1 Zig Bee网络地址分配

Zig Bee网络地址分配涉及到3 个重要参数: Lm( 网络的最大深度) 、Cm( 父节点最多可拥有的子节点的个数) 、Rm( 子节点中最多可为路由节点的个数) 。 以上参数由协调器设定。 网络中父节点为子节点进行地址分配时,地址偏移量Cskip( d ) 可由式( 1 ) 计算得出, 其中d为父节点深度[10]。

根据子节点类型不同,地址分配分别依据式(2)和式(3) 进行。

其中Ap为深度为d的父节点地址。

1 . 2 Cluster - tree路由算法实现过程

Cluster - tree路由算法依靠父子关系进行。 根据以上Zig Bee网络地址分配公式, 当节点收到目的地址为D的数据包后,可依照式(4)判断D是否为自己的后代节点。若是则按照式(5) 进一步计算下一跳地址, 否则向上发给父节点[10]。

其中A为深度为d的节点的地址。

2 改进算法设计

通过引入邻居列表,使空间相近的节点可以直接送达,从而不仅可以降低传输延时,还可以节省能量。 同时在该邻居列表中添加邻居节点的剩余缓冲区大小和邻居节点拥塞示警位,以便在传输过程中降低发生拥塞的可能性。 如果当节点检测到自身缓冲区达到某预定值,则发起寻找到目的节点的额外的与自身传输路径不相交的路径进行信息的传输, 从而避免再次发生拥塞,提高网络吞吐量。

2 . 1 拥塞示警机制

首先在邻居列表中设置了剩余缓冲区大小(Buffer size ) 和拥塞警示位( Congestion alarm ) 。 其中, 剩余缓冲区大小由节点缓存队列的剩余值表示,并根据节点收发数据情况进行动态更新。 当节点缓冲区大小高于特定值时, 拥塞警示位置0, 节点按照正常方式进行路由; 否则,拥塞警示位置1,节点会寻找额外路径进行转发, 同时尽量避开已发生拥塞的节点。 邻居列表的更新是通过对收到的数据包的包头进行分析进行的。

2 . 2 Z - DMHCTR算法

改进算法的目的是能够使Zig Bee等级树路由算法更好地处理大量或高速率数据的传输问题。 因此当节点发生拥塞时,可通过寻找额外的节点不相交的路径同时进行信息传输, 从而提高网络的带宽利用率, 增加网络吞的吐量。 寻找节点不相交路径是为了降低再次发生拥塞的可能性,因为所选中下一跳节点可能与发生拥塞的节点具有相同的公共传输节点。

2 . 2 . 1 算法描述

假设网络中所有信息都传输至汇聚节点sink( 协调器或簇首节点),在Zig Bee树型拓扑结构中,依据上节描述,Z -DMHCTR算法中每个路由节点维护一个邻居列表。 当网络中传输数据量较低时,仅结合邻居列表进行判断一跳范围内的直接传输, 否则按照原路由方式进行。 若当某一节点缓冲队列的剩余大小等于邻居节点个数时拥塞示警位置1, 则发起寻找额外的节点不相交路径的过程。 发生拥塞的节点对邻居列表中非父节点进行筛选,将数据包转发至拥塞警示位为0 且剩余缓冲区大的节点处。 作为转发的中间节点,则需要依靠树型路径信息,从邻居列表中挑选出不与上发送节点相交的传输路径进行数据传输。 对于挑选出的节点,再进一步判断缓存区大小,从而挑选出适合的节点进行转发。

2 . 2 . 2 树型路径信息

为了降低发生拥塞的可能性, 通过引入Zig Bee树型拓扑结构中父子关系路径信息,来挑选节点不相交的路径进行信息传输。 其中父子关系路径信息指的是依据Zig Bee网络地址所计算出的当前子节点为其父节点的第几个子节点。 例如给定一个地址为Ai的节点,其深度为di∈[1,Lm] , 则在Zig Bee树型网络中从节点Ai到sink节点的父子关系路径信息可以定义为一个集合ZTPi=( C1, C2, … , Cdi) , 其中Ck( 1 ≤ k ≤ di) 取整, 表示位于k - 1层的父节点的第Ck个子节点。 Ck可通过式(6)计算。

当Ck取0 时表明路径已经终止。 根据节点类型不同,集合ZTPi分为以下两种类型:

转发节点通过式(6) 计算出父子关系路径信息的集合, 然后同发送节点的集合中元素进行对比, 从而可以判断其公共节点所在的位置和深度。 避免在依据等级树路由方式路由时,采用相同节点转发数据。

2 . 2 . 3 Z - DMHCTR算法实现

在源节点s向sink节点发送数据包的过程中:

( 1 ) 发送节点( 可能为源节点, 也可能为中间节点) 检测到自身拥塞标志位 γ=1 后将相关信息封装至分组头部后,发起额外路径寻找过程。

( 2 ) 通过查询邻居列表筛选出非父节点到一个结合中, 对集合中节点的拥塞警示位进行判断, 若集合中节点均发生拥塞,则跳转至步骤(5)执行,否则继续执行;

( 3 ) 优先挑选邻居列表中, 剩余缓冲区较大的节点进行转发;

( 4 ) 中间节点收到数据包并获取分组头信息后, 若发现分组中拥塞标志位置1, 则将自身的路径信息集合与发送节点的路径信息进行对比。 设变量l、i。 l表示当前节点的集合中最后一个不为0 的元素,i表示两集合中最先出现不同的元素为第i个元素:

(1)若i=1,则相同节点为sink节点,执行步骤(5);

(2)若i=l,则两节点共父,跳转至步骤(2)执行;

2若1<i<l, 则该中间节点同源节点在深度i-1 处有公共父节点,执行步骤(5);

( 5 ) 仍按等级树路由方式路由至下一跳节点;

( 6 ) 传输过程中节点按照步骤( 1 ) ~ ( 4 ) 执行, 直至信息传输到sink节点。

算法具体传输过程举例如下: 因算法所挑选的路径的数目会受到协调器子节点数目和发送节点邻居节点数目的影响,所以建立如下环形网络。 其中(Lm, Cm, Rm) =( 3 , 4 , 4 ) , 协调器位于圆心, 其余不同深度i的子节点部署在半径为i R的同心圆上,如图1 所示。

其中s为源节点,d为汇聚节点。 根据式(1) 结合所设定的参数可计算出深度为0,1,2 时地址块Cskip分别为21,5,1。 然后结合式(2)计算出各节点地址。 TR为所设定的节点的通信范围,确保一个节点在其通信范围内除父节点外, 至少存在两个邻居节点, 以增加找到额外路径的几率。 比如源节点s,其邻居节点为i,f,g。 正常情况下数据包的传输路径为s→f→a→d,结合式(6) 计算所得的等级树路径信息记为ZTPs= ( 1 , 1 , 1 ) 。 即s为其父节点f的第一个子节点,f为其父节点a的第一个子节点,依次类推。 如果当源节点s拥塞标志位置1 后,节点s依据其邻居列表寻找额外的路径。 当选择节点g为其下一跳并转发数据包后,节点g通过将自身的树路径信息集合ZTPg= ( 1 , 1 , 2 ) , 与源节点s的进行对比, 可知其第一个不同元素出现的位置为集合中第3 个元素,则可判断两节点s和g共父节点。 所以节点g从其邻居列表中挑选非父的节点k为其下一跳。 当k收到数据包后同样将ZTPk= ( 2 , 1 , 1 ) 与ZTPs进行对比, 其第一个不相同的元素位于第一位, 由此可知节点k同节点s只有在sink节点处才相交。 因此节点k可按照等级树路由方式进行路由, 由此寻找到的第二条路径为s→g→k→p→b →d 。 同样如果s选择的下一跳节点为i , 由同样的过程可以得出另一条传输路径为s→i→h→j→c→d。 如此可以在避免二次发生拥塞的情况下,将数据传输至sink节点,从而降低丢包率,提升网络吞吐量。

3 Z - DMHCTR路由协议性能仿真与分析

3 . 1 仿真环境

仿真基于NS2 平台, 重点将传输过程中,Z -DMHCTR算法在网络平均吞吐量、 分组递交率和端到端的平均传输延时与Cluster-Tree算法进行比较分析。 仿真结果证明了改进算法是有效的。

本实验利用IEEE802.15.4 的PHY层和MAC层来实现网络层的仿真,网络覆盖区域大小为150 m×150 m,网络布局依照同心圆建立。 协调器节点位于网络中心,同心圆半径为节点所在深度倍的R 。 所有仿真数据通过对网络独立运行20 次取平均值所得。 仿真过程中通过Trace文件对实验数据追踪记录, 并通过gawk工具对其进行提取和处理, 最后通过gnuplot工具绘制二维图形并对结果进行分析。 具体仿真环境的参数如表1所示。

3 . 2 仿真结果与分析

实验过程中通过将节点缓冲队列设置的较小, 并且采用Pareto分布流量产生器, 从而使节点缓冲队列长时间处于拥塞状态。 仿真结果如图2 所示。

图2 所示的分组递交率是通过式(8)计算所得,其中仅包括发生在路由层的传输包。

从图中可以看出改进后算法的分组递交率优于改进前算法。 尤其在网络运行至80 s时,改进前后算法的分组头地率有最大差值,此时改进前后算法的分组投递率分别为9.742%、11.932%,改进后算法提高了2.19%。

图3 中平均吞吐量指的是单位时间内成功传输的数据量,可由式(9)计算。

其中N为成功传送的分组数,Psize为一个封包的大小,tstart和tend分别为仿真模拟的开始和结束时间。

虽然随着网络的运行, 改进前后算法的吞吐量均呈下降趋势, 在50 s~80 s间改进后算法平均吞吐量明显高于改进前算法,从表2 中可以看出在70 s处两者出现最大差值2 760。 说明改进后算法通过多条路径传输确实改善了网络吞吐量。

图4 为发送节点数目增加时, 网络整体的平均吞吐量变化情况。

Z - DMHCTR算法所挑选的路径数目会受到邻居节点等的影响,而且大量传输包发送至汇聚节点容易发生碰撞而导致丢包,因此增加发送节点个数进行仿真。 可以看到, 改进前后算法网络整体吞吐量增长情况均变缓, 但Z-DMHCTR算法通过寻找额外的传输路径与原算法相比仍提升了网络的吞吐量。

图5 所示的平均端到端延时是通过式(10)计算所得:

其中N为成功传送的分组数,tr( i ) 为分组传输至目的节点的时间,ts( i ) 为分组被发送的时刻。 虽然改进后算法通过非父子关系路径传输数据时可能使传输条数增多而增加部分延时,但同时也降低了数据包在节点处缓存而引发的延时。 从实验结果可以看出,虽然延时相差非常小,但改进算法因为所选路径不为最短所造成的网络延时并未影响网络整体性能。

4 结束语

目前,Zig Bee技术依然是最适合传感器网络接入端的短距离无线通信技术。 而其树型拓扑结构也因为支持节能操作和轻量级路由并且已扩展而得到了广泛应用。但因Cluster-tree路由特点和Zig Bee技术本身传输带宽限制,使其对突发大量数据的传输或图像传输等一些高数据速率应用的处理存在问题。 本文针对上情况提出改进的Z-DMHCTR算法, 使网络中节点发生拥塞前能够寻找额外路径传输数据,从而不仅可以提升网络吞吐量, 降低丢包率, 还可以均衡网络负载, 避免部分节点因过度使用而死亡造成网络分割, 从而提升了网络整体的性能。

参考文献

[1]唐寅.基于Zig Bee的传统路由协议研究与优化[D].武汉:湖北大学,2013.

[2]袁安娜.基于Zig Bee网络的能量均衡路由算法研究[D].哈尔滨:哈尔滨理工大学,2014.

[3]马海潮.Zig Bee网络可扩展性及分簇路由协议研究[D].西安:西安电子科技大学,2014.

[4]赫晓萌.基于Zig Bee的无线粮情检测系统中路由协议的研究[D].北京:北京邮电大学,2009.

[5]刘国梅,谢晓广,白首华.基于煤矿安全监测的Zig Bee路由协议改进[J].工业安全与环保,2015,41(1):99-102.

[6]吴非.基于Zig Bee技术的无线传感器网络路由算法研究[D].北京:北京邮电大学,2015.

[7]Feng Shuo,Wang Mingan,Yu Qilin,et al.Improved neighbor table-based tree routing strategies in Zig Bee[C].Information Science and Technology(ICIST)5th International Conference,2015:513-518.

[8]班艳丽,柴乔林,王芳.改进的Zig Bee网络路由算法[J].计算机工程与应用,2009,45(5):95-97.

[9]Chen Shyr-Kuen,Wang Pi-Chung.Shortcut anycast tree routing in MANETs[C].Advanced Information Networking and Applications(AINA)26th International Conference,2012:635-640.

tree 篇11

在我国,悠久深厚的中华文化是德育教育的优秀范本,那么在大洋的彼岸,自由民主的美国又是如何开展德育教育的呢?

Leo在美国的三个学校上过学。无论是公立学校还是私立学校,学校都很在意孩子的思想品德教育。虽然他们没有专门开设德育课,但是老师非常注重培养孩子们的品格,尤其是小学生们。

美国学校的德育教育目标明确而朴实:要把孩子们从小培养成好人。在他们眼里,今后合格的公民一定要具备良好的品德和习惯,这是最基本的。品德教育在这美国通常被称作“价值观教育”。在这里各个州,甚至不同的学区都有制定学生价值观标准。Leo现在的这所学校,还专门设计了一棵“Character Tree”配合着教育孩子们做善良正直的人。

学校对这棵价值树的解释是:

Beginning with our youngest students, we teach the values of our Character Tree. Our community wants to live its values and to grow in our practice of them. Honor, Compassion, Dedication, Respect, Responsibility, and Spirit are the heights to which we encourage and aspire. Our efforts are supported and enlarged by finding and strengthening Courage─ to seek, say, and do right by one another. This symbol reminds us to grow big and strong in character.

也就是说,小朋友刚入学,就开始进行德育教育,重点要培养以下几样优秀品德:有荣誉感,富有同情心,乐于奉献,互相尊重,有责任感,积极向上。这一切优秀品德要基于不断培养孩子们的勇气!

这棵价值树在小学部无处不在,时刻提醒孩子们什么是大家要拥有的正确的价值观和美德。无论是在各个班级的墙壁上、学校的走廊里,或是接待处的墙壁上都看得到这棵大树。

学校不是简单地就这棵树对孩子们进行说教和灌输,也从来没有听说过要就这棵树进行考试,来鉴别孩子们是否完全掌握图中的那些Character。 学校的老师观察每个学生在学校的生活和学习,一旦看到值得认可称赞的好人好事,马上结合这棵树上的某个品德,引导别的学生一起去感受,去参与。学校的博客网站上,围绕着这棵树的内容也很多。定期的通报表扬“优秀事迹”。有些,还真是我们看着不起眼的小事儿,但是通过老师的肯定的描述,结合到价值树上的某个品德,还真觉得能透过微小看本质,透过水滴看尘世。

价值树还出现在Leo的读书笔记的作业中。读书笔记是他们的Language老师要求孩子们看完课外书之后写的读后感。老师希望他们能将书中的故事或是人物,结合着价值树谈谈体会。也因此,又一次将优秀的品德再次深入人心。

【tree】推荐阅读:

上一篇:新形势下企业经济管理下一篇:公司分红

本站热搜

    相关推荐