gpt4 book ai didi

algorithm - 如何使用回溯求图着色的时间复杂度?

转载 作者:行者123 更新时间:2023-12-03 07:47:57 27 4
gpt4 key购买 nike

我必须使用回溯找出图着色问题的时间复杂度。我发现它是 O(n*m^n) 的地方,其中 n=无顶点,m=颜色数。

假设我的代码如下,如何找到时间复杂度?

bool isSafe (int v, bool graph[V][V], int color[], int c)
{
for (int i = 0; i < V; i++)
if (graph[v][i] && c == color[i])
return false;
return true;
}

bool graphColoringUtil(bool graph[V][V], int m, int color[], int v)
{
if (v == V)
return true;

for (int c = 1; c <= m; c++)
{
if (isSafe(v, graph, color, c))
{
color[v] = c;

if (graphColoringUtil (graph, m, color, v+1) == true)
return true;

color[v] = 0;
}
}

return false;
}
bool graphColoring(bool graph[V][V], int m)
{
int *color = new int[V];
for (int i = 0; i < V; i++)
color[i] = 0;

if (graphColoringUtil(graph, m, color, 0) == false)
{
printf("Solution does not exist\n");
return false;
}

printSolution(color);
return true;
}
void printSolution(int color[])
{
printf("Solution Exists:"
" Following are the assigned colors \n");
for (int i = 0; i < V; i++)
printf(" %d ", color[i]);
printf("\n");
}

最佳答案

graphutil 方法本身会执行 n 次。它在 c 循环中,并且 c 一直到 m 。现在由于递归(即 m^n),c 循环进行了 n 次,并且递归进行了 n 次,所以总共将是 O(nm^n )

关于algorithm - 如何使用回溯求图着色的时间复杂度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49887348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com