고모 쿠 게임을하고 있는데 보드 상태를 저장하는 효율적인 데이터 구조가 필요합니다. 2D 배열에 저장하려고 생각했지만 더 많은 것이 있습니다. 효율적인 방법. 감사합니다고모 쿠 (Gomoku) 보드 표현
0
A
답변
0
당신이 주로 색인 조회를 수행 할 것이라고 생각하기 때문에, 배열은 거의 최선의 선택이 될 것입니다 - 낮은 상수 요소로 일정 시간에이 조회를 지원합니다. 공간 효율성의 측면에서
:
각 사각형 빈, 또는 두 선수에 의해 채워 될 수 있습니다. 따라서 최대 세 가지 가능성이 있습니다. 공간 효율성을 극대화하기 위해 전체 보드를 base-3 표현으로 저장할 수 있지만, 컴퓨터가 바이너리로 작동하기 때문에 주어진 사각형의 값을 결정하기 위해 전체 보드를 처리해야합니다 (따라서 간단히 인덱스 조회가 가능합니다). 보드의 크기에 비례 한 시간이 걸릴 것입니다. - 시간이 이라면 실제로은 문제가되지 않습니다. 대신 사각형 당 2 비트를 사용하는 것이 좋습니다. 이렇게하면 네 가지 가능성 중 하나를 나타낼 수 있습니다 (네 번째는 사용되지 않습니다).
많은 언어에는 비트 집합 구현이있어 비트 배열로 작업 할 수 있습니다. 위의 경우에 적합합니다.
2D 구조로 작업 할 때 일반적으로 약간의 메모리 오버 헤드가 있기 때문에 2D 비트가 아닌 비트 맵을 원할 수도 있습니다. 2D에서 1D 로의 변환은 간단합니다. x*height + y
또는 y*width + x
을 사용하여 2D 색인을 1D로 변환 할 수 있습니다.
비록 내가 Gomoku 보드가 일반적으로 작아서, 부피가 큰 표현조차도 완벽하게 작동 할 것이라고 생각합니다. (일부 인공 지능 기술은 보드의 많은 복사본을 만들지 만, 만약 당신이 그렇게한다면, 최소한의 표현은 의미가있을 것입니다.)
관련 문제
- 1. 나는 어떻게 고모 쿠 (Gomoku)로 시작합니까?
- 2. 고모 쿠 (Gomoku)에서 좋은 Minimax 표현이 가능한가요?
- 3. 배열을 사용하여 고모 쿠 게임에서 승리를 감지하십시오.
- 4. Gomoku 휴리스틱
- 5. 전략 보드 게임을위한 효율적인 보드 표현 AI
- 6. 쿠 네나와 Jomsocial 통합
- 7. 헤로 쿠 맞춤 도메인
- 8. 헤로 쿠 푸시 - 잘못된 경로
- 9. 여객 최대 요청 헤로 쿠
- 10. Nginx 업스트림 및 헤루 쿠
- 11. 헤로 쿠 오류 : 모듈 webpack
- 12. 스택 오버플로 - 에스 쿠 바닥 글?
- 13. 헤로 쿠 응용 프로그램 오류 heroku 열려
- 14. 얼랑 (Erlang) 쉘에서의 리아 쿠 연결
- 15. 쿠 리에 커튼이 작동하지 않습니다 제대로
- 16. 디버깅 BI 스택 : MySQL의 + 몬드리안 + 쿠 서버
- 17. 헤로 쿠 오류 H10 - (응용 프로그램이 손상됨)
- 18. 헤로 쿠 설치 오류 이클립스 플러그인
- 19. 표현
- 20. 표현
- 21. 표현
- 22. 표현
- 23. 표현
- 24. 표현
- 25. 내가 바인딩 표현 객체가 표현
- 26. 내가 같은 표현 만든 표현
- 27. 표현 블렌드 클릭 이벤트 애니메이션
- 28. CSV 데이터에서 대시 보드 생성
- 29. 대각선 행의 루비 수 중복
- 30. Firebase 리더 보드 - 여러 개의 보드
왜 더 효율적인 데이터 구조가 있다고 생각하십니까? 어떤 작업을 2D 배열에서 비효율적으로 지원해야합니까? 저는 Gomoku에 익숙하지 않지만, 여러분이 주로 선택하는 데이터 구조가 배열이 될 인덱스 조회를하는 것처럼 보입니다. – Dukeling
나는 메모리 효율성 측면에서 더 잘 찾고있다. – YonBruchim