한정 함수(Bounding Function)

N-Queens

N * N 체스 판에서 N개의 Queen을 서로 같은 행, 열, 대각선 위에 오지 않도록 배치.

K행에 배치된 Queen의 열 번호를 $x_k$라고 하면 결국 $(x_1, x_2, ..., x_n)$을 찾는 것과 동일

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/037fe028-7751-42f9-ab28-d212345a1741/Untitled.png

# pseudo code
def NQueens(k):    # x[k]를 결정
	if k >= N: return # 모든 x[k]가 결정 됨.
	for col in range(N):
		if queen can place at (k,c):    # x[k]에 놓을 수 있는가? -> 한계함수
				x[k] = c
				NQueens(k + 1)

1) N개의 퀸을 배치해야하므로 무조건 모든 행에 퀸이 들어가야한다.

2) 따라서 0열부터 N-1열까지 퀸을 놓는 방법을 for문을 통해 돌린다.

3) 유망한지(이전의 열로 인해 영향을 받는지) 검사하는 함수를 통해 유망함수만을 걸러준다.