资源简介

蛋白质相互作用网络中求解Betweenness Centrality的简单方法,用C++实现,需改进

资源截图

代码片段和文件信息


#include 
using namespace std;
#include 
#include 
#include 

//执行函数
void excute(int m[][5]int v[]int n)
{
double CB[5] ;
    for(int i = 0 ;i < n; i++)
{
CB[i] = 0;
}
for(int s = 0; s < n; s++)
{
  vector< vector > p(5);//用于存储最短路径到达节点在最短路径上的前一个节点。一个链表数组
  stack S;
  queue Q;
    
  double a[5];
      for(int h = 0 ; h < n; h++)
  {
a[h] = 0.0;//从s出发,到达顶点t的最短路径数目
  }
  a[s] = 1.0;
  int b[5];//从s出发,到达t的路径的长度
  for(int e = 0 ; e < n; e++)
  {
b[e] = -1;
  }
  b[s] = 0;

  Q.push(s);

  while(!Q.empty())
  {
  int v = Q.front();
  Q.pop();
  S.push(v);
  //cout << “S  “ << S.top() << “\t“;
  for(int w = 0; w < n ;w++)
  if(m[v][w]!=0)
  {
  if(b[w] < 0)
  {
  Q.push(w);
  b[w] = b[v] +1;
  }

  //shortest path to w via v
   
  if(b[w] == b[v] +1)
  {
  a[w] = a[w] +a[v];
  p[w].push_back(v);
  }
  }//内部for
  
  }//while循环
 //S中存的是从s出发到各定点的最短路径。
  double sum[5];
  int v;
  for(v = 0; v < n; v++)
  {
  sum[v]=0;
  }
  while(

评论

共有 条评论