毕业设计的题目是关于range search的, 这个问题的背景是搜索机器人的领域,也就是说,如果确定机器人的领域范围是半径为 3米地圆,那么我的任务就是快速找到在这个范围内的所有机器人。在实体中,这个由传感器可以很好地解决;但如果机器人没有传感器, 那么可以通过通信的方法解决,用ad-hoc。而问题是, 在一个仿真环境中呢?
那么就需要设计算法进行搜索。我的输入是机器人的位置和领域半径,输出是领域内机器人的个数和位置。
最笨的办法是:选取一个点,然后遍历每一个点,分别计算欧氏距离,然后和领域半径比较,如果小于半径,那么输出坐标,并且数目加一。
这个办法的时间复杂度是你n^2,显然,实时性很低。
于是,可以找到一个比较好的方法,那就是用k-d树。
目前我用matlab写程序,那么遇到的问题是,怎样用matlab很好地表示出二叉树的结构?
如果这个方法很好地实现,那么复杂度可以降到n*logn。
怎样继续改进这个算法呢?
正在探索……