设为首页 加入收藏

TOP

QuadTree c++实验结果
2014-11-24 09:16:07 】 浏览:5447
Tags:QuadTree 实验 结果

1. 实验数据以及实验环境

数据集一:City of Oldenburg (OL) Road Network

结点个数:6105

数据集二:Road Network of North America (NA)

结点个数:175813

实验环境:windows7,VS2012

2. 实验结果

表2-1 实验结果

数据集

结点个数

QuadTree

结点数

树高

最大宽度

创建(ms)

查询(ms)

1

6105

19773

14

6104

194

16

2

175813

800709

14

199048

6814

640

3.实验分析

数据一与数据二区域均为(0.0, 0.0)~(10000.0, 10000.0),因此数据集二中的数据比数据一密集的多。C++中使用的float最多有7位有效数字,因此当点密集时将不能够继续划分(即使double也不能解决)。

刚开始建立的QuadTree直到每个QuadTree结点只包含一个数据或所包含的区域没有数据,用数据集一测试没有问题,且可以准确查到每一个存在的节点。但对于数据集二却因没有足够的内存空间而不能够将这样的QuadTree创建(内存消耗急剧增加,创建850多万个结点时失败)。为了进一步减少空间消耗,将stack容器替换成自己写的QuadTreeNodeStack,但当结点个数达到1700多万时崩溃。

针对以上问题,修改后的QuadTree的叶子节点面积小于1.0*1.0时即使包含多个数据也不再划分,问题得到解决。

4. 实验心得

4.1存在的问题

(1) 刚开始写代码时想到哪里写到哪里,结果忙了半天却只能重新写。

(2) 对问题考虑的步骤全。比如在数据集一上能够测试,但数据集二却完全不能用,只能花时间来修改数据结构。

4.2总结

动手写代码之前一定要:

(1) 认真分析数据结构的特点,尤其特殊情况;

(2) 设计好每种数据类型,包括属性、方法等;

(3) 认真了解使用的各种库函数。

5. 源码下载

代码1:http://download.csdn.net/detail/woniu317/6931519

代码2:http://download.csdn.net/detail/woniu317/6934665

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇libevent源码分析---时间管理模块 下一篇ZOJ 1484 HDU 1394 Minimum Inver..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目