使用floyd-warshall算法求解cube0交换函数和shuffle混洗函数构成混洗交换网,计算网络直径,两节点最短路径。

该博客探讨了如何利用floyd-warshall算法在Cube0和shuffle交换操作的限制下,计算混合交换网络的直径以及两个特定处理机之间的最短路径。在案例中,从5号处理机到7号处理机的最短路径被详细分析,展示了不同步骤下的网络构造和节点距离矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


计算机系统结构教程(第二版)

习题9

9.9

(2) 用Cube0和构成混洗交换网(每步只能使用Cube0 和shuffle 一次),网络直径是多少?

从5号处理机发送数据到7号处理机,最短路径要经过几步?请列出经过的处理机编号。

floyd-warshall算法求最短路径

	for (k = 0; k < 32; k++)/*allow all processor to be the trans point*/
		for (i = 0; i < 32; i++)
			for(j = 0; j < 32; j++){
				Dikkj = distance[i][k]+distance[k][j];
				if (Dikkj < distance[i][j]){
					distance[i][j] = Dikkj;
					trace[i][j] = k;
				}
			}

路径输出

int	printTrace(int i,int j){
	if(trace[i][j] != INFINITE){
		printTrace(i,trace[i][j]);
		printf("-> %d",trace[i][j]);
		printTrace(trace[i][j],j);

	}
	return 0;
}

理解:每步只能使用cube0 一次或shuffle 一次

构造交换网

	for (i = 0; i < 32; i++){
		j = i ^ 0x0001;
		distance[i][j] = 1;
		j = ( (i >> (5 - 1)) |(i << 1)) % 32;
		distance[i][j] = 1;
		distance[i][i] = 0;
	}

节点距离矩阵及路径

$ ./interConnNetwork
distance:
0,1,2,3,3,4,4,5,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,6,7,7,8,7,8,8,9,
1,0,1,2,2,3,3,4,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8,
5,4,0,1,1,2,2,3,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
6,5,1,0,2,3,1,2,3,4,4,5,2,3,3,4,4,4,5,5,5,5,6,6,3,4,4,5,4,5,5,6,
4,3,4,4,0,1,5,5,1,2,2,3,6,5,6,6,2,3,3,4,3,4,4,5,7,8,6,7,7,8,7,8,
5,4,5,5,1,0,6,6,2,3,1,2,5,4,6,5,3,4,4,5,2,3,3,4,6,7,5,6,7,7,6,7,
6,5,5,4,6,6,0,1,7,6,6,5,1,2,2,3,4,3,5,4,5,4,6,5,2,3,3,4,3,4,4,5,
7,6,6,5,7,6,1,0,8,7,7,6,2,3,1,2,5,4,5,4,6,5,6,5,3,3,4,4,2,3,3,4,
3,2,3,3,4,3,4,4,0,1,4,5,5,6,5,6,1,2,2,3,5,6,6,7,6,7,7,8,6,7,7,8,
4,3,4,4,3,2,4,3,1,0,3,4,5,6,4,5,2,3,1,2,4,5,5,6,6,6,7,7,5,6,6,7,
6,5,6,6,5,4,6,5,3,2,0,1,4,3,5,4,4,5,3,4,1,2,2,3,5,6,4,5,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值