private double[][] computeDistanceMatrix() {
		int nIntersections = 0;
		double[][] s = new double[nCircles][nCircles];
		for (int i = 0; i < nPolygons; i++) {
			char[] c = encode(i);
			for (int j = 0; j < c.length; j++) {
				if (c[j] == '0')
					continue;
				for (int k = j + 1; k < c.length; k++) {
					if (c[k] == '0')
						continue;
					s[j][k] += polyData[i];
					s[k][j] = s[j][k];
					nIntersections++;
				}
			}
		}

		for (int j = 0; j < nCircles; j++) {
			s[j][j] = 0;
			for (int k = 0; k < j; k++) {
				s[j][k] = 1 - s[j][k] / (circleData[j] + circleData[k]);
				s[k][j] = s[j][k];
			}
		}
		if (nIntersections < 1)
			return null;
		else
			return s;
	}