[na] #04-algoritamski_strategii

21
8/15/2019 [NA] #04-Algoritamski_strategii http://slidepdf.com/reader/full/na-04-algoritamskistrategii 1/21

Upload: arbenosm

Post on 05-Jul-2018

242 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 1/21

Page 2: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 2/21

Алгоритамски стратегииДизајнирање на алгоритми

Вообичаени прашања водилки низ процесот на избор на стратегијата:

Дали е целосно јасен проблемот ?

Дефинираност на влезот и резултатот; решливост рачно на хартија; важност на оптималноста;обемност на влезот ; временска критичност на решението; исплатливост на ангажманот; типна проблемот (нумерички, графовски, геометриски, стринг, множество) ‐ која формулација?

Познат ли е едноставен алгоритам или хеуристика за проблемот?Која стратегија(brute ‐force, greedy, ...); која е временската комплексност на имплементацијата ?;помага ли некаква хеуристика ‐ постојат ли употребливи примери; сложеност на решението?

Дали проблемот се вклопува во некоја ПОЗНАТА класа каталогизирани проблеми?Постои ли употреблива имплементација?; проверени ли се сите познати ресурси?

Постојат ли исклучоци(специјални случаеви) кои треба да се адресираат засебно ?На ниво на влезови или можеби дали е проблемот само специјален случај на погенералнакласа за која постои каталогизирано решение?

Која од стандардните алгоритамски парадигми е најрелевантна за проблемот ?Природата на проблемот ‐ сортирање ?; се дели на помали истородни проблеми ‐divide&conquer?; игра ли улога подреденост на влезот?; имплицирана ли е конкретна податочнаструктура заради зголемена ефикасност?; дали припаѓа на класа решливи проблеми ?

Нужна ли е помош од експерт/ консултант?3

Алгоритамски стратегииПсевдо‐кодирање

Алгоритам е детерминистичка секвенца од операции за решавање на конкретен проблем !

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

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

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

4

Page 3: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 3/21

Алгоритамски стратегииПсевдо‐кодирање

Конвенции кои треба да се применуваат во псевдокодот :

• се користи валидно именување за декларирање на методите (функциите): Algorithm MethodName (param1, param2)

• паметно е да се нумерираат сите линии во псевдокодот заради недвосмисленореференцирање

• се користи јасна идентација (визуелно подредување / вгнездување ) за потенцирање наструктуираноста на блоковите во кодот

• доделување на вредност ‐ се користи "=" или стрелката лево " ":i = j или i j

повикување методи ‐ во C/C++/Java стил:MethodName(args) Object.MethodName(args)

• враќање на резултат од повиканата метода во повикувачката ‐ се користи return :return i

5

Алгоритамски стратегииПсевдо‐кодирање

Конвенции кои треба да се применуваат во псевдокодот :

• flow контрола ‐ се користи if ‐then ‐else нотацијата, пожелно со експлицитно endif :if ( услов )

акцииelse

акцииendif

• на ист начин со идентација и за јамките: for ( услов ) ‐ do ( акции ) ‐ endfor while ( услов ) ‐ do ( акции ) ‐ endwhilerepeat ( акции ) ‐ until ( услов )

• кај логичките изрази за комбинирање се користат and , or и not

• индеkсирање на низи ‐ стандардно од тип Array [index]

• коментирање ‐ /* во C стил*/ или { во големи загради }

6

Page 4: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 4/21

Алгоритамски стратегииПсевдо‐кодирање

Пример ‐ псевдо код за insertion sort:

7

Алгоритамски стратегииКласификација на алгоритми

Тешко е алгоритмите децидно да се поделат според некаква класификација бидејќи поправило содржат некакви оптимални комбинации од стратегии за напаѓање на одредени класина проблеми .

Глобално, конзистентно групирање на алгоритамските стратегии може да претставуваследната листа:

• greedy ‐ "алчни" алгоритми• divide & conquer ‐ "подели и владеј " алгоритми• dynamic programming ‐ "динамичко " програмирање• randomized ‐ алгоритми со генерирање на случаен број• backtracking ‐ алгоритми со евалуирање на опции• brute force ‐ алгоритми темелени на "груба сила"• branch & bound ‐ "разграни и пробај" алгоритми

Наведената поделба не е ниту конечна ниту апсолутна ‐ секој аспект на гледање настратегиите може да произведе поинаква !

8

Page 5: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 5/21

Алгоритамски стратегииBrute force стратегија (груба сила)

Веројатно прва техника која интуитивно би се употребила за решавање на даден проблем ‐директна (straight forward) методологија следејќи ја дефиницијата на задачата !

Техниката на груба сила се наметнува како(единствена ) опција кога природата на проблемоте таква (комбинаторна ) да мора да се пресметаат сите варијанти .

Има ОПТИМИЗАЦИОНА карактеристика бидејќи ги утврдува сите можни решенија што даваможност да се избере оптималната ! Понекогаш е доволно да се најде првото (поволно) решение кое задоволува некои предефинирани услови .

Вообичаена стратегија за наоѓање оптимално решение :

1. креирај листа на решенија за евалуација

2. евалуирај го тековното решение ‐ ако е оптимално ЗАПАМТИ го, ако не отфрли го

3. врати го оптималното решение

Типично со експоненцијален временски трошок!

Често други стратегии се поефикасни за типични класи проблеми!

9

Алгоритамски стратегииBrute force стратегија (груба сила)

ПРИМЕРИ:

• линеарно пребарување низа ‐ мора да се измине целата за да се пронајде бараниот клуч

• пресметка производ на матрици ‐ мора да се пресметаат сите комбинации на

редовите од едната и колоните од другата• brute ‐force разбивање на шифра ‐ треба да се генерираат и тестираат сите можникомбинации за 64‐/128 ‐битни енкрипции може да потрае со години / децениизависно од множеството знаци земени предвид

• наоѓање на оптималната маршрута (од сите можни) за проблемот на "трговскиот патник"

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

• утврдување на сите можни парови дефанзивни позиции на две кралици на шаховскатабла ‐ мора да се утврдат сите можни позиции и да се пребројат дефанзивните

• плаќање произволна сметка со минимален број банкноти / монети

• оптимално (од сите комбинации ) пакување во ранец на работи со различнацена / димензија

10

Page 6: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 6/21

Алгоритамски стратегииBrute force стратегија (груба сила)

ПРИМЕР ‐ Selection SortЈа изминува низата од тековната позиција барајќи го најмалиот клуч и ако таков има надесного заменува со тековниот почетен:

Временска комплексност O(n2)!

11

Алгоритамски стратегииBrute force стратегија (груба сила)

ПРИМЕР ‐ String MatchingГо изминува целиот стрингT и проверува дали зафатениот подстринг е идентичен соpattern ‐от P:

Временска комплексност O(mn) O(n2)!

12

Page 7: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 7/21

Алгоритамски стратегииBrute force стратегија (груба сила)

ПРИМЕР ‐ парот најблиски точки во рамнинатаСе пресметуваат дистанците на секој од секого за да се одбере минимумот :

Временска комплексност O(n2)!

13

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

ПРИМЕР ‐ Оптимално плаќање на сметка од15 ден во даден монетарен систем

Техниката на груба сила треба да:• ги евалуира сите комбинации на апоени кои задоволуваат ( ја покриваат сметката)• од успешните да ги издвои тие без кусур(остаток)• од последните да ја утврди оптималната ‐ со најмал број апоени (банкноти/ монети)

14

Page 8: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 8/21

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

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

Се работи за методологија со избирање ОПТИМАЛНА опција во тековниот чекор напроцесирање ‐ без да се евалуира развојот во идните чекори !

Практично во секој момент на одлучување се бира моменталниот оптимум (ЛОКАЛЕН) вонадеж дека конечниот резултат ќе биде ГЛОБАЛНИОТ оптимум(најдобриот)!

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

Но, многу е извесно да се случи конечното решение да не е НИТУ оптималното, НИТУпрецизно !

Сепак се работи за ефикасна стратегија кај проблеми за кои се бара БРЗО и самоАПРОКСИМАТИВНО решение!

Неупотреблив кај проблеми од типот оптимирање на сообраќајна маршрута каде трба да сеевалуираат ситуациите кај сите раскрсници до дестинацијата.

15

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

ПРИМЕР ‐ Оптимално плаќање на сметка од15 ден во даден монетарен систем

Во MK системот:

Алчниот алгоритам ќе проба дали100 ка влегува ‐ НЕ! Потоа 50ка ‐ НЕ! Потоа 10ка ‐ ДА!Го нашол моменталниот оптимум ‐ со најголем апоен да проба да го плати моменталниот долг .Останува долг од 5 ден го регулира со една монета ! Може да плати со 2 банкноти/ монети!

Во фиктивен монетарен систем со апоени од 10, 7 и 1 ден:

Почнува со10 ден ‐ ДА! Останува долг од5 ден , продолжува со 7 ‐ НЕ! Јасно, ќе доплати со уште5 монети од по 1 ден вкупно6 банкноти/ монети!Но таа сметка може да се плати и со само 3 2x 7 ден + 1x 1 ден!!!Во вториот случај најдено е решение , но не оптималното !

16

Page 9: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 9/21

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

ПРИМЕР ‐ Распределување процесорско време на процесиПроцесите ( j 1 ... j N ) со познати времиња на извршување (t 1 ... t N ) кои не може да се прекинат , треба да се распределат така бидат сите комплетирани во минимално просечно апсолутновреме ! ‐ Сите времиња на комплетирање се мерат во однос на заедничкото почетно !Значи, i ‐тиот процес трае t i време , но неговото време на извршување е сопственото плус ситепретходни во низата .

Се покажува дека алчната стратегија го решава проблемот со бирање на најкраткиот процесво секој чекор . Имено, нека постојат N индексирани по k за дефиниран редослед (schedule) i , тогаш сумата на времиња на извршување за последователните k повикани процеси е:

Имено првиот завршува за t i1

, вториот за t i1

+t i2

, третиот за t i1

+t i2

+ti3

, итн.

Првата сума не зависи од подредувањето на процесите , но втората е поголема доколкуповисоките редни броеви k ги множат поголемите траења t ik !

Значи, колку се пократки приоритетните, толку втората сума е поголема , па вкупниотвременски трошок е помал ‐ треба да се подредат од најкраткиот до најдолгиот !

17

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

ПРИМЕР ‐ Распределување процесорско време на процесиЗа илустрација, нека се дадени 4 процеси со траења како на табелата :

Варијанта #1:

Просечно време на извршување 54.25!

Варијанта #2 (оптимална):

Просечно време на извршување 30.75!

Во t=22s првиот редослед има комплетирано само 1 процес, а вториот 3!

18

Page 10: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 10/21

ПРИМЕР ‐ Оптимално пакување во ранциПотребно е да се спакуваат N предмети (s1 , ..., sN ) со димензии 0 si 1 во минимален бројранци со капацитет 1!

Илустрација на оптимално пакување на следните предмети во 3 ранци:

0.2, 0.5, 0.4, 0.7, 0.1, 0.3, 0.8

Постојат две варијанти на проблемот:• online ‐ предметите доаѓаат еден по друг непознати однапред (несортирани)• offline ‐ предметите се однапред сите познати (може да се сортираат )

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

19

ПРИМЕР ‐ Оптимално пакување во ранциПотребно е да се спакуваат N предмети (s1 , ..., sN ) со димензии 0 si 1 во минимален бројранци со капацитет 1!

ONLINE стратегијата има отежнувачки фактор ‐ немање претстава каков предмет е следниот !

Математички се докажува дека во најдобар случај ниеден online алгоритам не гарантиразафаќање на помалку од 4/3 од оптималниот број на ранци!

Постојат3 поедноставни online алгоритми кои гарантираат сместување во не повеќе од 2 патиод оптималниот број на ранци:

• next fit

• first fit

• best fit

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

20

Page 11: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 11/21

ПРИМЕР ‐ Оптимално пакување во ранциПотребно е да се спакуваат N предмети (s1 , ..., sN ) со димензии 0 si 1 во минимален бројранци со капацитет 1!

Online NEXT FIT ‐ веројатно наједноставниот. Ги процесира предметите на следниот начин:• првиот предмет го сместува во првиот ранец• ако тековниот го собира во ранецот на претходниот ‐ го става таму• ако не го собира ‐ отвора нов ранец за него

Лесна имплементација и линеарна временска комплексност O(n),но лоша просторна ‐ 4тиот ранец е непотребно ангажиран !

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

21

ПРИМЕР ‐ Оптимално пакување во ранциПотребно е да се спакуваат N предмети (s1 , ..., sN ) со димензии 0 si 1 во минимален бројранци со капацитет 1!

Online FIRST FIT ‐ ги анализира постојните ранци. Ги процесира предметите на следниот начин :• ги проверува сите отворени ранци дали имаат простор за тековниот предмет• ако ДА ‐ го сместува таму• ако НЕ ‐ отвара нов ранец

Пооптимален од next fit!

За ској предмет одново ја изминува листата отворени ранци квадратна комплексност O(n2)!

Постои можност за оптимирање O(n lg n)!

Алгоритамски стратегииGreedy стратегија (алчни алгоритми)

22

Page 12: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 12/21

Page 13: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 13/21

Алгоритамски стратегииDivide & Conquer стратегија (подели и владеј )

Оваа техника користи top ‐down методологија за решавање на проблемот . Алгоритмот посвојата суштина се темели на рекурзивната стратегија. Концептот се состои од3 чекори:

• divide ‐ подели го проблемот на множество БАРЕМ ДВА(помали ) подпроблеми од ист тип• conquer ‐ совладај (реши) го секој подпроблем индивидуално , рекурзивно• комбинирај ги решенијата на подпроблемите за решавање на нивниот надпроблем

Традиционално , за да се класифицира алгоритмот во D&C класата МОРА да има барем 2 паралелни рекурзивни повика (кои не се преклопуваат) во секоја итерација ‐ да има делење нанадпроблемот ! Ако алгоритмот има само 1 рекурзивен повик тој дефинитивно не спаѓа воD&Cкласата!

Типична примена на D&C стратегијата:• quick sort, heap sort, merge sort, fibonacci со двата [n‐1] и [n‐2] повици• бинарно пребарување (?)• множење на два n‐битни цели броеви• ефикасни пресметковни проблеми (множење матрици , FFT)• геометриски проблеми (парот најблиски точки во рамнината)• графовски проблеми

25

Алгоритамски стратегииDivide & Conquer стратегија (подели и владеј )

26

ПРИМЕР ‐ пребарување на максимум во несортирана низа

Алгоритмот со2 рекурзивни повика ја дели низата на лева и десна , кон основниот случај кој ениза од 1 елемент !

int max(int a[], int l, int r){

if (l == r) return a[l]; // основен случајint m = (l+r)/2;int u = max(a, l, m); // разделиint v = max(a, m+1, r);if (u > v)

return u; // владе j ( состави )else

return v;}

Page 14: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 14/21

Алгоритамски стратегииDivide & Conquer стратегија (подели и владеј )

27

ПРИМЕР ‐ ефикасно множење матрици

Фундаментален аритметички проблем за кој се сметало дека не може да ја подобри

ефикасноста од (n3) ‐ во најдобар случај за n n матрици!

Алгоритамски стратегииDivide & Conquer стратегија (подели и владеј )

28

ПРИМЕР ‐ ефикасно множење матрици

Strassen дава идеја да се поделат матриците на квадранти :

За конкретниот пример следи :

Трошокот сега е 8 множења (n/2 n/2) и 4 собирања со алгоритамски трошок O(n2), што не еподобрување бидејќи резултира повторно во O(n3):

Page 15: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 15/21

Page 16: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 16/21

Алгоритамски стратегииDynamic Programming стратегија (динамичко програмирање )

31

ПРИМЕР ‐ пресметување на фибоначиевата низа

Рекурзивната имплементација кошта

експоненцијално O(2n)!

Итеративната имплементација со меморизација епоефикасна, кошта линеарно O(n)!

ПРИМЕР ‐ пресметување на фибоначиевата низа

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

За n=6 , F(0) се пресметува 5 пати, F(1) 8 пати, F(2) 5 пати, F(3) 3 пати, F(4) 2 пати ‐ 5 инстанци сепресметуваат 23 пати!

Значи со меморирање при првото инстанцирање , 23 повици ќе потрошат само5 пресметки, што е големо убрзување , т.е. намалување на временскиот трошок !

Алгоритамски стратегииDynamic Programming стратегија (динамичко програмирање )

32

Page 17: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 17/21

Алгоритамски стратегииRandomized алгоритми (со генерирање случаен избор )

Рандомизираните алгоритми барем еднаш во своето извршување користат генератор наслучаен број за да донесат одлука !

На пример кај quicksort алгоритмот по случаен избор се бира пивотот!

Проблемот кај генераторите на случајни броеви е што се работи за псевдо‐случајниизбори (при исти услови се генерира истиот број)!

Случајноста може да се направи поверојатна ако генераторите имплементираатмеханизам кој се темели на некоја фракција од моменталното системско време !

Генерално , вистински случаен број Е НЕВОЗМОЖНО да се изгенерира на компјутербидејќи секогаш ќе биде резултат на некаков алгоритам , а што по дефиниција јаисклучува случајноста !

Примена:• алгоритми за генератори на случајни броеви• структуирање наskip ‐листи• тестирање на број дали е прост• ... 33

Алгоритамски стратегииRandomized алгоритми (со генерирање случаен избор )

34

ПРИМЕР ‐ технологија на генерирање случајни бореви

Дури ни системското време не гарантира случаност во генерирањето! Имено, секогашалгоритмот за генерирање може да е НЕСПОРЕДЛИВО ПОБРЗ/ ПОСПОР од динамиката на

фракцијата на системското време која се користи ‐ моеже да се генерираат повеќе броеви предда се смени фракцијата!

Еден прост генератор е linear congruential generator опишан со:

Почетната вредност x 0 (не смее да е 0) се нарекува семе (seed ). АкоM е прост број, тогаш x i 0 .

За илустрација, со M=11 , A=7 и x 0 =1 се генерира следната периодична низа со периода M‐1:

Препорака од експертите е M да се избере како 31 ‐битен прост број што резултира воM=2 31‐1=2,147,483,647 , а A=48,271 обезбедува генератор со цела периода .

Page 18: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 18/21

Алгоритамски стратегииBacktracking стратегија (со подвраќање наназад )

Backtracking е алгоритамски концепт за изнаоѓање на сите или дел од можните решенија напроблеми , преку инкрементално градење на кандидати за решение ( partial candidate solution ) и брзо тестирање на неговата физибилност. Ако алгоритмот утврди дека кандидатот не водикон валидно решение ‐ го отфрла и се враќа (backtracks) на ситуацијата пред евалуација наистиот за да проба по друг пат (да евалуира друг кандидат ).

Ако сите опции од едно гранање се исцрпат без резултат, алгоритмот се враќа напретходниот момент на бирање опции (на гранање ).

Формално , фундаменталниот механизам на оваа стратегија е depth ‐first рекурзивнопребарување .

Дефакто ги иницира сите опции како brute ‐force стратегијата , но за разлика од неа не гипресметува сите варијанти , туку само физибилните !

Примена кај Constraint Satisfaction проблемите :• дефанзивно распоредување на 2 кралици на шаховската табла• крстозбори, судоку• теорија на игри (minmax и maxmin стратегии)• ... 35

Алгоритамски стратегииBacktracking стратегија (со подвраќање наназад )

Backtracking:

36

Page 19: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 19/21

Алгоритамски стратегииBacktracking стратегија (со подвраќање наназад )

ПРИМЕР ‐ оптимално распоредување на мебел во новиот дом

"Насилната" метода би ги пробала сите физички возможни варијанти за сите парчиња мебелво сите простории!

Backtracking стратегијата нема ни да ги земе предвид варијантите со мебел од кујна / спалнаи просторијата ‐ купатило!

Ако се достават насоки кои го прават среќен сосптвеникот(одредени комбинации илиповрзаност со одредени простории ) тоа дополнително ќе го убрза процесот на евалуацијапреку елиминирање на голем број опции уште на стартот!

Елиминацијата на големи множества опции во единствен чекор се нарекува ипоткастрување ( pruning )!

37

Алгоритамски стратегииBacktracking стратегија (со подвраќање наназад )

ПРИМЕР ‐ оптимирање на нареден потег кај стратешките игри

Типични стратешки игри се дама(checkers), шах(chess) и X‐0 (tic‐tac ‐toe).

Кај игра со мал комбинторен обем (X‐0) каде со внимателно одбирање на наредниот потегможе да се форсира нерешено , можно е да се направи lookup табела со сите ситуациониваријанти и како да се одговори на истите! ‐ Но, така теретот се префрла на програмерот, а нена компјутерот.

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

MinMax стратегијата доделува вредност на терминалната позиција , на пример +1 акоситуацијата е победничка, 0 ако е нерешено или ‐1 ако е губитничка(победува опонентот ‐човекот)!

Ако тековната позиција не е терминална, тогаш рекурзивно ја одредува нејзината вредностПРЕТПОСТАВУВАЈЌИ оптимална игра од двете страни ‐ својата и на опонентот!

Името на стратегијата доаѓа од тенденцијата опонентот да тежи да ја минимизира (повредност) позицијата на компјутерот, а овој да ја максимизира својата!

38

Page 20: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 20/21

Алгоритамски стратегииBacktracking стратегија (со подвраќање наназад )

ПРИМЕР ‐ оптимирање на нареден потег кај стратешките игри

Доколку има доволномемориски ресурси ,алгоритмот може да гиевалуира од секојатековна позиција ситеможни одговори наопонентот, за да ги оцениоптималните своиконсеквентни потези!

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

Факторот кој го определува капацитетотна алгоритмот да предвидува одреден бројпотези се нарекува look ‐ahead !

39

Алгоритамски стратегииBacktracking стратегија (со подвраќање наназад )

ПРИМЕР ‐ оптимирање на нареден потег кај стратешките игри

Но, во реалноста игрите (како шахот на пример) имаат обем на комбинаториката кој гинадминува просторно‐временски можности на компјутерот , па look ‐ahead факторот не досегадоволно длабоко во играта до терминалната позиција !

Во такви случаи се балансира помеѓу бројот на идни чекори кои може да се евалуираат иваријантите по одлука кои треба да се испитаат! Со доближување на играта кон крајот опаѓабројот на опции па расте и длабочината на развојот кој може да се евалуира !

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

40

Page 21: [NA] #04-Algoritamski_strategii

8/15/2019 [NA] #04-Algoritamski_strategii

http://slidepdf.com/reader/full/na-04-algoritamskistrategii 21/21