potatura alfa beta distribuita


19

Sto cercando un algoritmo efficiente che mi permetta di elaborare l'albero di ricerca minimax per gli scacchi con potatura alfa-beta su un'architettura distribuita. Gli algoritmi che ho trovato (PVS, YBWC, DTS vedi sotto) sono tutti piuttosto vecchi (il 1990 è l'ultimo). Presumo che da allora ci siano stati molti progressi sostanziali. Qual è lo standard attuale in questo campo?

Inoltre, ti prego di indicarmi la spiegazione di un idiota di DTS poiché non riesco a capirlo dai documenti di ricerca che ho letto.

Gli algoritmi sopra menzionati:

  • PVS: Principio Variazione di scissione
  • YBWC: Young Brothers Wait Concept
  • DTS: suddivisione dinamica dell'albero

sono tutti discussi qui .


Forse questa è una lettura interessante: chessbase.com/newsdetail.asp?newsid=8047
Alex ten Brink

2
Bene, questo è un problema (parallelizzare la ricerca minimax o una delle sue varianti) particolarmente difficile. In un articolo che apparirà quest'anno di Richard Korf intitolato "Sfide della ricerca nella ricerca combinatoria", si può leggere quanto segue: "[...] la ricerca minimax con la preamplificazione alfa-beta, è notoriamente difficile da parallelizzare" Dubito sinceramente esiste un algoritmo che lo rende sempre efficiente ...
Carlos Linares López,

Quindi, considerando che sono solo un modesto studente universitario di informatica del 4 ° semestre, dovrei optare per un algoritmo serializzato o dovrei provare ad aspettarmi uno speedup sub-lineare accettabile?
wirate,

Ci scusiamo per il ritardo nella mia risposta, questo è passato completamente inosservato nella mia Posta in arrivo. In effetti, mi aspetto che il risparmio finale dipenda completamente dalla distribuzione dei punteggi assegnati dalla funzione di valutazione alle foglie dell'albero di ricerca. In generale, non vi sono garanzie che un algoritmo di ricerca distribuito fornirà prestazioni significativamente migliori rispetto a un algoritmo di ricerca alfa-beta serializzato. Pertanto, sceglierei una versione serializzata di esso provando quanti più miglioramenti possibili (ordini di mosse, tabelle di trasposizione, ecc.)
Carlos Linares López,

Ho avuto qualche successo con l'alfa-beta parallela (sostanzialmente come descritto nella pagina wiki a cui ti sei collegato).
Elenco Jeremy il

Risposte:


3

sì, la teoria è progredita in modo significativo e in parte grazie alla letteratura sull'analisi degli scacchi e alle tecniche generali di programmazione parallela. ecco alcuni riferimenti più recenti sulla potatura (beta) alfa beta su cluster / parallelismo distribuiti. anche alcune delle prime pubblicazioni di scacchi di calcolo distribuite precedono molti modelli di progettazione parallela di base e possono essere concettualizzati all'interno di quella struttura.

l'idea alla base di DTS è che gli alberi di ricerca sono distribuiti tra i nodi computazionali in base alla complessità di spostamento / layout. i processori inutilizzati che "finiscono presto" possono fare un lavoro aggiuntivo oltre un'allocazione iniziale che può essere inizialmente distribuita nel modo più uniforme possibile ma che si rivelerà irregolare. quindi è fondamentalmente una sorta di "bilanciamento del carico" e " coda produttore / consumatore" , o anche simile alla pianificazione del lavoro.

Questo processore inattivo trasmette (utilizzando la memoria condivisa) che è inattivo ed è disponibile per "aiutare" qualsiasi altro processore a completare la ricerca nella sua struttura. I processori occupati raccolgono i dati dello "stato dell'albero" e li memorizzano nella memoria condivisa per essere esaminati dal processore inattivo. Questo processore inattivo analizza questi dati e decide quale (se presente) dei processori occupati sembra avere un albero abbastanza complicato da essere efficace per aiutare con la ricerca. Se viene trovata una tale posizione, il processore inattivo informa il processore proprietario di quel nodo e "uniscono" le forze.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.