最短路径--Floyd--MPI Maelstrom

最短路径–Floyd–MPI Maelstrom

Description
BIT公司最近推出了一台新的超级计算机,一台32处理器的阿波罗奥德赛分布式共享内存机,带有分层通信子系统。瓦伦丁·麦基的研究顾问杰克·斯威格特(JackSwigert)要求她对新系统进行基准测试。
瓦伦丁对斯威格特说:“由于阿波罗是一台分布式共享内存机器,内存访问和通信时间并不一致。”共享相同内存子系统的处理器之间的通信速度较快,但不在同一子系统上的处理器之间的通信速度较慢。阿波罗号和我们实验室的机器之间的通讯速度还比较慢。
“阿波罗的信息传递接口(MPI)端口工作得如何?”斯威格问。
“不太好,”瓦朗蒂娜回答。``要从一个处理器向所有其他n-1处理器广播消息,他们只需执行n-1发送的序列。它真正地序列化了一些事情并扼杀了表演。
“你能做些什么来解决这个问题吗?”
“是的,”瓦朗蒂娜笑着说。“”有。一旦第一个处理器将消息发送给另一个处理器,这两个处理器就可以同时向另外两个主机发送消息。然后将有四个主机可以发送,以此类推。
“啊,这样你就可以像二叉树那样做广播了!”
“不是真正的二叉树–我们的网络有一些特殊的特性,我们应该加以利用。我们拥有的接口卡允许每个处理器同时向连接到它的任意数量的其他处理器发送消息。然而,这些信息不一定同时到达目的地–这涉及到通信费用。一般来说,我们需要考虑到网络拓扑中每个链路的通信成本,并相应地进行规划,以尽量减少广播所需的总时间。

Input
输入将描述连接n个处理器的网络的拓扑结构。输入的第一行将是n,处理器数,例如1<=n<=100。
输入的其余部分定义了一个邻接矩阵。A.邻接矩阵是正方形的,大小为n×n。它的每个条目要么是整数,要么是字符x。A(i,j)的值表示直接从节点I发送消息到节点j的开销。A(i,j)的x值表示消息不能从节点I直接发送到节点j。
请注意,对于一个节点向自己发送消息不需要网络通信,因此A(i,i)=0表示1<=i<=n。此外,您可以假设网络是无向的(消息可以以相同的开销向任意方向移动),这样A(i,j)=A(j,i)。因此,只有A的(严格的)下三角部分上的条目将被提供。
您的程序的输入将是A的下三角段,即第二行输入将包含一个条目,A(2,1)。下一行将包含两个条目,A(3,1)和A(3,2),等等。

Output
您的程序应该输出从第一个处理器向所有其他处理器广播消息所需的最小通信时间。

Sample Input
5
50
30 5
100 20 50
10 x x 10
Sample Output
35

此题求处理器之间的最短传递时间可以使用Floyd,然后取最短时间的最大值

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <string>
#include <stack>
#include <queue>
#include <map>

using namespace std;
const int inf=0x3f3f3f3f;
const int MAX=105;
int m[MAX][MAX];
string s;//不知输入是否为数字或字母 
int main()
{
	int n;
	cin>>n;
	memset(m,inf,sizeof(m));
	for(int i=1;i<=n;i++)
		m[i][i]=0;
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<i;j++)
		{
            cin>>s;
            if(s[0]=='x') m[i][j]=m[j][i]=inf;
			else
			{
    			int len=s.size();
				int anw=0;
    			for(int k=0;k<len;k++)
					anw=anw*10+s[k]-'0';
				m[i][j]=m[j][i]=anw;				
			}
		}
	}
	for(int k=1;k<=n;k++)
    	for(int i=1;i<=n;i++)
   			for(int j=1;j<=n;j++)
    			if(m[i][j]>m[i][k]+m[k][j])
        			m[i][j]=m[i][k]+m[k][j];
    int num=0;
    for(int i=2;i<=n;i++)
        num=max(num,m[1][i]);
    cout<<num<<endl;
	return 0;
}
发布了19 篇原创文章 · 获赞 0 · 访问量 207

猜你喜欢

转载自blog.csdn.net/qq_45282116/article/details/104448242