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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? routbf.c

?? 一個(gè)linux下的各種組播路由算法編程
?? C
字號(hào):
double TheNodeList::routerBF(Node *source, int addr,  double &d, 
			     double &maxd, double &mind, 
			     double &h, double &nodes) {

   //The complete Bellman-Ford least-cost routing algorithm

   //First delete any previous routing for the this group and source set.
   removeTree(source, addr);

   //Locate the source to get the peak rate
   SourceList *ss = source->sourceList();
   int found = False;
   while ((ss != NULL) && (found == False)) {
       if ((ss->source()->type() != Background) &&
           (ss->source()->address() == addr)) found = True;
       else ss = ss->next();
   };
   double pk = ss->source()->peak();
   double avg = ss->source()->average();

   //Locate the MC group that contains the destination set
   MCGroup *group = groupsHd;
   while ((group !=  NULL) && (group->address() != addr))   
      group = group->next();
   
   if (group != NULL)  {

      if ((group->count() == 1) && 
          (group->headm()->nodePtr()->name() == source->name())) {
            source->addRoutingEntry(addr, source);
	    h = d = maxd = mind = 0;
	    nodes = 1;
            return(0);
      };

     double *cost;
     cost = new double[num];
     int *hops;
     hops = new int[num];
     int *from;
     from = new int[num];
     int i, j, k;
     for (i = 0; i < num; i++) {
       *(cost + i) = DBL_MAX;
       *(from + i) = INT_MAX;
     };
     *(cost + source->name()) = 0;
     
     double *c_matrix;
     c_matrix = new double[num*num];
     for (i = 0; i < num; i++) {
       for (j = 0; j < num; j++) {
	 *(c_matrix + (i * num) + j) = DBL_MAX;
       };
     };
     
     /*The c_matrix contains link costs*/
     NodeListEntry *tmp = nodeListHd;
     while (tmp != NULL) {
       i = tmp->nodePtr()->name();
       AdjacencyListEntry *adj = tmp->nodePtr()->adjacentNodes();
       while (adj != NULL) {
	 j = adj->nodePtr()->name();
	 if ((fn == PEAK) && (adj->peak() <= 
	     ((adj->linkCapacity() * ADMITRATIO) - pk))) 
	                                            /*in order to eliminate
						      links saturated links*/
	   *(c_matrix + (i * num) + j) = adj->peak();
	 else if ((fn == AVERAGE) && (adj->average() <= 
                  ((adj->linkCapacity() * ADMITRATIO) - avg)))
 	                                            /*in order to eliminate
						      links saturated links*/
	   *(c_matrix + (i * num) + j) = adj->average();
	 adj = adj->next();
       };
       tmp = tmp->next();
     };

     int changed;
     do {
       changed = False;
       for (i = 0; i < num; i++) {
	 for (j = 0; j < num; j++) {
	   switch (obj) {
	   case PLAIN:
	     if ((*(cost + j) + *(c_matrix + (j * num) + i)) < (*(cost + i))) {
	       changed = True;
	       *(cost + i) = *(cost + j) + *(c_matrix + (j * num) + i);
printf("cost to %d = %.3e\n", i, *(cost +i));
	       *(from + i) = j;
	     };
	     break;
	   case MULT:
	     if ((*(cost + j) + 
		  *(c_matrix + (j * num) + i) * (*(hops + j) + 1))
		 < (*(cost + i))) {
	       changed = True;
	       *(cost + i) = *(cost + j) + 
		 *(c_matrix + (j * num) + i) * (*(hops + j) + 1);
	       *(hops +i) = *(hops +j) + 1;
	       *(from + i) = j;
	     };
	     break;
	   case ADD:
	     if ((*(cost + j) + *(c_matrix + (j * num) + i) +
		  *(hops + j) * ALPHA) < (*(cost + i))) {
	       changed = True;
	       *(cost + i) = *(cost + j) + *(c_matrix + (j * num) + i) +
		 *(hops + j) * ALPHA;
	       *(hops + i) = *(hops + j) + 1;
	       *(from + i) = j;
	     };
	     break;
	   };
	 };
       };
     } while (changed == True);
     delete [] cost;
     delete [] c_matrix;
     delete [] hops;

     //The source is the first member in the tree
     NodeListEntry *tree, *tmp1;
     tree = new NodeListEntry;
     tree->nodePtr(source);
     source->addRoutingEntry(addr, source);

     //Check if saturated links prevent the creation of the tree
     tmp1 = group->headm();
     while (tmp1 != NULL) {
       if ((*(from + tmp1->nodePtr()->name()) == INT_MAX) &&
	   (tmp1->nodePtr()->name() != source->name())) {
	 delete tree;
	 delete [] from;
	 return(LINKSAT);
       };
       tmp1 = tmp1->next();
     };

     //I will create a broadcast tree and prune it later
     for (i = 0; i < num; i++) {
       if ((i != source->name()) && (*(from + i) != INT_MAX)) {
	 Node *nd = nodeOf(i);
	 //Add the node to the tree
	 tmp1 = new NodeListEntry;
	 tmp1->nodePtr(nd);
	 tmp1->next(tree);
	 tree = tmp1;

	 Node *nd2 = nodeOf(*(from + i));
	 AdjacencyListEntry *adj = nd2->adjacentNodes();
	 while (adj->nodePtr() != nd) adj = adj->next();
	 //update the link cost
         double wght = adj->peak() + pk; //link costs are proportional
                                                 //to the peak rates of the 
                                                 //traffic crossing these
                                                 //links.
	 adj->peak(wght);
	 double average = adj->average() + avg;
	 adj->average(average);

	 //and add it to the routing table of the best connection node
	 nd2->addChild(addr, source, nd);

	 //create a new routing table entry for that node
	 nd->addRoutingEntry(addr, source);
       };
     };
     delete [] from;

     //prune nonmember leaves
     prune(group, &tree, source, source, addr, NULL, pk, avg);

     maxd = 0;
     mind = DBL_MAX;
     int dbViolation = False;
     //calculate the expected end-to-end delay and the average number of hops
     //and the cost per destination
     NodeListEntry *tmp2 = group->headm();
     double avgDelay = 0;
     double avgHops = 0;
     while (tmp2 != NULL) {
       int gotit = False;
       int hops = 0;
       double delay = 0;
       if (source != tmp2->nodePtr()) 
         results(source, addr, source, tmp2->nodePtr(), delay, hops, gotit);   
       if (delay >= DELAYBOUND) dbViolation = True;
       if (delay > maxd) maxd = delay;
       if (delay < mind) mind = delay;
       avgDelay += delay;
       avgHops += hops;
       tmp2 = tmp2->next();
     };
     avgDelay /= group->count();
     avgHops /= group->count();
     d = avgDelay;
     h = avgHops;

     //Calculate the total cost of the tree and delete the temp. tree
     double totalCost = 0;
     nodes = 0;
     tmp1 = tree;
     while (tmp1 != NULL) {
       nodes++;
       RoutingTableEntry *rout = tmp1->nodePtr()->routingTable();
       int found = False;
       while ((rout != NULL) && (found == False)) {
	 if ((rout->address() == addr) && (rout->source() == source)) 
	   found = True;
	 else rout = rout->next();
       };
       NodeListEntry *tmp = rout->children();
       while (tmp != NULL) {
	 AdjacencyListEntry *adj = tmp1->nodePtr()->adjacentNodes();
	 int found2 = False;
	 while ((adj != NULL) && (found2 == False)) {
	   if (adj->nodePtr() == tmp->nodePtr()) found2 = True;
	   else adj = adj->next();
	 };
	 if (adj != NULL) {
	   if (fn == PEAK) totalCost += (adj->peak() - pk);
	   else totalCost += (adj->average() - avg);
	 };
	 tmp = tmp->next();
       };
       tmp2 = tmp1->next();
       delete tmp1;
       tmp1 = tmp2;
     };
     if ((DBV == True) && (dbViolation == True)) {
       removeTree(source, addr);
       return(DBVIOL);
     }
     else return(totalCost);
   }
   else return(NOGROUP);
};



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区福利| 日韩精品一区二区三区在线| 成人午夜看片网址| 国精产品一区一区三区mba桃花| 丝瓜av网站精品一区二区| 亚洲电影一区二区| 亚洲永久免费av| 亚洲一区二区视频在线| 亚洲r级在线视频| 午夜精品一区二区三区三上悠亚| 一区二区欧美在线观看| 亚洲成人资源在线| 男女男精品视频| 国产真实乱子伦精品视频| 国内精品久久久久影院薰衣草 | 欧美成人官网二区| 欧美日韩日日骚| 91精品国产综合久久香蕉的特点| 欧美一级欧美三级在线观看 | 亚洲视频小说图片| 一区二区成人在线视频| 五月婷婷久久丁香| 久久激五月天综合精品| 国产精品亚洲视频| 99国产精品久久久久| 欧美日韩国产天堂| 精品国产乱码久久久久久浪潮| 久久综合久久鬼色中文字| 国产日韩精品一区二区三区| 国产精品三级av| 亚洲高清久久久| 韩国一区二区三区| 色综合色综合色综合色综合色综合 | 韩国av一区二区| 成人av综合在线| 欧美天天综合网| 精品嫩草影院久久| 国产女人18水真多18精品一级做| 亚洲三级久久久| 日韩va欧美va亚洲va久久| 国产真实乱偷精品视频免| 色综合天天综合给合国产| 欧美精品tushy高清| 国产亚洲欧美一级| 亚洲夂夂婷婷色拍ww47| 国产乱码精品一品二品| 91黄视频在线| 欧美精品一区二区三区高清aⅴ | 午夜在线电影亚洲一区| 国产精品一区二区男女羞羞无遮挡| 99久久国产免费看| 日韩午夜激情av| 综合在线观看色| 美女免费视频一区| 91免费看片在线观看| 日韩欧美国产一区二区在线播放 | 日本va欧美va欧美va精品| 成人av免费观看| 538在线一区二区精品国产| 国产精品国产三级国产专播品爱网 | 欧美另类一区二区三区| 国产欧美日韩激情| 麻豆精品视频在线观看| 在线中文字幕一区| 国产视频一区在线播放| 爽爽淫人综合网网站| 懂色一区二区三区免费观看| 91精品一区二区三区久久久久久| 欧美极品少妇xxxxⅹ高跟鞋 | 久久精品国产99久久6| 日韩不卡一二三区| 成人av免费在线播放| 欧美一级高清片| 亚洲国产美女搞黄色| 高清成人免费视频| 精品盗摄一区二区三区| 五月综合激情网| 91豆麻精品91久久久久久| 欧美激情在线一区二区| 麻豆成人久久精品二区三区红| 欧美在线|欧美| 中文字幕亚洲视频| 国产成人av电影在线| 久久色.com| 久久成人久久鬼色| 91精品视频网| 亚洲福利一区二区| 欧美亚洲禁片免费| 亚洲黄色小视频| 97se亚洲国产综合自在线| 国产视频亚洲色图| 国产福利一区二区三区视频在线 | 国产盗摄一区二区| 久久综合九色综合97婷婷| 日韩高清在线一区| 欧美精品久久久久久久多人混战 | 亚洲天堂久久久久久久| 国产激情91久久精品导航| wwwwxxxxx欧美| 激情欧美一区二区三区在线观看| 日韩色在线观看| 美国欧美日韩国产在线播放| 日韩免费电影网站| 极品瑜伽女神91| 久久久噜噜噜久久人人看 | 奇米综合一区二区三区精品视频| 欧美日韩电影在线播放| 午夜视频一区在线观看| 555www色欧美视频| 日本不卡视频在线| 26uuu久久综合| 国产在线精品一区二区三区不卡| 亚洲精品在线网站| 国产毛片一区二区| 国产日韩欧美综合在线| 国产成人亚洲综合a∨婷婷| 国产欧美日韩另类一区| av成人老司机| 一区二区三区在线高清| 欧美情侣在线播放| 久久se这里有精品| 国产精品天干天干在观线| av电影在线观看一区| 亚洲视频一区二区免费在线观看| 91成人国产精品| 青草国产精品久久久久久| 久久久99精品久久| 99久久精品国产麻豆演员表| 一区二区三区视频在线观看| 正在播放一区二区| 国产精品亚洲视频| 亚洲另类在线视频| 欧美一区二区视频在线观看2022| 激情都市一区二区| 日韩理论片网站| 欧美一区二区视频免费观看| 国产成人午夜精品5599| 亚洲三级在线观看| 日韩你懂的在线播放| 99视频一区二区三区| 日韩精品欧美成人高清一区二区| 26uuu精品一区二区| 色婷婷综合久久久| 美日韩一区二区| **性色生活片久久毛片| 制服丝袜亚洲播放| www.亚洲色图.com| 日韩电影在线观看网站| 中文在线资源观看网站视频免费不卡| 色88888久久久久久影院野外| 麻豆精品视频在线观看视频| 亚洲视频一二区| 久久在线免费观看| 欧美综合色免费| 国产999精品久久久久久绿帽| 亚洲三级电影网站| 欧美精品一区二区三区很污很色的 | 亚洲日韩欧美一区二区在线| 欧美一级日韩不卡播放免费| 99久久久国产精品免费蜜臀| 美腿丝袜在线亚洲一区| 亚洲免费电影在线| 久久久久久夜精品精品免费| 在线观看一区二区视频| 国产裸体歌舞团一区二区| 一区二区免费视频| 国产午夜久久久久| 欧美一区日韩一区| 91搞黄在线观看| 国产成人精品免费一区二区| 丝袜美腿亚洲一区| 亚洲精品久久7777| 欧美极品少妇xxxxⅹ高跟鞋| 日韩视频中午一区| 欧美日本韩国一区二区三区视频| 不卡av在线网| 国产成人午夜电影网| 麻豆久久久久久久| 视频在线观看一区| 亚洲精品ww久久久久久p站| 久久精品综合网| 日韩欧美一级在线播放| 精品视频一区三区九区| 99精品欧美一区二区蜜桃免费| 精品亚洲国内自在自线福利| 亚洲成人你懂的| 亚洲一区二区在线免费观看视频| 国产色一区二区| 久久人人爽人人爽| 精品日韩欧美在线| 日韩亚洲欧美一区| 欧美男女性生活在线直播观看| 91一区二区三区在线播放| 成人av网站大全| 成人av在线影院| 粉嫩av亚洲一区二区图片| 国产黄色成人av| 丁香啪啪综合成人亚洲小说| 国产高清精品在线| 成人午夜免费视频|