動的アルゴリズムを使用して、3 台のサーバーのK サーバー問題の最適解を取得しようとしています。アイデアは、すべての可能な順列を生成し、それらをすべてチェックして最適な値を見つけることです。
指数関数的な時間が大きい O の遅い排気検索アルゴリズムであることは理解しています。
ここで最初の 3 つのポイントはサーバーです。また、dist(x,y) 関数は、点 x と y のデカルト距離を計算します。
void optimalSol()
{
int cost[10][10][10][10];
for(int l=3; l<=totalPoints; l++)
{
for(int i=0; i<=l; i++)
{
for(int j=0; j<=l; j++)
{
for(int k=0; k<=l; k++)
{
int current_min=99999;
//cost[i][j][k][l]=0;
if((i!=l) && (j!=l) && (k!=l))
cost[i][j][k][l]=99999;
else
{
for(int m=0; m<=l; m++)
{
if(current_min > (cost[m][j][k][l-1] + dist(m, i)))
{
if(cost[m][j][k][l-1] + dist(m, i)>0)
current_min = cost[m][j][k][l-1] + dist(m, i);
}
else if(current_min > (cost[i][m][k][l-1] + dist(m,j)))
{
if(cost[i][m][k][l-1] + dist(m,j)>0)
current_min = cost[i][m][k][l-1] + dist(m,j);
}
else if(current_min > (cost[i][j][m][l-1] + dist(m,k)))
{
if(cost[i][j][m][l-1] + dist(m,k)>0)
current_min = cost[i][j][m][l-1] + dist(m,k);
}
}
cost[i][j][k][l] = current_min;
}
}
}
}
}
printCostTable(cost);
}