Как оптимизировать алгоритм тура Найта?
Я кодируюKnight»тур Алгоритм в C ++ с использованиемОткат метод. Но это кажется слишком медленным или застрявшим в бесконечном цикле для n> 7 (больше чем 7 на 7 шахматной доске).
Вопрос в том, чтоСложность времени для этого алгоритма и как я могу его оптимизировать ?!
Рыцарь'Задача тура может быть сформулирована следующим образом:
Дана шахматная доска с n × n квадратов, найдите путь для рыцаря, который посещает каждый квадрат ровно один раз.
Вот мой код:
#include
#include
using namespace std;
int counter = 1;
class horse
{
public:
horse(int);
bool backtrack(int, int);
void print();
private:
int size;
int arr[8][8];
void mark(int &);
void unmark(int &);
bool unvisited(int &);
};
horse::horse(int s)
{
int i, j;
size = s;
for(i = 0; i