亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hafnian.c

?? Computes the hafnian of a nonnegative integer matrix. Notes: Copy hafnian.c to main.c, in the same d
?? C
字號:
/* ***********************************************************************//* author   : Alexander Yong                                             *//* email    : ayong@umich.edu                                            *//* version  : May 5, 2003                                                *//* Code for approximating the hafnian of a nonnegative integer matrix,   *//* based on                                                              *//* "Random weighting, asymptotic counting and inverse isoperimetry" by:  *//* Alexander Barvinok and Alex Samorodnitsky.                            *//* Uses the implementation of H. Gabow's N-cubed weighted matching       *//* algorithm ("Edmonds' algorithm") by Ed Rothberg                       *//* Call this file main.c and "make" it with Rothberg's package (thus     *//* replacing the main.c included there).                                 *//* The package may be found at:                                          *//* ftp://ftp.zib.de/pub/Packages/mathprog/matching/weighted/index.html   *//* ********************************************************************* */#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <time.h>#include "graphtypes.h"#define MAXDIM 300            const int MAXIMAL_RAND=RAND_MAX;const float SOLVER_ACCURACY = 0.000001;     const float PI = 3.14159254;const int INTEGER_SCALE_FACTOR = 100;float nonedge_weight;              int used_nonedge = 0;       /* --------------------------------------------------------------------- *//* LOGISTIC DISTRIBUTION FUNCTIONS *//* Modified rand(), since returning 0 or MAXIMAL_RAND can cause problems */modified_rand(){  int temp;  temp=rand();  if(temp==0){    temp=temp+1;  }  else if(temp==MAXIMAL_RAND){    temp=MAXIMAL_RAND-1;  }  return(temp);}/* Redistributes a point from the uniform distribution to *//* the logistic distribution */float random_weight_logistic(float data_point, int aij){   float log_rand,temp_var,temp_var2;  temp_var2=-log(data_point)/aij;  if(temp_var2>0.1){        temp_var=exp(-log(data_point)/aij);        temp_var=temp_var-1;	log_rand=-log(temp_var);  }  else{	log_rand=(log(aij)-log(log(1/data_point)) - temp_var2/2-(temp_var2)*(temp_var2)/24);  }  if(aij==0){	return(nonedge_weight);  }  else{    return(log_rand);  }}/* h(t) for the logistic distribution */float H_fn_logistic(float t){  float Hoft;  float interval_range;  float left_point;  float right_point;  float mid_point;  float d1, value1, d2, value2, max_value;  left_point=0;  right_point=1-SOLVER_ACCURACY;  interval_range=2;      /* ensures at least one interation of the following loop: */      while(interval_range>SOLVER_ACCURACY){      mid_point=(left_point+right_point)/2;      d1=(left_point+mid_point)/2;      d2=(right_point+mid_point)/2;      value1=t*d1-log(PI*d1/(sin(PI*d1)));      value2=t*d2-log(PI*d2/(sin(PI*d2)));      		    if(value1>value2){		      right_point=mid_point;		      max_value=value1;		    }		    else{		      left_point=mid_point;		      max_value=value2;		    }		    interval_range=right_point-left_point;    }  Hoft= max_value;  return(Hoft);}float upper_logistic(float avg_GAMMA, int k){  float upper_ans;    upper_ans=avg_GAMMA;  return(upper_ans);}float lower_logistic(float avg_GAMMA, int k){  float lower_ans;   lower_ans=(k-1)*H_fn_logistic((float)avg_GAMMA/(k-1));  return(lower_ans);}main(){    long int seed = time(0);             /* random seed */    int ii,jj,kk,mm,pp;    int k,m,max_entry;    int random_data[MAXDIM][MAXDIM];    float weights[MAXDIM][MAXDIM];                int matrix[MAXDIM][MAXDIM];          float GAMMA,avg_GAMMA;                             float max_weight_matching;    float upper_bound,lower_bound;    float min_weight,max_weight,prob;    float tempa;    int tempb;    int no_matching = 0;    Graph graph;    int *Mate;    int temp_weight;    char file[25];    FILE *fp;    int *input_number;    printf("\n\n\n\n");    printf("--------------------------------------------------------------\n");    printf("This program estimates the hafnian of a given 2k x 2k\n");     printf("symmetric nonnegative integer matrix. This is done by\n");    printf("associating to the matrix an undirected, weight graph\n");    printf("G, assigning random weights to each edge of G, and\n");    printf("applying Edmonds' algorithm to find a maximal weight perfect\n");    printf("matching. This is done m times and the resulting average estimates\n");    printf("the function GAMMA. Then upper and lower bounds for log\n");    printf("of the hafnian are calculated.\n");    printf("--------------------------------------------------------------\n\n\n");    printf("Enter the number of times m>0 to sample: \n");    scanf("%i",&m);    printf("\n");    while(m<=0){       printf("Enter the number of times m>0 to sample: \n");       scanf("%i",&m);       printf("\n");    }    printf("Enter k, half the dimension of the matrix:\n");    scanf("%i",&k);    printf("\n");    printf("Enter name of input file:\n");    scanf("%24s",file);     fp = fopen(file,"r");    for(ii=0;ii<2*k;ii++){       for(jj=0;jj<2*k;jj++){	    fscanf(fp,"%i",&input_number);	    matrix[ii][jj]=input_number;       }    }    fclose(fp);    /* Make matrix symmetric and entries are zero on main diagonal */    for(ii=0; ii<2*k; ii++){      for(jj=0; jj<2*k; jj++){	if(ii==jj){	  matrix[ii][jj]=0;	}  	else if(jj<ii){	  matrix[ii][jj]=matrix[jj][ii];	}      }    }             /* Randomly weight edges and run Edmonds' algorithm m times */    srand((unsigned)time(NULL));    GAMMA=0;    for(kk=0;kk<m;kk++){        /* initialize */        max_weight_matching=0;	max_weight=0;	min_weight=0;        for(ii=0;ii<2*k;ii++){           for(jj=0;jj<2*k;jj++){  	        weights[ii][jj]=0;	   }	}	/* Randomly weight edges */	for(ii=0;ii<2*k;ii++){	  for(jj=0;jj<2*k;jj++){	    if(matrix[ii][jj]>0){              weights[ii][jj]=random_weight_logistic((float)modified_rand()/MAXIMAL_RAND,matrix[ii][jj]);	      if(weights[ii][jj]>max_weight){		max_weight=weights[ii][jj];	      }	      if(weights[ii][jj]<min_weight){		min_weight=weights[ii][jj];	      }            }  	  }	}	/* assign small weight to non-edges */	min_weight=min_weight-1;	nonedge_weight=min_weight;	for(ii=0;ii<2*k;ii++){	  for(jj=0;jj<2*k;jj++){	    if(matrix[ii][jj]==0){	      weights[ii][jj]=nonedge_weight;	    }	  }	}		/* Compose graph data and apply Edmonds' algorithm */	graph = NewGraph(2*k);	for(mm=0; mm<2*k;mm++){	  NLabel(graph,mm+1)=0;	  Xcoord(graph,mm+1)=0;	  Ycoord(graph,mm+1)=0;	  for(pp=mm+1;pp<2*k;pp++){	    if(matrix[mm][pp]>0){	      /* The external Edmonds' algorithm routines          */  	      /* find a MAXIMAL weight perfect matching assuming nonnegative */	      /* integer weights, so we adjust weights accordingly */	      temp_weight=INTEGER_SCALE_FACTOR*(1-min_weight+weights[mm][pp]);	      AddEdge(graph,mm+1,pp+1,temp_weight);	    }  	  }	}         	Mate = Weighted_Match(graph,1);	for(pp=1;pp<=2*k;pp++){	  if(Mate[pp]==0){	    no_matching=1;	  }	  if(Mate[pp]>pp){	    max_weight_matching = max_weight_matching+weights[pp-1][Mate[pp]-1]; 	    if(weights[pp-1][Mate[pp]-1]==nonedge_weight){	      used_nonedge=1;	    }	  }	}        GAMMA=GAMMA+max_weight_matching;    }    avg_GAMMA=(float)GAMMA/m;    /* Compute the upper and lower estimates */    upper_bound=upper_logistic(avg_GAMMA, k);     lower_bound=lower_logistic(avg_GAMMA, k);    /* Output results */    printf("\n");    printf("\n");    printf("-----------------------------------------------------\n");    if(no_matching==1){      printf("No perfect matching was found: no results returned.\n");    }    else{      printf("Log(X) should be between the following two bounds:\n");      printf("Upper bound:\n");      printf("%f\n",upper_bound);      printf("Lower bound:\n");      printf("%f\n",lower_bound);      printf("GAMMA(X):\n");      printf("%f\n",avg_GAMMA);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品福利一二区| 日韩成人精品在线观看| 亚洲一区视频在线| 九九**精品视频免费播放| 97精品久久久午夜一区二区三区| 91官网在线观看| 欧美激情艳妇裸体舞| 日韩黄色片在线观看| 91在线云播放| 国产精品美女久久久久高潮| 久久99精品一区二区三区| 欧美日韩国产一二三| 国产精品乱码人人做人人爱| 韩国精品免费视频| 欧美一区二区网站| 亚洲国产一区二区在线播放| 99精品视频一区二区三区| 久久久久久毛片| 久久er99热精品一区二区| 欧美精品久久久久久久多人混战 | 日韩av一区二区在线影视| 成人av资源网站| 国产清纯白嫩初高生在线观看91| 免费日韩伦理电影| 制服丝袜中文字幕一区| 婷婷丁香久久五月婷婷| 色久综合一二码| 一区在线中文字幕| 99精品桃花视频在线观看| 国产精品每日更新| av一区二区三区| 国产精品电影一区二区三区| av在线播放成人| 国产精品久久久久久久久动漫| 国产精品资源在线观看| 国产亚洲综合av| 国产成人精品免费| 国产精品初高中害羞小美女文| 成人中文字幕在线| 自拍偷在线精品自拍偷无码专区| av一区二区久久| 一区二区三区国产豹纹内裤在线| 色综合久久中文字幕综合网| 亚洲精品视频在线观看免费| 欧美中文字幕一区| 日韩高清在线电影| 精品国产乱码久久久久久图片| 国产成人免费视频网站高清观看视频 | 久久精品国产久精国产爱| 欧美一区二区三区公司| 精品一区二区精品| 国产精品污污网站在线观看| 色综合久久久网| 日日夜夜一区二区| 久久亚洲一级片| 91丨porny丨中文| 亚洲成a人v欧美综合天堂下载| 337p亚洲精品色噜噜噜| 国产一区二区三区综合| 国产精品久久久久影院老司| 欧美日韩在线播放三区四区| 美女视频黄a大片欧美| 国产欧美综合在线观看第十页| 91在线观看一区二区| 婷婷久久综合九色国产成人| 国产色产综合产在线视频| 欧美日免费三级在线| 国产真实乱偷精品视频免| 亚洲人一二三区| 欧美电影免费提供在线观看| 成人免费视频视频| 亚洲成人激情自拍| 国产婷婷色一区二区三区四区| 色爱区综合激月婷婷| 精品一区二区在线免费观看| 亚洲欧美另类久久久精品2019| 91麻豆精品91久久久久久清纯| 国产成人夜色高潮福利影视| 亚洲国产综合色| 国产精品久久久一区麻豆最新章节| 欧美乱妇20p| 成年人午夜久久久| 精品一区二区三区在线视频| 亚洲网友自拍偷拍| 国产精品国产三级国产普通话三级| 7777女厕盗摄久久久| 成人av在线资源| 久久66热re国产| 午夜伦欧美伦电影理论片| 国产精品动漫网站| 国产偷v国产偷v亚洲高清| 日韩一区二区三区免费看 | 久久91精品国产91久久小草| 亚洲精品日韩一| 欧美激情一区二区三区四区 | 国产亚洲一区二区三区在线观看| 欧美综合在线视频| bt7086福利一区国产| 蜜臀久久99精品久久久久久9 | 久久精品一区二区三区不卡| 欧美亚洲另类激情小说| 99精品欧美一区二区蜜桃免费| 国产精品一二三区| 美女一区二区三区在线观看| 亚洲一区二区精品久久av| 国产精品电影一区二区| 2020国产精品自拍| 日韩精品在线网站| 欧美一区中文字幕| 欧美日本一道本在线视频| 91久久精品午夜一区二区| 97久久人人超碰| 91小视频免费看| 成人国产一区二区三区精品| 成人性视频网站| 国产成人精品一区二| 国产原创一区二区| 国产一区欧美二区| 国产一区二区导航在线播放| 国产精品一二三区在线| 国产麻豆精品在线| 国产精品系列在线观看| 国产精品一区久久久久| 福利一区二区在线观看| 成人永久免费视频| 99久久婷婷国产| 91视频你懂的| 欧美色综合久久| 91精品免费观看| 精品国产一区a| 国产喂奶挤奶一区二区三区| 国产精品久久久久久久裸模| 欧美激情综合网| 亚洲精品欧美专区| 日韩不卡免费视频| 国内欧美视频一区二区| 国产麻豆精品视频| 97se狠狠狠综合亚洲狠狠| 欧美专区日韩专区| 91精品国产欧美日韩| 国产亚洲综合性久久久影院| 中文字幕亚洲综合久久菠萝蜜| 亚洲三级在线看| 偷窥国产亚洲免费视频| 精品无人码麻豆乱码1区2区| 国产成人一区二区精品非洲| 色综合亚洲欧洲| 欧美一区二区三区免费| 中文字幕国产一区二区| 亚洲午夜羞羞片| 激情深爱一区二区| 97久久久精品综合88久久| 欧美电影一区二区| 国产精品欧美极品| 日本视频在线一区| 成人黄色777网| 亚洲人午夜精品天堂一二香蕉| 午夜一区二区三区视频| 国内成人精品2018免费看| 91麻豆国产自产在线观看| 日韩视频在线一区二区| 国产精品久久久久久久浪潮网站 | 色综合天天做天天爱| 欧美成人video| 亚洲图片另类小说| 韩国女主播成人在线| 欧美无砖砖区免费| 中文字幕不卡在线观看| 免费精品99久久国产综合精品| 成人av网址在线| 2024国产精品| 视频一区免费在线观看| 91在线免费看| 久久久久97国产精华液好用吗| 亚洲va在线va天堂| 99精品国产热久久91蜜凸| 日韩一级大片在线| 亚洲一区二区中文在线| www.日韩在线| 久久综合精品国产一区二区三区| 亚洲成人av免费| 色综合视频在线观看| 欧美国产精品一区二区三区| 蜜乳av一区二区| 欧美电影影音先锋| 亚洲国产cao| 91久久人澡人人添人人爽欧美 | 日韩欧美国产成人一区二区| 一个色妞综合视频在线观看| 成人18视频日本| 中文成人综合网| 国产一区二区三区观看| 日韩欧美一区二区久久婷婷| 日韩精品欧美精品| 欧美区一区二区三区| 亚洲h精品动漫在线观看| 欧洲精品视频在线观看| 亚洲午夜免费电影| 欧美亚洲一区二区三区四区| 一区二区欧美精品|