1#ifndef __CCEX_CLUSTER_PCCE_H_
2#define __CCEX_CLUSTER_PCCE_H_
26void shrink_restspins(
BathArray* ba,
int rest_nspin);
27void update_global_best(
int index,
double *inertia,
double *sil,
int *trial,
double *global_best_inertia,
double *global_best_sil,
int *global_best_trial);
28void print_pcce_info(
int bath_nspin,
int nqubit,
int ncenter,
int pcce_nspin,
int rest_nspin);
29void initializeCentroids(
Point* spins,
Point* centers,
int ncenter,
int pcce_nspin) ;
30void choose_initial_method(
bool kmeans_pp,
Point* spins,
Point* centers,
int pcce_nspin,
int ncenter);
31void kMeansPlusPlus(
Point *spins,
Point *centers,
int pcce_nspin,
int ncenter) ;
32void shuffle_spins(
Point *array,
int* shuffle_idxs,
int pcce_nspin) ;
33void changeIdx_inverse_shuffle_idx(
int* shuffle_idx,
int* inverse_shuffle_idx,
int pcce_nspin);
34void assignCentroids(
int* assigned_cluster_idx,
double** distances,
int pcce_nspin,
int ncenter) ;
35void calc_dist_to_centers(
Point* spins,
Point* centers,
double** distances,
int pcce_nspin,
int ncenter) ;
36void copy_best_centers(
Point* centers,
Point* best_centers,
int ncenter);
37void copy_best_assigned(
int* assigned,
int* best_assigned,
int pcce_nspin);
38void copy_best_idxList(
int* idxList,
int* best_idxList,
int pcce_nspin);
39void copy_best_spins(
Point* spins,
Point* best_spins,
int pcce_nspin);
40void copy_bath_to_point_type(
BathSpin** bath,
Point* spins,
int pcce_nspin);
41void print_BD(
char* str,
int num);
42void print_centers(
int ncenter,
Point* centers,
int rank);
43void print_kmeans_converge_info(
int trial,
int iteration,
int ncenter,
Point** centers);
44void print_optimize_kmeans_info(
int trial,
int iteration,
double inertia,
double best_inertia,
double best_sil,
int rank);
45void print_assign_idx(
int *assign_idx,
int pcce_nspin,
int rank) ;
46void print_spins(
Point *spins,
int pcce_nspin,
int rank);
47void print_time(clock_t start, clock_t end);
48void write_centers(FILE **c_savefile,
Point **centers,
int ncenter);
49void write_spins(FILE **s_savefile,
Point **spins,
int** assigned_idx,
int pcce_nspin);
50void print_best_spins(
Point **spins,
int** assigned_idx,
int pcce_nspin);
51void print_best_centers(
Point **centers,
int ncenter);
53double silhouetteCoefficient(
Point *spins,
int *assignments,
Point *centers,
int pcce_nspin,
int ncenter);
54double calculateInertia(
Point *spins,
Point *centers,
int *assignments,
int pcce_nspin,
int ncenter);
55double calc_dist(
double* arr1,
double* arr2);
58int if_contain(
int* arr,
int arr_size,
int value) ;
59bool updateCentroids(
Point *spins,
int *assignments,
Point *centers,
int pcce_nspin,
int ncenter) ;
62void BathArray_connectivity_pcce(
int*** cmap,
float*** stmap,
Point* centers,
float rdip,
float rdipcut,
int pcce_nspin);
63int** Cluster_setCenterIdx_spinIdx_2dArr(
int ncenter,
int sK,
int pcce_nspin,
int* best_assigned_idx);
64void print_clusinfo_sorder_i(
int*** pcceClusInfo,
int sorder,
int n_cInfo);
65void print_clusinfo_sorder_i_j(
int*** pcceClusInfo,
int sorder,
int n_cinfo,
int cIdx);
66int*** convert_centerIdx_to_spinIdx(
Cluster* cls,
int cOrder,
int sK,
int** cs2dArr);
BathSpin structure contains each BathSpin's information.
Definition bath.h:17
Definition cluster_pcce.h:17
Definition cluster_pcce.h:12