情况
假设我们在单位正方形 [0, 1]x[0, 1] 上有n个点和一个正实数r。我们将图G (point 1, point 2, ..., point n , r ) 定义为顶点 {1, 2, ..., n } 上的图,使得当且仅当有一条边连接两个给定顶点如果对应点之间的距离小于或等于r。(您可以将这些点视为发射器,只要它们在范围r内,它们就可以相互通信。)
给定单位正方形 [0, 1]x[0, 1] 上的n个点,我们将连接距离定义为连接G(point 1, point 2, ..., point n , r )的最小可能r .
问题 1) 找到一个算法来确定G (point 1, point 2, ..., point n , r ) 是否连通
问题 2) 找到一个算法,找到任意n 个给定点的连接距离
我的部分解决方案
对于问题 1,我有一个算法(算法 1)。我还没有实现它,但我确信它有效。(粗略地说,这个想法是从顶点 1 开始,并尝试通过边缘到达所有其他顶点。我认为这有点类似于这个。)
剩下的就是问题 2。我也有一个算法来解决这个问题。但是,我认为这在时间上效率不高。我将尝试解释它是如何工作的:
您必须首先说服自己,连接距离r min必然是两个给定点之间的距离,例如p和q。因此,r min最多有 *n**( n -1)/2 个可能的值。
因此,首先,我的算法将测量所有 *n**( n -1)/2 距离并按升序存储它们(例如,在 C 中的数组中)。然后它将使用算法 1 测试每个存储的值(按递增顺序),以查看图形是否与该范围相连。完成这项工作的第一个值是答案r min。
我的问题是:对于问题 2,是否有更好的(时间方面)算法?
备注:点将是随机生成的(大约有 10000 个),所以这就是算法应该“快速”解决的类型。此外,我将在 C 中实现这一点。(如果这有什么不同的话。)