情况
假设我们在单位正方形[0,1]x [0,1]上给定n个点和一个正实数r。我们定义图G(点1,点2,...,点n,r)为顶点{1、2、...、n}的图,如果且仅当相应点之间的距离小于或等于r时,则连接两个给定的顶点。 (您可以将这些点视为发射器,只要它们在范围内r内就可以相互通信。)
给定单位正方形[0,1]x [0,1]上的n个点,我们将连通距离定义为G(点1,点2,...,点n,r)连接所需的最小r。
问题1)找到一种算法,确定是否连接了G(点1,点2,...,点n,r)
问题2)找到一种算法,查找任何给定点的连通距离n
我的部分解决方案
我有一个算法(算法1)可解决问题1。我还没有实现它,但我相信它有效。 (大致上,这个想法是从顶点1开始,并通过边尝试到达所有其他顶点。我认为它会与这个有些类似。)
问题2仍未解决。我也有一个算法。然而,我认为它的时间效率不高。我将尝试解释其工作原理:
您必须首先确信连通距离rmin必然是给定点之间的距离,例如p和q。因此,rmin可能的值最多为*n*(n-1)/ 2。
因此,首先,我的算法将测量所有*n*(n-1)/ 2个距离并按升序存储它们(例如在C中的数组中)。然后,它将使用算法1测试每个存储的值(按升序)以查看图形是否在该范围内连接。做好工作的第一个值是答案,rmin。
我的问题是:对于问题2是否有更好(时间上)的算法?
备注: 这些点将会随机生成(大概有10000个),所以算法应该能够快速解决这种类型的问题。此外,我将使用C语言来实现它。(如果这有任何不同之处。)