Parameters
    ----------
    points : list of points (geometry.Point)
        The first element of the list is the center of the bounding box of the
        first stroke, the second one belongs to the seconds stroke, ...

    Returns
    -------
    mst : square matrix
        0 nodes the edges are not connected, > 0 means they are connected

def get_mst(points):
    """
    Parameters
    ----------
    points : list of points (geometry.Point)
        The first element of the list is the center of the bounding box of the
        first stroke, the second one belongs to the seconds stroke, ...

    Returns
    -------
    mst : square matrix
        0 nodes the edges are not connected, > 0 means they are connected
    """
    graph = Graph()
    for point in points:
        graph.add_node(point)
    graph.generate_euclidean_edges()
    matrix = scipy.sparse.csgraph.minimum_spanning_tree(graph.w)
    mst = matrix.toarray().astype(int)
    # returned matrix is not symmetrical! make it symmetrical
    for i in range(len(mst)):
        for j in range(len(mst)):
            if mst[i][j] > 0:
                mst[j][i] = mst[i][j]
            if mst[j][i] > 0:
                mst[i][j] = mst[j][i]
    return mst