library(igraph) 
global.efficiency<-function(G){ 
  N<-vcount(G); 
  geo.recip<-1/shortest.paths(G); 
  #计算网络中两两顶点之间的最短距离，并且取倒数，形成一个矩阵。 
  geo.recipNA<-ifelse(geo.recip==Inf,NA,geo.recip); 
  #由于矩阵对角线上为1/0，显示为Inf，将其指定为缺失值NA 
  #当然原来距离为0的顶点对在矩阵中也显示为NA，不影响计算结果 
  globalEff<-sum(geo.recipNA,na.rm=TRUE)/(N*(N-1)); 
  #计算非缺失值的所有数据之和，并除以顶点数。 
  return(globalEff) #返回全局效率。 
} 
library(igraph); 
library(intergraph); 
workPath<-"D:\\Desktop\\徐冬梅 小论文\\3 protected\\version2023_v2\\R\\expanded\\ESP_length_expanded.net";#工作路径，自己填啦。 
number<-read.table('D:\\Desktop\\徐冬梅 小论文\\3 protected\\version2023_v2\\R\\expanded\\BC_expanded.csv',header=TRUE)
forMax.V<-nrow(number);#删点模拟的次数 
#========================================================== 

#================导入网络，边权值忽略====================== 
originigraph<-read.graph(workPath,"pajek"); 
#originigraph<-remove.edge.attribute(originigraph,"weight"); #一般不用忽略边权值
#========================================================== 

#=====================删点模拟============================= 
number.vertices<-vcount(originigraph);#顶点总数 


#--------------准备数组------------------------------------- 
gEf.V<-numeric();#删点后全局效率 

#删点的顺序
#-------------------实施删点计算-------------------------------- 
verDelNets<-originigraph;
for(i in 1: forMax.V){ 
  startTime<-Sys.time(); 
  #~~~~~~~~~~~~~~~~~~~~~~~制备删点网络~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  b<-number[i,1]
  verDelNets<-delete.vertices(verDelNets,as.character(b));
  #igraph.sample(1,number.vertices,number.del.V); 
  #对网络进行删点,igraph.sample()是igraph包内的随机数发生器 
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  #~~~~~~~~~~~~~~~~~~~~计算实际网络删点的参数~~~~~~~~~~~~~~~~~~~~ 
  gEf.V[i]<-global.efficiency(verDelNets); 
  #count.comp[i]<-count_components(verDelNets);#
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  
  endTime<-Sys.time(); 
  cat("The",i,"of",forMax.V,"total iteration need",endTime-startTime,"seconds","\n"); 
} 
#研究选择了参数：网络全局效率
write.csv(gEf.V,"D:\\Desktop\\徐冬梅 小论文\\3 protected\\version2023_v2\\R\\expanded\\gEf_BC_expanded.csv")
