今天写一个程序,简单描述就是在二维坐标系中, 存在若干个点,求每个点之间的距离, 首先想到的是用邻接矩阵,由于点很多,并且A距离B 和B距离A 肯定是一样的,用矩阵表示是一个对称矩阵,考虑使用对称矩阵压缩。
A_ij表示第i行j列的数据
由上图可以知道,A_ij和A_ji的值是一样,并且我的需求中,对角线上的数据都是0,然后我们就可以用一个三角矩阵来表示。
具体的压缩网上很多资料,我这里主要是写二维矩阵坐标转一维的坐标的推理
我们假设有 n行n列,
我们要求 A_ij在对应的一维数组中的下标(我们一维数组的长度为 n*(n-1)/2 注意:我的下三角矩阵是没有包含对角线的数据的)
1.先找i-1行的数据个数
0+1+2+..+(i-1) 下标是从0开始的,并且 i>0
其中 0到i-1的行数为 (i-1)-(0)+1=i
根据等差数列求和公式 s_n=0*i+i*(i-1)/2