]> granicus.if.org Git - graphviz/commitdiff
remove unused SparseMatrix_k_centers_user
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 9 Jun 2021 02:45:50 +0000 (19:45 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 19 Jun 2021 18:36:41 +0000 (11:36 -0700)
lib/sparse/SparseMatrix.c
lib/sparse/SparseMatrix.h

index 1884667d99e77f201e7136a22d01aa0906996be4..ad859df2e07fcebff9b06bb3b685f8235b0ef130 100644 (file)
@@ -3013,124 +3013,6 @@ int SparseMatrix_k_centers(SparseMatrix D0, int weighted, int K, int root, int *
 
 }
 
-
-
-int SparseMatrix_k_centers_user(SparseMatrix D0, int weighted, int K, int *centers_user, int centering, real **dist0){
-  /*
-    Input:
-    D: the graph. If weighted, the entry values is used.
-    weighted: whether to treat the graph as weighted
-    K: the number of centers
-    root: the start node to find the k center.
-    centering: whether the distance should be centered so that sum_k dist[n*k+i] = 0
-    centers_user: the list of nodes that form the k-centers, GIVEN BY THE USER
-    Output:
-    dist: of dimension k*n, dist[k*n: (k+1)*n) gives the distance of every node to the k-th center.
-    return: flag. if not zero, the graph is not connected, or out of memory.
-  */
-  SparseMatrix D = D0;
-  int m = D->m, n = D->n;
-  int *levelset_ptr = NULL, *levelset = NULL, *mask = NULL;
-  int aggressive = FALSE;
-  int connectedQ, end1, end2;
-  enum {K_CENTER_DISCONNECTED = 1, K_CENTER_MEM};
-  real *dist_min = NULL, *dist_sum = NULL, dmax;
-  real *dist = NULL;
-  int nlist, *list = NULL;
-  int flag = 0, i, j, k, nlevel;
-  int root;
-
-  if (!SparseMatrix_is_symmetric(D, FALSE)){
-    D = SparseMatrix_symmetrize(D, FALSE);
-  }
-
-  assert(m == n);
-
-  dist_min = MALLOC(sizeof(real)*n);
-  dist_sum = MALLOC(sizeof(real)*n);
-  for (i = 0; i < n; i++) dist_sum[i] = 0;
-  if (!(*dist0)) *dist0 = MALLOC(sizeof(real)*K*n);
-  if (!weighted){
-    dist = MALLOC(sizeof(real)*n);
-    root = centers_user[0];
-    SparseMatrix_pseudo_diameter_unweighted(D, root, aggressive, &end1, &end2, &connectedQ);
-    if (!connectedQ) {
-      flag =  K_CENTER_DISCONNECTED;
-      goto RETURN;
-    }
-    for (k = 0; k < K; k++){
-      root = centers_user[k];
-      SparseMatrix_level_sets(D, root, &nlevel, &levelset_ptr, &levelset, &mask, TRUE);
-      assert(levelset_ptr[nlevel] == n);
-      for (i = 0; i < nlevel; i++) {
-       for (j = levelset_ptr[i]; j < levelset_ptr[i+1]; j++){
-         (*dist0)[k*n+levelset[j]] = i;
-         if (k == 0){
-           dist_min[levelset[j]] = i;
-         } else {
-           dist_min[levelset[j]] = MIN(dist_min[levelset[j]], i);
-         }
-         dist_sum[levelset[j]] += i;
-       }
-      }
-
-    }
- } else {
-    root = centers_user[0];
-    SparseMatrix_pseudo_diameter_weighted(D, root, aggressive, &end1, &end2, &connectedQ);
-    if (!connectedQ) return K_CENTER_DISCONNECTED;
-    list = MALLOC(sizeof(int)*n);
-
-    for (k = 0; k < K; k++){
-      root = centers_user[k];
-      //      fprintf(stderr,"k = %d, root = %d\n",k, root+1);
-      dist = &((*dist0)[k*n]);
-      flag = Dijkstra(D, root, dist, &nlist, list, &dmax);
-      if (flag){
-       flag = K_CENTER_MEM;
-       dist = NULL;
-       goto RETURN;
-      }
-      assert(nlist == n);
-      for (i = 0; i < n; i++){
-       if (k == 0){
-         dist_min[i] = dist[i];
-       } else {
-         dist_min[i] = MIN(dist_min[i], dist[i]);
-       }
-       dist_sum[i] += dist[i];
-      }
-
-    }
-    dist = NULL;
-  }
-
-  if (centering){
-    for (i = 0; i < n; i++) dist_sum[i] /= k;
-    for (k = 0; k < K; k++){
-      for (i = 0; i < n; i++){
-       (*dist0)[k*n+i] -= dist_sum[i];
-      }
-    }
-  }
-
- RETURN:
-  if (levelset_ptr) FREE(levelset_ptr);
-  if (levelset) FREE(levelset);
-  if (mask) FREE(mask);
-  
-  if (D != D0) SparseMatrix_delete(D);
-  if (dist) FREE(dist);
-  if (dist_min) FREE(dist_min);
-  if (dist_sum) FREE(dist_sum);
-  if (list) FREE(list);
-  return flag;
-
-}
-
-
-
-
 SparseMatrix SparseMatrix_from_dense(int m, int n, real *x){
   /* wrap a mxn matrix into a sparse matrix. the {i,j} entry of the matrix is in x[i*n+j], 0<=i<m; 0<=j<n */
   int i, j, *ja;
index d3ffb9e6e5105389512048aa1b6a2aca9699c386..0bdb1669a96a8dbd7d84c52cb161eea06371b105 100644 (file)
@@ -115,9 +115,6 @@ SparseMatrix SparseMatrix_complement(SparseMatrix A, int undirected);
 int SparseMatrix_k_centers(SparseMatrix D, int weighted, int K, int root, 
                          int **centers, int centering, real **dist);
 
-int SparseMatrix_k_centers_user(SparseMatrix D, int weighted, int K, 
-                               int *centers_user, int centering, real **dist);
-
 int SparseMatrix_distance_matrix(SparseMatrix A, int weighted,  real **dist_matrix);
 SparseMatrix SparseMatrix_distance_matrix_khops(int khops, SparseMatrix A, int weighted);