转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove
 
 二维平面中有一些点,两点之间的距离为曼哈顿距离,求最小生成树。 
 
 
 朴素的n个点,只能做到O(n^3)或者O(n^2 lgn)。 
 
 
 但是针对这种曼哈顿距离的MST。 
 
 
 其中有个性质是:对于某个点,以他为中心的区域分为8个象限,对于每一个象限,只会取距离最近的一个点连边。 
 
 
 这样的话,由于边是双向的,所以对于每个点只需要考虑4个方向,边的数目最多为O(4*n),再使用kruskal就可以做到O(nlgn)了。 
 
 
 至于证明: 
 
这个结论可以证明如下:假设我们以点A为原点建系,考虑在y轴向右45度区域内的任意两点B(x1,y1)和C(x2,y2),不妨设|AB|≤|AC|(这里的距离为曼哈顿距离),如下图:
 
 

                  
                  
                  
                  
本文探讨了在y轴向右45度区域内,如何根据曼哈顿距离选择连接点以构造最小生成树。通过数学分析证明,在这个区域内,只需选择离原点A最近的点与A相连,即可保证距离的最优化。
          
最低0.47元/天 解锁文章
                          
                      
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2154
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            