You are on page 1of 16

Lekcija3.

Пребарување 31

ЛЕКЦИЈА 3. ПРЕБАРУВАЊЕ

Пребарувањето има клучна улога во многу подрачја од вештачката интелигенција.


Алгоритмите за пребарување претставуваат р`бет на скоро секој приод кон
проблемот на систематско истражување можности.

Најнапред треба да се направи разлика помеѓу пребарувањето без какви и да било


информации, тн. слепо пребарување, и пребарувањето кое користи информации, тн.
евристичко пребарување. Евристичкото пребарување има пристап до одредени
информации поврзани со конкретната задача кои се користат да се подобри
ефикасноста на процесот на пребарување.

Исто така постои разлика помеѓу произволното пребарување и оптималното


пребарување. Оптималното пребарување го бара оптималниот пат и решение,
додека произволното пребарување се задоволува само со изнаоѓањето на какво и да
било решение.

Методите за пребарување користат стебла и графови. Едно стебло се состои од


јазли и врски помеѓу јазлите, при што јазлите се така поврзани што не постојат
јамки (затворени контури).

Стеблото има јазол наречен корен, кој го означува неговиот почетокот, и крајни
јазли со кои завршува, наречени листови. Секој јазол, освен коренот, има еден
родител или директен предок. Јазол предок е таков јазол до кој се стасува ако по
стеблото се оди нагоре кон јазолот родител. Секој јазол, освен крајните, има едно или
повеќе деца или директни потомци. Јазол потомок е таков јазол до кој може да се
стаса ако се оди по стеблото надолу кон јазолот дете.

Графовите исто така претставуваат множество од јазли меѓусебно поврзани со врски.


Меѓутоа, графовите се разликуваат од стеблата по тоа што еден јазол може да има
повеќе родители и во графовите се јавуваат затворени јамки. Јазлите во еден граф
уште се нарекуваат темиња, а врските – страни.

Постојат два вида графови: ориентирани и неориентирани. Ориентирани графови


се нарекуваат оние, во кои врските имаат насока (лесно може да се направи аналогија
со едносмерни улици). Неориентирани графови се оние, во кои врските се двосмерни
(постои аналогија со двосмерни улици).

Примери за графови можат да се најдат насекаде. Такви се патните мрежи, мрежите


на авионскиот сообраќај, компјутерските мрежи. Во сите овие примери од можен
интерес е одредувањето пат низ графот кој ќе задоволи одредени барања и особини.
Понекогаш задоволува секој пат, а понекогаш се бара најкусиот, најбрзиот,
најефтиниот пат итн. Меѓутоа, графовите можат да бидат и многу поапстрактни. Во
најопшт случај јазлите од еден граф можат да претставуваат одредени состојби, а

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 32

В е родител на С
корен С е дете на В
А е предок на С
С е потомок на А

врска
А
B
јазол

C
лист

Сл.3.1. Приказ на стебло со неговите јазли и врски

Сл.3.2. Неориентиран граф

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 33

Сл.3.3. Ориентиран граф

БЕЛГРАД

РИМ
СОФИЈА
СКОПЈЕ

СОЛУН

Сл.3.4. Пример за неориентиран граф: мрежа на авионски летови и дестинации во


Европа

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 34

врските помеѓу нив да претставуваат дејствија кои предизвикуваат премин од една во


друга сосотојба. Патот низ таков граф од почетниот до крајниот јазол се нарекува
„план на дејствување“ и тој има за цел остварување одредена сакана состојба од
зададена позната почетна состојба.

Општ приод кон решавањето проблеми во вештачката интелигенција е нивно


сведување кон проблемот на пребарување графови. За даден проблем се формира
граф чии јазли се состојби, а нивните врски се дејствија. Состојбите, под
претпоставка, се комплетни, што значи дека ги претставуваат сите битни аспекти од
решаваниот проблем. На пример, ако планирате пат околу светот со авион, нема
потреба да ги знаете адресите на аеродромите. Адресата би била битна во случајот
кога го планирате патот од хотелот до аеродромот. Од друга страна, при
планирањето авионски лет, најчесто треба да се знае името на аеродромот, бидејќи
големите светски градови често имаат повеќе аеродроми.

Дејствијата, под претпоставка, се детерминистички, што значи дека состојбата по


извршувањето на дејствието е позната и одредена. Исто така се смета дека тие се
дискретни, што значи дека она што се случува во текот на дејствието не е од
интерес. Така, во случајот на авионски лет, не е битно што се случувало во текот на
летот.

Може да се забележи дека стеблата се поткласа од ориентираните графови – дури и


кога врските во нив не се претставени со ориентирани линии. Во стеблата не постојат
затворени контури и секој јазол освен почетниот има само еден родител. Затворените
јамки се непожелни при пребарувањето, зошто тие значат бесконечно вртење во круг.

Пребарувањето на еден граф може да се сведе кон пребарување стебло ако


неориентираните врски се заменат со по две ориентирани врски и ако се одбере пат
на пребарување без затворени јамки, што значи дека секој јазол може да биде посетен
само еднаш. Ова е илустрирано за проблемот од сл.3.5 на сл.3.6.

На сл.3.5 со граф е прикажан проблемот на изнаоѓање пат од S до G. S е почетокот на


пребарувањето, а G е целта. Овој проблем може да се сведе кон пребарување стебло
така што ќе појдете од почетокот S, ќе се движите по графот од еден јазол до секој
друг поврзан јазол, избегнувајќи затворени контури, и ќе запрете во G. Ваквото
стебло има лист за секој отворен пат од S до G. Од сл.3.6 може да се забележи дека и
покрај избегнувањето затворени јамки некои јазли се повторуваат во стеблото што
значи дека до нив се стасува по различни отворени патишта. Од друга страна, пак,
тоа значи дека комплетното пребарување на ова стебло ќе бара дополнително време и
работа.

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 35

A
G

D
S
цел

почеток

Сл.3.5. Одредување пат од S до G

A B

D G
D C

G C C G

Сл.3.6. Претставување на проблемот на изнаоѓање пат од S до G со стебло

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 36

Пребарувањето на едно стебло е процес во кој стеблото „расте“ со напредокот на


пребарувањето. Со други зборови, не се работи за однапред дадена база податоци низ
која се врши пребарување, туку базата се генерира во реално време со
разгранување на стеблото низ процесот на пребарување.

Процедурата на пребарување низ едно стебло треба да се стреми да ги изврши


следните задачи:

- да најде решение на проблемот секогаш кога такво постои


- да најде најдобро решение
- да најде најефикасно решение во смисла на потребно компјутерско време и
мемориски простор

Алгоритмите за пребарување на едно стебло можат да припаѓаат кон категоријата


слепо пребарување или категоријата евристичко пребарување. Под слепо
пребарување се подразбира пребарување при кое не се користат дополнителни
информации за решаваниот проблем, освен тие што веќе се дадени со дефиницијата
на проблемот и пребарувањето е главно „на среќа“. Алгоритмите за слепо
пребарување се во состојба само да генерираат следна состојба и да разликуваат
дали една состојба ја претставува саканата цел или не. Евристичкото пребарување
користи дополнителни информации за проблемот и обично го решава поефикасно.
Алгоритмите за евристичко пребарување можат да определат дали една состојба
помалку или повеќе „ветува“ да доведе до саканата цел.

Слепото пребарување може да доведе до комбинаторна експлозија на јазлите од


стеблото, т.е. до проширување на бројот на јазли во стеблото до таа мерка што тие не
ќе можат да се опфатат со расположивата меморија на компјутерот и/или со
расположивото време за решавање на проблемот. Затоа слепото пребарување
обично се користи за пребарување мали простори на состојби, а за поголеми
простори се пристапува кон евристичко пребарување.

Сите стратегии за пребарување се разликуваат по редоследот на разгранување на


јазлите во стеблото.

3.1. СТРАТЕГИИ ЗА СЛЕПО ПРЕБАРУВАЊЕ НА СТЕБЛО

Наједноставна стратегија за пребарување воопшто е слепото пребарување при кое


задоволува кое било решение. При тоа се користат три основни типови алгоритми:

- пребарување прво по широчина (breadth-first)


- пребарување прво по длабочина (depth-first)
- пребарување до ограничена длабочина

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 37

Пребарување прво по широчина. При оваа стратегија на пребарување стеблото


расте ниво по ниво: најнапред се разгранува коренот, потоа се разгрануваат сите
потомци на коренот, па нивните потомци итн, како што е илустрирано на сл.3.7 со
едноставно бинарно дрво. Стрелката на сликата покажува кој јазол се разгранува.
Ваквото пребарување е алгоритамско и сигурно доведува до решение ако тоа постои.
Но самото изнаоѓање на решението обично не е најефикасно во смисла на
потрошеното време и меморија, како што е илустрирано во Таблицата 3.1 за фактор
на разгранување b = 10 , брзина на разгранување од 10000 јазли во секунда и
меморија од 1000 бајти за секој јазел.

Сл.3.7. Приказ на алгоритмот за слепо пребарување на едноставно бинарно стебло


прво по широчина

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 38

Таблица 3.1. Потребно време и мемориски простор при слепото пребарување


прво во широчина

длабочина јазли време меморија


2 1100 .11 секунди 1 мегабајт
4 111100 11 секунди 106 мегабајти
6 107 19 минути 10 гигабајти
8 109 31 час 1 терабајт
10 1011 129 дена 101 терабајт
12 1013 35 години 10 петабајт
14 1015 3.523 години 1 ексабајт

Од Таблицата 3.1 може да се заклучи дека потребниот мемориски простор кај


пребарувањето прво во широчина е поголем проблем од времето на пребарување. За
среќа, другите стратегии на пребарување за кои ќе стане збор во продолжение бараат
помалку меморија.

Нека се набљудува хипотетички простор на состојби во кој секоја состојба има b


потомци. Во првото ниво коренот на стеблото генерира b јазли. Секој од овие јазли
во второто ниво генерира по b нови јазли. Следствено, вкупниот број јазли во
второто ниво е b 2 , во третото ниво - b 3 итн. Ако бараното решение се наоѓа на
длабочина d, во најлош случај ќе треба да се разгранат сите јазли во нивото d освен
последниот, зошто целниот јазол не се разгранува. Така вкупниот број јазли во
нивото d ќе биде b d +1 − b , а вкупниот број јазли на стеблото ќе изнесува:

(3.1) b + b 2 + b 3 + ⋅ ⋅ ⋅ + b d + b d +1 − b

Очигледно сложеноста на проблемот расте по експоненцијален закон , па


пребарувањето прво по широчина не може да се примени освен во случајот на многу
мали простори на состојби.

Пребарување прво по длабочина. При оваа стратегија на пребарување, илустрирана


на сл.3.8, некој пат се следи с`е додека не заврши. Тоа значи дека пребарувањето по
еден пат се врши до најдлабокото ниво на стеблото во кое јазлите немаат потомци.
Алтернативните патишта се разгледуваат само ако крајниот јазол од набљудуваниот
пат не е и целен јазол. Ако некој пат е истражен до крај и не е постигната целта,
пребарувањето се враќа до најблискиот јазол кој с`е уште не е разгранет до крај и
продолжува по нов пат с`е додека не се дојде до најдолното ниво или до целен јазол.
Јазлите што се целосно истражени се отстрануваат од меморијата. На сл.3.8 тие се
прикажани со црни кругови.

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 39

цел

цел

Сл.3.8. (продолжува)

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 40

Сл.3.8. (продолжува 2)

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 41

цел

Сл.3.8. Илустрација на постапката за пребарување на едно бинарно стебло


прво по длабочина (претпоставен е еден целен јазол и длабочина d=2)

Пребарувањето прво по длабочина не бара голем мемориски простор. Алгоритамот


памети само еден пат од коренот до крајниот лист и преостанатите неразгранети
јазли на тој пат. Кога еден јазол е целосно разгранет, тој може да се отстрани од
меморијата штом се истражат сите негови потомци. За стебло со фактор на
разгранување b и максимална длабочина d, алгоритмот за пребарување прво по
длабочина памети само bd + 1 јазол. Следствено, под истите претпоставки кои важат
за податоците во Таблицата 3.1, за d=12 со овој алгоритам ќе треба меморија од 118
килобајти, наспроти 10-те петабајти што ги бара алгоритмот за пребарување прво по
широчина.

Пребарувањето прво по длабочина е ризично, посебно ако постои виртуелно


бескраен пат низ стеблото. Исто така, пребарувањето прво по длабочина не го наоѓа
секогаш најкусиот пат до целниот јазол. Предност му е што го минимизира бројот на
враќања кон почетниот јазол, што е присутно кај пребарувањето прво по широчина.
Генерално, овoj тип на пребарувања се користи ако се знае дека стеблото не е
предлабоко и ако се знае дека има повеќе целни јазли во него.

Пребарување до ограничена длабочина. Овој тип пребарување има за цел да го


надмине проблемот на бесконечен пат низ стеблото кој се јавува кај пребарувањето
прво по длабочина. За таа цел се дефинира граница на длабочината l и сите јазли кои
се наоѓаат на длабочина l се сметаат за крајни јазли, односно јазли кои не се
разгрануваат. Пребарувањето до одредена длабочина го решава проблемот на
бесконечен пат низ стеблото, но внесува дополнителни проблеми кога l < d , па

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 42

целниот јазол се наоѓа на длабочина позади границата l и кога l > d , па


пребарувањето не е оптимално. Пребарувањето прво по длабочина може да се смета
за специјален случај од пребарувањето до ограничена длабочина, кога l = ∞ .

Понекогаш границата на длабочина на пребарување l се определува врз основа на


познавањето на решаваниот проблем. Така, на пример, ако патната карта на една
држава има 20 града, пребарувањето низ неа ќе биде најмногу до длабочина d = 19 ,
па l = 19 е соодветен избор за l . Од друга страна, ако картата се набљудува
внимателно, може да се забележи дека до кој и да било град на картата може да се
стаса од кој и да било друг град најмногу во девет чекори, па овој број, наречен
дијаметар на просторот на состојби, е подобар избор за границата на длабочина l
за решаваниот проблем, бидејќи обезбедува поефикасно пребарување до ограничена
длабочина. За жал, во најголемиот број случаи, најсоодветната вредност за границата
на длабочина l нема да може да се определи се додека не се реши проблемот.

3.2. СТРАТЕГИИ ЗА ЕВРИСТИЧКО ПРЕБАРУВАЊЕ

За да се обезбеди поефикасно пребарување од слепото, се дефинира тн. функција на


проценка f (n ) , која го „мери“ растојанието на еден јазол од целта. Што е вредноста
на оваа функција за даден јазол помала, тоа набљудуваниот јазол се наоѓа поблиску
до целниот јазол – целта. Следствено, при пребарувањето секогаш се поаѓа од јазолот
со најмала вредност на функцијата на проценка f (n ) . Оваа стратегија на
пребарување сликовито се нарекува пребарување од најдобриот јазол, што значи
дека при пребарувањето секогаш се поаѓа од јазолот кој најмногу „ветува“ дека ќе
доведе до саканата цел. Треба да се има на ум дека називот на стратегијата, колку и
да е сликовит, не е најточен, зошто, кога најдобриот јазол (оној што е најблизу до
саканата цел) навистина би бил познат, не би станувало збор за никакво пребарување
на стеблото, туку директно проследување низ стеблото до саканата цел. Овде во
суштина се работи за избор на јазол кој само изгледа дека е „најдобар“, односно
најблизу до саканата цел, во согласност со одбраната функција на проценка.

Во зависност од изборот на функцијата на чинење, постојат голем број алгоритми за


пребарување од најдобриот јазол, а заедничка компонента на сите им е тн.
евристичка функција h (n ) , која се дефинира на следниот начин:

(3.2) h (n ) = проценка на цената на чинење на најефтиниот пат од јазолот n до


јазолот кој ја претставува целта

Влез на евристичката функција е јазолот n , но таа зависи исклучиво од неговата


состојба.

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 43

Евристичките функции се најопштиот облик на вклучување на дополнителното


знаење за решаваниот проблем во алгоритамот за пребарување. Без оглед на тоа како
се дефинирани, сите имаат заедничка особина:

(3.3) h (n ) = 0; ako n e celta

доколку n е целниот јазол.

3.2.1. GREEDY BEST-FIRST ПРЕБАРУВАЊЕ

Станува збор за алгоритам на пребарувањето од најдобриот јазол, при која најнапред


се разгранува оној јазол кој е најблизу до целта од аспект на брзината на пристигање
до саканото решение. При тоа јазлите се проценуваат само врз основа на
евристичката функција, што значи:

(3.4) f (n ) = h (n )

Алгоритмот е илустриран со примерот на изнаоѓање најкус пат од Арад до Букурешт


во Романија, врз основа на нивното растојание по права воздушна линија. Нека, под
претпоставка, патната мрежа на Романија прикажана на сл.3.9 содржи дваесет
градови, чие воздушно растојание до главниот град на Романија Букурешт е дадено
во Таблицата 3.2.

Евристичката функција h (n ) овде го претставува воздушното растојание на


соодветниот град од целта одредено по права линија:

(3.6) h (grad ) = vozdu{no rastojanie

Очигледно е дека вредностите за h (n ) не можат да се определат врз основа на


дефиницијата на проблемот, туку е потребно дополнително евристичко знаење. Исто
така, потребно е одредено искуство за да се осознае дека воздушното растојание е во
корелација со вистинското патно растојание и, оттаму, претставува корисна
евристика.

На сл.3.10 е прикажан дијаграмот за одредување на бараниот пат од Арад до


Букурешт со помош на евристичката функција h (grad ) = vozdu{no rastojanie .
Јазлите во стеблото се означени со нивното воздушно растојание до целта. Првиот
јазол што се разгранува по ARAD е SIBIU, зошто неговото растојание до саканата
цел е најкусо. Следниот јазол во стеблото што се разгранува е FAGARAS, бидејќи е
најблиску до BUCHAREST. Јазолот FAGARAS води до BUCHAREST, кој ја
претставува саканата цел.

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 44

Oradea
Neamt
71
Lasi
87
Zerind 151
75
92
Arad Vaslui
140 Sibiu
118 99 Fagaras 142

120
Timisoara 80
Urziceni Hirsova
111 Rimnicu
Vilcea Pitesti
Lugoj 97 85 98
101 Bucharest
70 146 86

Mehadia 90 Eforie
138

75
Giurgiu

Dobreta
120 Craiova

Сл.3.9. Упростена патна карта на Романија

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 45

Таблица 3.2. Градови во Романија и нивното растојание по воздушна линија од


Букурешт

град растојание град растојание


ARAD 366 км MEHADIA 241 км
BUCHAREST 0 км NEAMT 234 км
CRAIOVA 160 км ORADEA 380 км
DOBRETA 242 км PITESTI 100 км
EFORIE 161 км RIMNICU VILCEA 193 км
FAGARAS 176 км SIBIU 253 км
GIURGIU 77 км TIMISOARA 329 км
HIRSOVA 151 км URZICENI 80 км
LASI 226 км VASLUI 199 км
LUGOJ 244 км ZERIND 374 км

366

S T Z
253

329 374

A F O R

176
366 380 193

S B

253 0

Сл.3.10. Одредување на најдобриот пат од Арад до Букурешт врз основа на


евристичката функција (3.6)

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija
Lekcija3. Пребарување 46

Во конкретниот пример од сл.3.9 и сл.3.10, алгоритамот за пребарување доведе до


саканото решение без потреба од разгранување на јазлите кои не се наоѓаа на
избраниот пат. Оттаму, цената на чинење на пребарувањето е минимална. Меѓутоа,
решението не е оптимално – дополнителна евристика покажува дека патот преку
SIBIU и FAGARAS е за 32 километри подолг од патот преку RIMNICU VILCEA и
PITESTI.

Изложениот алгоритам за евристичко пребарување го копира алгоритмот за


пребарување по длабочина, бидејќи следи одреден пат се` до целта. Меѓутоа се враќа
назад кога ќе наиде на неуспешен крај. Ги има истите недостатоци на пребарувањето
по длабочина – не е оптимален и комплетен, бидејќи може да тргне по бесконечен
пат и никогаш да не се врати да ги испита останатите можности. Нека, на пример,
треба да се определи најкусиот пат од LASI до FARAGAS. Врз основа на (3.6) се
заклучува дека најнапред треба да се разграни јазолот NEAMT, бидејќи е најблизу до
FARAGAS по воздушна линија. Меѓутоа, NEAMT претставува ќорсокак (слепа
улица). Решението е да се тргне најнапред кон VASLUI, што според усвоената
евристичка функција претставува оддалечување од целта, и потоа да се продолжи
преку URZICENI и BUCHAREST до FARAGAS. Очигледно во овој случај усвоената
евристичка функција води кон разгранување непотребни јазли. Уште повеќе, ако не
се внимава на повторените состојби, може да се случи алгоритамот да заврши во
бесконечна јамка помеѓу NEAMT и IASI и така, никогаш да не го најде саканото
решение.

Просторната сложеност на алгоритмот во најлошиот случај изнесува b m , каде што m


е максималната длабочина на просторот на пребарување. Со добра евристичка
функција, оваа сложеност може значително да се намали.

________________________________________________________________________________________
Osnovi na ma{inskata inteligencija

You might also like