Пример #1
0
void rtupdate2(struct rtpkt *rcvdpkt)
{
	int current_node = 2;
	printf("node2: current table\n");
	printdt2(&dt2);
	int i = 0;

	int update_neighbors = 0;
	//update our table.
	int id = rcvdpkt->sourceid;
	int k = 0;
	int is_neighbor = 0;
	for (i = 0; i < 4; i++) {
		if (i == current_node){
			continue;
		}

		if (dt2.costs[i][rcvdpkt->sourceid] > dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid] + rcvdpkt->mincost[i]) {
			update_neighbors = 1;
			/*      printf("i: %i\n", i);
            printf("rcvdpkt->sourceid: %i\n", rcvdpkt->sourceid);
            printf("dt2.costs[i][rcvdpkt->sourceid]: %i\n", dt2.costs[i][rcvdpkt->sourceid]);
            printf("dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid]: %i\n", dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid]);
            printf("mincost[i]: %i\n", rcvdpkt->mincost[i]);*/
			dt2.costs[i][rcvdpkt->sourceid] = dt2.costs[rcvdpkt->sourceid][rcvdpkt->sourceid] + rcvdpkt->mincost[i];
		}
	}

	printf("node2: new table\n");
	printdt2(&dt2);
	printf("node2: updating neighbors\n");
	if (update_neighbors == 1) {
		// update neighboring nodes.
		for (i = 0; i < 4; i++) {
			if (i == current_node) {
				continue;
			}
			struct rtpkt pkt;
			pkt.sourceid = current_node;
			pkt.destid = i;
			pkt.mincost[0] = mincost2(0);
			pkt.mincost[1] = mincost2(1);
			pkt.mincost[2] = mincost2(2);
			pkt.mincost[3] = mincost2(3);
			tolayer2(pkt);
		}
	}
}
Пример #2
0
void mincost2(int city)
{
	int ncity;
	printf("%d --> ",city);
	vis2[city]=1;
	ncity=least2(city);

	if(ncity==9999)
	{
		ncity=1;
		printf("%d ",ncity);
		cost=cost+a[city][ncity];
		return;
	}
	mincost2(ncity);
}
Пример #3
0
void main()
{

//	input();
	
	input();
	printf("The approx path is \n");
	mincost1(1);
	printf("The minimum approx cost incurred is %d\n",cost);
	approxcost=cost;
	cost=0;

	printf("The exact path is\n");
	mincost2(1);
	printf("The minimum exact cost incurred is %d\n",cost);
	exactcost=cost;

	error=((approxcost-exactcost)/exactcost)*100.0;
	printf("TH percentage error in approximation is %f\n",error);
		
}