У меня проблемы с поиском сложности времени для возврата. Я пытался найти временную сложность гамильтонова цикла, так как она используется в задании Backtracking - Traveling Salesman, и вот что я нашел:
Я видел на канале YouTube Абдул Бари, что сложность времени для Backtracking - Hamiltonian Cycle равна n ^ n, а ответ на один из вопросов здесь в stackoverflow: n!
n ^ n Ссылка: https://www.youtube.com/watch?v=dQr4wZCiJJ4&t=389s
n! Ссылка: Как вычислить временную сложность алгоритма обратного отслеживания?
Я действительно не знаю, как вычислить сложность времени, вы, ребята, можете помочь мне определить сложность времени по этому ( Это код возврата - код проблемы коммивояжера):
Ссылка: https://www.geeksforgeeks.org/travelling-salesman-problem-implementation-using-backtracking/
public class GFG{
// Function to find the minimum weight
// Hamiltonian Cycle
static int tsp(int[][] graph, boolean[] v,
int currPos, int n,
int count, int cost, int ans)
{
// If last node is reached and it has a link
// to the starting node i.e the source then
// keep the minimum value out of the total cost
// of traversal and "ans"
// Finally return to check for more possible values
if (count == n && graph[currPos][0] > 0)
{
ans = Math.min(ans, cost + graph[currPos][0]);
return ans;
}
// BACKTRACKING STEP
// Loop to traverse the adjacency list
// of currPos node and increasing the count
// by 1 and cost by graph[currPos,i] value
for (int i = 0; i < n; i++)
{
if (v[i] == false && graph[currPos][i] > 0)
{
// Mark as visited
v[i] = true;
ans = tsp(graph, v, i, n, count + 1,
cost + graph[currPos][i], ans);
// Mark ith node as unvisited
v[i] = false;
}
}
return ans;
}
// Driver code
public static void main(String[] args)
{
// n is the number of nodes i.e. V
int n = 4;
int[][] graph = {{0, 10, 15, 20},
{10, 0, 35, 25},
{15, 35, 0, 30},
{20, 25, 30, 0}};
// Boolean array to check if a node
// has been visited or not
boolean[] v = new boolean[n];
// Mark 0th node as visited
v[0] = true;
int ans = Integer.MAX_VALUE;
// Find the minimum weight Hamiltonian Cycle
ans = tsp(graph, v, 0, n, 1, 0, ans);
// ans is the minimum weight Hamiltonian Cycle
System.out.println(ans);
}
}
// This code is contributed by Rajput-Ji