1. 개요
1.1. 해답
파일:8퀸 문제 해법.png
위와 같이 12개의 기본 형태가 있으며, 이를 근본해라고 한다. 대칭인 마지막 패턴(4개)을 제외하고 각 8개를 대칭이동으로 만들 수 있으므로, 여덟 퀸의 경우 총 92개의 해가 있다.
위와 같이 12개의 기본 형태가 있으며, 이를 근본해라고 한다. 대칭인 마지막 패턴(4개)을 제외하고 각 8개를 대칭이동으로 만들 수 있으므로, 여덟 퀸의 경우 총 92개의 해가 있다.
2. n-Queens 문제
n-Queens 문제는 n개의 여왕말을 nxn 체스판에 서로 위협하지 않도록 배치하는 문제로서, 여덟 퀸 문제를 일반화한 알고리즘 문제다. 일반화된 n-Queens 문제에 대한 해법으로는, n이 2, 3인 경우를 제외하고 모든 자연수에서 해를 찾을 수 있다.
2.1. n-Queens 문제의 해
2.2. n-Queens 문제와 백트래킹 방법
n-Queens 문제는 알고리즘 설계 기법 중 하나인 백트래킹 방법으로 해결한다. 아래는 백트래킹으로 n-Queens 문제를 해결하는 파이썬 구현 소스 코드이다.
n-Queens 문제를 백트래킹으로 푸는 방법은 이 영상[1]에 자세히 나오고, 위 소스 코드 구현에 대한 설명은 이 영상[2]에 나와 있다.
def n_queens (i, col):
n = len(col) -1
if (promising(col, i)):
if (i == n):
print(col[1: n + 1])
else:
for j in range(1, n+1)
col[i + 1] = j
n_queens(col, i + 1)
def promising (i, col):
k = 1
flag = True
while (k < i and flag):
if (col[i] == col[k] or abs(col[i] - col[k]) == (i - k)):
flag = False
k += 1
return flag
n-Queens 문제를 백트래킹으로 푸는 방법은 이 영상[1]에 자세히 나오고, 위 소스 코드 구현에 대한 설명은 이 영상[2]에 나와 있다.