Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_lab_TA-2004-ukr.doc
Скачиваний:
2
Добавлен:
17.11.2019
Размер:
8.76 Mб
Скачать

6 Розв’язання задач у просторі станів

6.1 Мета роботи

Одержати практичні навички складання і розв’язання задач у просторі станів.

6.2 Підготовка до роботи

Під час підготовки до роботи студенти повинні освоїти основні підходи до розв’язання задач з неповною інформацією, представлення задач у просторі станів, методи пошуку в просторі станів.

Алгоритми пошуку з поверненнями.

Алгоритми з поверненням відносяться до області програмування орієнтованого на розв’язання задач штучного інтелекту. Алгоритми цього класу задач шукають розв’язання не за заданими правилами обчислень, а шляхом проб і помилок. Зазвичай процес проб і помилок розбивається на дві задачі. Ці задачі найбільш природно виражаються в термінах рекурсії і вимагають дослідження кінцевого числа підзадач.

Один з підходів реалізації алгоритмів з поверненням.

Procedure Tttt; (*спроба*)

Begin

Repeat

If підходить then

Його запис;

If розв’язання неповне then

Tttt(i+1);

If невдача then

Стирання

End;

End;

End;

Until удача OR немає кандидатів;

End;

// програма пошуку кліток на шахівниці, з яких кінь обійде всю дошку,

// не побувавши двічі в жодній клітці

const int dx[8]={2,1,-1,-2,-2,-1, 1, 2};

const int dy[8]={1,2,2, 1,-1,-2,-2,-1};

const int nx=15; int h[15][15];

void move (int i,int x, int y,bool &q);

void ShowDesk(int dk[ ][nx],int nx);

int n;

void main(void)

{

bool nq; char ch;

cout<<"Введіть розмір дошки:"<<'\n';

cin>>n;

……

h[i][j]=1; // ініціалізація першого ходу

nq=false;

move(2,i,j,nq);

………

}

void move (int ii,int x, int y,bool &q)

{int k,u,v;

bool q1;

k=0;

if(q==true) return;

do

{if (k<8) k++;

else k=0;

q1=false;

u=x+dx[k];

v=y+dy[k];

if(u>=0&&u<n&&v>=0&&v<n&&h[u][v]==0)

{h[u][v]=ii;

if(ii<n*n){ move(ii+1,u,v,q1);}

else{q=q1=true;return;}

if(q1==true) {q=q1;return;}

h[u][v]=0;

} }

while(k<8);

q=q1;

}//move

Введіть розмір дошки: 5

Розв’язання:0,0

Показати дошку(Y/N)?y

1 20 15 8 3

14 9 2 21 16

19 22 13 4 7

10 5 24 17 12

23 18 11 6 25

Розв’язання:3,1

Показати дошку(Y/N)?y

25 16 11 4 23

10 5 24 17 12

15 18 9 22 3

6 1 20 13 8

19 14 7 2 21

Продовжити(Y/N)?y

Розв’язання:4,0

Показати дошку(Y/N)?y

25 22 17 10 5

16 11 6 23 18

21 24 15 4 9

12 7 2 19 14

1 20 13 8

Розв’язання:4,4

Показати дошку(Y/N)?y

25 20 9 14 3

8 15 4 19 10

21 24 13 2 5

16 7 22 11 18

23 12 17 6 1

Всі варіанти пройдені

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]