
트리 구조의 CSP 문제를 풀 때 에서 으로 시간 복잡도를 줄일 수 있다. 이때 트리 구조라는 뜻은 제약조건 그래프 내에서 사이클이 없다는 뜻이다. 주어진 CSP가 트리 형태라면 다음과 같이 진행하자.

트리를 사이클이 없는 방향 그래프로 만든다. 루트를 중심으로 모든 연결된 간선을 "뻗어 나가는" 형태로 만들어야 한다. 루트 노드 A가 tail이 된 형태로 연결된 간선을 연결하고, topological sort를 통해 트리를 linearlize한다.
arc consistenc에 따라 backwards pass한다. 즉 부모 노드의 도메인 값이 변경되면 부모 노드와 연결된 노드의 도메인 값을 확인해야 한다. 가령 노드 A와 노드 B를 비교해할 때 A의 파란색 값이 제거되고, B와 C를 비교할 때 B의 초록색 값이 제거된다.

backwards pass에서 부모/자식 노드 간의 arc consistency를 확보했기 때문에 forward assignment 과정에서 어떤 색을 골라도 arc consistency가 사라지지 않는다. 즉 solution이 가능하다.
컷셋 알고리즘을 통해 위와 비슷하게 트리 형태 CSP를 풀 수 있다.
가장 작은 규모의 변수들, 컷셋(cutset)을 찾자. 아래 map-coloring 그래프에서 SA 노드를 제거하면 나머지 5개 노드는 트리가 된다. 즉 SA가 가장 작은 규모의 변수 집합, 컷셋이다.
컷셋 크기에 따른 백트래킹 비용과 트리 구조 알고리즘 비용의 곱이므로 이다. CSP를 brute force로 풀 때에는 이 필요하다는 점에서 효율적이다.따라서 충분히 작은 규모의 컷셋 c를 고를 수 있다면 곧바로 트리 알고리즘으로 CSP를 풀 수 있다. trade-off를 고려해 필터링과 정렬, 트리 알고리즘 중 CSP 풀이 방법을 선택하자.
로컬 탐색 역시 백트래킹과 같이 CSP를 푸는 유용한 알고리즘이다. 최소 충돌 휴리스틱(min-conflicts heuristic)을 사용해 가장 제약 조건과 충돌이 적은 값을 변수에 반복적으로 할당해가며 답을 찾을 수 있다.

위 N-queens 문제에서 h는 퀸 사이에서 발생하는 가능한 충돌의 수로, 각 변수 퀸을 확인할 때 이를 최소화하는 값을 할당하면서 퀸의 위치를 변경한다. 반복적으로 값을 할당하면서 h==0이라는 문제 해결 상태에 도달할 때까지 로컬 탐색이 반복된다.

하지만 로컬 탐색은 백트래킹 알고리즘과 달리 특정 조건을 만족하지 못할 때 최적의 답을 찾지 못할 수 있다. CSP 문제의 제약 조건과 변수의 수 비율 R에 따라서 로컬 탐색에 사용되는 비용이 매우 비싸기 때문이다.
CSP 문제를 해결하는 알고리즘이 백트래킹만이 아니라 로컬 탐색 역시 있다는 사실만 기억해두자. 하지만 로컬 탐색은 특정 조건에서 매우 실용적이지 못할 수 있다.