最小集合覆盖MPI并行程序简化版最小集合覆盖MPI并行程序简化版
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
set MinCover(vector > vs) {
set s;
set sum;
int i;
int num;
int vssize=vs.size();
int total=1 uion;
int key;
for(i=0;i>1)&0x555555...
最小集合覆盖MPI并行程序简化版
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
set MinCover(vector > vs) {
set s;
set sum;
int i;
int num;
int vssize=vs.size();
int total=1< uion;
int key;
for(i=0;i>1)&0x55555555);
num= (num&0x33333333) + ((num>>2)&0x33333333);
num= (num&0x0f0f0f0f) + ((num>>4)&0x0f0f0f0f);
num= (num&0x00ff00ff) + ((num>>8)&0x00ff00ff);
num = (num&0x0000ffff) + ((num>>16)&0x0000ffff);
if(num > > vTest;
vector vA;
{
vector > vs;
{const int
a[]={41,42,43,44,45,56,57,58,59,60};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={51,52,53,54,55,56,57,58,59,60};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={51,52,53,54,55,66,67,68,69,70};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={61,62,63,64,65,66,67,68,69,70};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={61,62,63,64,65,76,77,78,79,80};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={71,72,73,74,75,76,77,78,79,80};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={71,72,73,74,75,86,87,88,89,90};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={81,82,83,84,85,86,88,88,89,90};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={81,82,83,84,85,96,97,98,99,100};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={91,92,93,94,95,96,98,98,99,100};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={91,92,93,94,95,6,7,8,9,10};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={1,2,3,4,5,6,7,8,9,10};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={1,2,3,4,5,16,17,18,19,20};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={11,12,13,14,15,16,17,18,19,20};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={11,12,13,14,15,26,27,28,29,30};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={21,22,23,24,25,26,27,28,29,30};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={21,22,23,24,25,36,37,38,39,40};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={31,32,33,34,35,36,37,38,39,40};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={31,32,33,34,35,46,47,48,49,50};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={41,42,43,44,45,46,47,48,49,50};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
vTest.push_back(vs);
vA.push_back(10);
}
/*{
vector > vs;
{const int
a[]={61,62,63,64,65,66,67,68,69,70};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={61,62,63,64,65,86,87,88,89,90};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={71,72,73,74,75,76,77,78,79,80};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={71,72,73,74,75,96,97,98,99,100};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={81,82,83,84,85,86,88,88,89,90};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={81,82,83,84,85,6,7,8,9,10};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={91,92,93,94,95,96,98,98,99,100};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={91,92,93,94,95,16,17,18,19,20};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={1,2,3,4,5,6,7,8,9,10};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={1,2,3,4,5,26,27,28,29,30};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={11,12,13,14,15,16,17,18,19,20};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={11,12,13,14,15,36,37,38,39,40};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={21,22,23,24,25,26,27,28,29,30};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={21,22,23,24,25,46,47,48,49,50};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={31,32,33,34,35,36,37,38,39,40};vs.push_back(set(a,a+sizeof(a)/sizeof(a[0])));}
{const int
a[]={31,32,33,34,35,56,57,58,59,60};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={41,42,43,44,45,46,47,48,49,50};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={41,42,43,44,45,66,67,68,69,70};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={51,52,53,54,55,56,57,58,59,60};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
{const int
a[]={51,52,53,54,55,76,77,78,79,80};vs.push_back(set(a,a+sizeof(a)/sizeof(a
[0])));}
vTest.push_back(vs);
vA.push_back(10);
}
*/
int rank;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
fstream result;
if(rank==0)
result.open("result.txt",std::ios_base::app);
for(unsigned int i=0;i s=MinCover(vTest[i]);
t+=clock();
if(rank==0)
{
cout<::iterator iter=s.begin();iter!=s.end();++iter)
{
cout<<" "<<*iter;
}
cout<<", execution time is "< v;
set w;
for(vector >::iterator
iter=vTest[i].begin();iter!=vTest[i].end();++iter)
v.insert(iter->begin(),iter->end());
for(set::iterator iter=s.begin();iter!=s.end();++iter)
w.insert(vTest[i][*iter].begin(),vTest[i][*iter].end());
if(w!=v)
{
cout<<"error2!"<
本文档为【最小集合覆盖MPI并行程序简化版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。