
- •Л.І. Маркова
- •1 Розв’язання задач з використанням методів пошуку
- •1.1 Мета роботи
- •1.2 Вказівки з підготовки до роботи
- •Лінійний пошук
- •З метою поліпшення можна прийти до питання, а чи потрібна перевірка
- •1.3 Варіанти індивідуальних завдань до лабораторної роботи 1
- •2.3 Варіанти індивідуальних завдань до лабораторної роботи 2
- •2.4 Контрольні запитання та завдання
- •3 Розв’язання задач з використанням алгоритмів сортування
- •3.1 Мета роботи
- •3.2 Підготовка до роботи
- •Бульбашкове сортування
- •4.3 Варіанти індивідуальних завдань до лабораторної роботи 4
- •6 Розв’язання задач у просторі станів
- •6.3 Варіанти індивідуальних завдань до лабораторної роботи 6
- •Початок // Begin
- •7.3 Варіанти індивідуальних завдань до лабораторної роботи 7
- •7.4 Контрольні запитання та завдання
- •"Теорія алгоритмів"
- •Віддруковано в учбово-виробничому видавничо-поліграфічному центрі хнуре
- •61166, , Харків, просп. Леніна, 14.
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 |
Всі варіанти пройдені
|
|