분산 알파 베타 가지 치기


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.