#include #include
美文网首页
graphPartition.cpp

graphPartition.cpp

作者: Jaling | 来源:发表于2020-08-11 15:56 被阅读0次

    #include "metis.h"

    #include <vector>

    #include <iostream>

    #include <fstream>

    #include <string>

    #include <sstream>

    using namespace std;

    vector<idx_t> func(vector<idx_t> xadj, vector<idx_t> adjncy, vector<idx_t> vwgt) {

    idx_t nVertices = xadj.size() - 1; // 节点数

    idx_t nEdges = adjncy.size() / 2;    // 边数

    idx_t nWeights = 1;

    idx_t nParts = 2;    // 子图个数

    idx_t objval;

    std::vector<idx_t> part(nVertices, 0);

    int ret = METIS_PartGraphKway(&nVertices, &nWeights, xadj.data(), adjncy.data(),

    vwgt.data(), NULL, NULL, &nParts, NULL,

    NULL, NULL, &objval, part.data());

    std::cout << ret << std::endl;

    for (unsigned part_i = 0; part_i < part.size(); part_i++) {

    std::cout << part_i << " " << part[part_i] << std::endl;

    }

    return part;

    }

    int main() {

    ifstream ingraph("文件路径/graph.txt");

    if (!ingraph) {

    cout << "打开文件失败!" << endl;

    exit(1);//失败退回操作系统   

    }

    int vexnum, edgenum;

    string line;

    getline(ingraph, line);

    istringstream tmp(line);

    tmp >> vexnum >> edgenum;

    vector<idx_t> xadj(0);

    vector<idx_t> adjncy(0); //点的id从0开始

    vector<idx_t> vwgt(0);

    idx_t a, w;

    for (int i = 0; i < vexnum; i++) {

    xadj.push_back(adjncy.size());

    getline(ingraph, line);

    istringstream tmp(line);

    while (tmp >> a >> w) {

    adjncy.push_back(a);

    vwgt.push_back(w);

    }

    }

    xadj.push_back(adjncy.size());

    ingraph.close();

    vector<idx_t> part = func(xadj, adjncy, vwgt);

    ofstream outpartition("文件路径/partition.txt");

    if (!outpartition) {

    cout << "打开文件失败!" << endl;

    exit(1);

    }

    for (int i = 0; i < part.size(); i++) {

    outpartition << i << " " << part[i] << endl;

    }

    outpartition.close();

    }

    相关文章

      网友评论

          本文标题:graphPartition.cpp

          本文链接:https://www.haomeiwen.com/subject/sapsrktx.html