ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Alfa-béta vágás - Wikipédia

Alfa-béta vágás

A Wikipédiából, a szabad enciklopédiából.

Az alfa-béta vágás szemléltetése. A beszürkített részfákat nem kell megvizsgálni, mivel a baloldalt mellettük lévő lépés miatt alfa/béta vágás hajtható végre.
Az alfa-béta vágás szemléltetése. A beszürkített részfákat nem kell megvizsgálni, mivel a baloldalt mellettük lévő lépés miatt alfa/béta vágás hajtható végre.

Az alfa-béta vágás egy játékelméleti keresési algoritmus, amellyel csökkenthető a játékfában lévő kiértékelendő állások száma a minimax algoritmus által szükséges kiértékelésekhez képest. Az algoritmust az olyan kétszemélyes játékoknál mint pl. az amőba, sakk, go stb. lehet eredményesen használni gépi játékos készítésére. Az algoritmus alapötlete azon nyugszik, hogy ha a játékfában az éppen vizsgált lépésünkre az ellenfélnek van egy olyan erős lépése ami miatt ezt a lépést úgyse választanánk (mivel a vizsgálat korábbi részéből már van jobb választásunk), akkor az erre a lépésre az ellenfél által adható további lépéseket nem szükséges megvizsgálni. (Más szóval: ha ez ellenfél válaszlépése túl jó, akkor úgyse fogjuk meglépni az azt lehetővé tévő lépésünket.) Az algoritmusban ezen részjátékfák fölösleges vizsgálatának kihagyását hívjuk alfa illetve béta vágásnak. A minimax algoritmus ilyetén történő optimalizálása nem változtatja meg a kapott végeredményt.

[szerkesztés] Az algoritmus

Az algoritmus a játékfa bejárása közben két értéket tart karban, az ún. alfa és béta értéket, az alfa azt a minimum értéket jelenti, amit az ún. 'maximalizáló' játékos már biztosított magának, illetve a béta azt a maximum értéket, amit a 'minimalizáló' játékos biztosított magának. Az algoritmus induláskor a két értéket mínusz végtelen illetve plusz végtelenre inicializálja, majd a fa rekurzív vizsgálata közben folyamatosan állítgatja értéküket a két játékos által garantáltan elérhető értékekre. Ezáltal folyamatosan szűkül ez az alfa-béta ablak. Amint a béta kisebbé válik az alfánál, az azt jelenti, hogy ez az állás – ha mind a két játékos részéről a legjobb játékot tételezzük fel – nem állhat elő, így nincs is értelme tovább vizsgálni.

Az algoritmus pszeudo kódja:

 evaluate (node, alpha, beta)
   if node_is_a_leaf()
       return the_heuristic_value_of_node
   if node_is_a_maximizing_node()
       for each child of node
           beta = min (beta, evaluate (child, alpha, beta))
           if beta <= alpha
               return alpha
       return beta
   if node_is_a_minimizing_node()
       for each child of node
           alpha = max (alpha, evaluate (child, alpha, beta))
           if beta <= alpha
               return beta
       return alpha

[szerkesztés] Hatékonyság a minimax-szal szemben

Az alfa-béta algoritmus előnye abból származik, hogy a játékfa bizonyos ágainak vizsgálatát megspórolja. Ezáltal a játékfa gyorsabb vagy mélyebb vizsgálatát teszi lehetővé. A vágások által realizálható előny sok tényezőtől függ, de a gyakorlati életben közelítőleg a vizsgálati mélység megduplázása érhető el vele. A vágások mértéke nagyon függ a játékfa 'szélességétől', amely paraméter leginkább az adott játék sajátossága, illetve attól hogy milyen sorrendben értékeljük ki a lépéseket, egészen pontosan attól, hogy mennyire hamar értékeljük ki a mindenkori adott álláshoz tartozó legerősebb lépés(eke)t. Ezt elősegítendő célszerű erősorrendben megvizsgálni a lehetséges lépéseket, amely erősorrendet heurisztikus algoritmusokkal lehet megbecsülni. Ezek közül az egyik legegyszerűbb a gyilkos lépés heurisztikája, amely az előző vizsgált lépésre adott legjobb választ próbálja ki először az aktuálisan vizsgált lépésre adható válaszok közül.

Egy képzeletbeli játékfa estében aminek minden csomópontjában konstans b lehetséges lépés van és d a mélysége, legkedvezőtlenebb esetben az alfa-béta algoritmus műveletigénye egyenlő a minimax algoritmus műveletigényével = O(bd). A legkedvezőbb esetben, amikor minden csomópontban a legjobb lépéssel kezdjük a vizsgálatot = O(\sqrt{b^d}). Azaz ugyanannak a fának a megvizsgálása négyzetgyöknyi levél csomópont kiértékelését igényli, vagy más nézőpontból megközelítve: ugyanannyi levél csomópont kiértékelése esetén kétszer olyan mély fát tudunk megvizsgálni.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -