在C++项目中使用METIS工具包提供的API划分公开数据集时总是出现未返回结果直接退出的情况,也有出现返回输入错误的情况,详细情况描述如下:
void metis_(Graph* graph,idx_t* res){
idx_t nVertices = graph->getCurrentNodeSize();//节点个数
idx_t nEdges = 7;//边数
idx_t nWeights = 1;
idx_t nParts = 16;//划分块数
idx_t vsize = 0;
idx_t objval;
real_t tpwgts[4] = {0.24,0.26,0.26,0.24};
real_t ubvec[1]={1.3};
idx_t options[METIS_NOPTIONS];
METIS_SetDefaultOptions(options);
options[METIS_OPTION_CTYPE] = METIS_CTYPE_SHEM;
options[METIS_OPTION_NUMBERING] = 0;
options[METIS_OPTION_NCUTS] = 10;
options[METIS_OPTION_DBGLVL] = 1;
options[METIS_OPTION_SEED] = -1;
graph->to_crs();
int ret = METIS_PartGraphRecursive(//PartGraphRecursive
&nVertices,
&nWeights,
graph->getCrsNodes(),
graph->getCrsEdges(),
NULL,
NULL,
NULL,
&nParts,
NULL,
ubvec,
options,//options
&objval,
res);
1、无返回结果直接退出
在一定情况下以上的调用无法返回结果,就直接退出,ide中显示的信息为空指针,但是不知道是哪里出了问题。
2、产生输入错误信息
在调用API后返回使用手册中的INPUT_ERROR信息,但是使用同样的数据格式的其他图就可以完成,不知道是数据集的问题还是代码的问题
对于以上两个问题恳请大佬指点如何处理,应该按照怎样的思路思考或者调参,或者是METIS工具包对数据集有怎样的限制我没有发现等等,感激不尽!