如何创建平面图? (基于图的方法)

时间:2019-05-22 10:59:48

标签: c++ graph

使用基于图的方法创建平面图是我的功课。

基于图的方法是使部门之间的权重最大化。

图方法的步骤

  • 第1步:选择权重最大的部门对
  • 第2步:根据权重之和选择第三个部门
    选择的两个部门
  • 第3步:通过评估权重之和选择下一个未选择的部门,然后将其放置在图形的正面
  • 第4步:对step3进行计数,直到所有部门都被选中为止

我已经完成了步骤3。

这是创建平面图的关系图。 enter image description here

我的代码:

for (int i = 0; i <= in_step4_1.size() - 1; i++)
{
    for (int j = 0; j <= in_step4_1.size() - 1; j++)
    {
        for (int k = 0; k <= in_step4_1.size() - 1; k++)
        {
            if ((in_step4_1[i] < in_step4_1[j]) && (in_step4_1[j] < in_step4_1[k]) && (in_step4_1[j] < in_step4_1[k]))
            {
                cout << "(" << in_step4_1[i] << "," << in_step4_1[j] << "," << in_step4_1[k] << ")";
                in_step4[count].push_back(in_step4_1[i]);
                in_step4[count].push_back(in_step4_1[j]);
                in_step4[count].push_back(in_step4_1[k]);

                if (++count % 4 == 0) cout << endl;

            }
        }
    }
}
n=count;
cout << endl;
}

我只想找到可能的组合,而不是所有组合。

1 个答案:

答案 0 :(得分:0)

  

步骤1:选择权重最大的部门对

使用std::sort之类的排序算法简单地对容器进行排序:

std::sort(std::begin(in_step4_1), std::end(in_step4_1));
// largest weight is in_step4_1[in_step4_1.size() - 1]