Это алгоритм, который я написал, чтобы найти хроматическое число графа.У меня проблемы с выяснением временной сложности этого алгоритма.Поскольку у меня есть 3 вложенных цикла, я считаю, что временная сложность составляет не менее n³.Поскольку я также перебираю края каждой отдельной вершины, будет ли это что-то около O (n2ⁿ)?Также будет ли этот алгоритм правильным?
int ChromaticNumber()
{
for (int i = 0; i < Vertices.size(); ++i)
{
++Vertices[i].Color;
bool Ok = false;
while (!Ok)
{
Ok = true;
for (int j = 0; j < Vertices[i].Edges.size(); ++j)
{
int AdjacentVertex = Vertices[i].Edges[j];
if (Vertices[i].Color == Vertices[AdjacentVertex].Color)
{
++Vertices[i].Color;
Ok = false;
}
}
}
}
int MaxColor = 0;
for (int i = 0; i < Vertices.size(); ++i)
{
if (Vertices[i].Color > MaxColor)
MaxColor = Vertices[i].Color;
}
return MaxColor;
}