분산 알파 베타 가지 치기


19

분산 아키텍처에서 알파-베타 가지 치기 기능 을 갖춘 체스의 미니 맥스 검색 트리를 처리 할 수있는 효율적인 알고리즘을 찾고 있습니다 . 내가 찾은 알고리즘 (PVS, YBWC, DTS는 아래 참조)은 모두 오래된 것입니다 (1990 년 최신). 그 이후로 많은 발전이 있었다고 생각합니다. 이 분야의 현재 표준은 무엇입니까?

또한 내가 읽은 연구 논문에서 이해할 수 없으므로 DTS에 대한 바보의 설명을 알려주십시오.

위에서 언급 한 알고리즘 :

  • PVS : 원리 변형 분할
  • YBWC : 젊은 형제 대기 개념
  • DTS : 동적 트리 분할

모두 여기 에 설명되어 있습니다 .


아마도 이것은 흥미로운 읽을 거리 일 것이다 : chessbase.com/newsdetail.asp?newsid=8047
Alex ten Brink

2
글쎄, 이것은 문제입니다 (minimax 검색 또는 변형을 병렬화) 특히 어렵습니다. 올해 "리차드 검색의 연구 과제"라는 제목의 Richard Korf가 발표 한 논문에서 다음과 같은 내용을 읽을 수 있습니다. 항상 효율적으로 만드는 알고리즘이 있습니다 ...
Carlos Linares López

따라서, 나는 매우 겸손한 4 학기 컴퓨터 과학 학부생이라는 것을 고려할 때 직렬화 알고리즘을 사용해야합니까, 아니면 수용 가능한 하위 선형 속도 향상을 기대해야합니까?
화냄

회신이 지연되어 죄송합니다.받은 편지함에 완전히 표시되지 않았습니다. 사실, 최종 절감액은 평가 기능에 의해 지정된 점수를 검색 트리의 잎에 분배하는 것에 전적으로 달려 있다고 기대합니다. 일반적으로 분산 검색 알고리즘이 직렬화 된 알파-베타 검색 알고리즘보다 성능이 훨씬 우수하다는 보장은 없습니다. 따라서, 나는 가능한 한 많은 개선 (주문 이동, 전치 테이블 등)을 시도하는 일련의 버전으로 갈 것입니다.
Carlos Linares López

병렬 알파 베타 (기본적으로 링크 된 위키 페이지에 설명 된대로)로 약간의 성공을 거두었습니다.
Jeremy List

답변:


3

그렇습니다. 이론은 체스 분석 문헌과 일반적인 병렬 프로그래밍 기술로 인해 상당히 발전했습니다. 다음은 분산 클러스터 / 병렬 처리에 대한 알파 베타 정리에 대한 새로운 참조입니다. 또한 초기 분산 컴퓨팅 체스 문헌 중 일부는 많은 기본 병렬 디자인 패턴 보다 오래 되었으며 해당 프레임 워크 내에서 개념화 될 수 있습니다.

DTS의 기본 개념은 검색 트리가 이동 / 배치 복잡성에 따라 계산 노드간에 분산된다는 것입니다. "최종 종료"된 미사용 프로세서는 초기 할당을 넘어서 가능한 한 초기에 균등하게 분배 할 수 있지만 고르지 않은 것으로 밝혀 질 수 있습니다. 따라서 기본적으로 일종의 "로드 밸런싱"및 "프로듀서 / 소비자" 큐 또는 작업 스케줄링과 유사합니다.

이 유휴 프로세서는 공유 메모리를 사용하여 유휴 상태임을 브로드 캐스팅하며 다른 프로세서가 트리 검색을 마치도록 "도움을 줄"수 있습니다. 사용중인 프로세서는 "트리의 상태"데이터를 수집하여 유휴 프로세서가 검사 할 수 있도록 공유 메모리에 저장합니다. 이 유휴 프로세서는이 데이터를 분석하고 사용중인 프로세서 중 어느 것이 (있는 경우) 검색에 도움이 될 정도로 복잡한 트리를 갖는지 결정합니다. 이러한 위치를 찾으면 유휴 프로세서는 해당 노드를 소유 한 프로세서에게 프로세서에 알리고 강제로 "결합"합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.