5 대 상용 알고리즘 의 4: 역 추적 법
역 추적 알고리즘 은 실제 적 으로 매 거 진 검색 시도 과정 과 유사 하 다. 주로 검색 시도 과정 에서 문제 의 해 를 찾 는 것 이다. 해결 조건 이 만족 하지 않 는 것 을 발견 하면 '역 추적' 으로 돌아 가 다른 경 로 를 시도 한다.
역 추적 법 은 우수한 검색 법 을 선택 하여 우수한 조건 에 따라 앞으로 검색 하여 목 표를 달성 하 는 것 이다.그러나 어떤 단 계 를 탐색 할 때 원래 의 선택 이 좋 지 않 거나 목 표를 달성 하지 못 한 것 을 발견 하면 한 걸음 물 러 서서 다시 선택한다. 이런 통 하지 않 으 면 되 돌아 가 는 기술 은 역 추적 법 이 고 역 추적 조건 을 만족 시 키 는 특정한 상태의 점 을 '역 추적 점' 이 라 고 한다.
많은 복잡 하고 규모 가 큰 문 제 는 모두 역 추적 법 을 사용 할 수 있 으 며 '통용 문제 풀이 방법' 이라는 미칭 이 있다.
2. 기본 사상
문 제 를 포함 하 는 모든 해 공간 트 리 에서 깊이 우선 검색 전략 에 따라 루트 노드 에서 공간 트 리 를 깊이 탐색 합 니 다.어떤 결점 을 탐색 할 때 먼저 이 결점 에 문제 의 해 가 포함 되 어 있 는 지 판단 하고 포함 되 어 있 으 면 이 결점 에서 출발 하여 계속 탐색 해 야 한다. 만약 에 이 결점 에 문제 의 해 가 포함 되 어 있 지 않 으 면 한 층 한 층 조상 결점 으로 거 슬러 올라간다.(사실 역 추적 법 은 암시 적 그림 의 깊이 에 대한 우선 검색 알고리즘 이다).
역 추적 법 으로 문제 의 모든 해 를 구 할 때 는 뿌리 로 거 슬러 올 라 가 야 하고, 뿌리 가 맺 힌 모든 실행 가능 한 자 수 는 모두 수색 되 어야 끝난다.
역 추적 법 으로 어떤 해 를 구 할 때 문제 의 해 를 찾 으 면 끝난다.
3. 역 추적 법 으로 문 제 를 푸 는 일반적인 절차:
(1) 주어진 문제 에 대해 문제 의 해결 공간 을 확인한다.
먼저 문제 의 해결 공간 을 명 확 히 정의 하고 문제 의 해결 공간 은 적어도 문제 의 하 나 를 포함해 야 한다.
(2) 노드 의 확장 검색 규칙 확인
(3) 깊이 우선 순위 로 공간 을 검색 하고 검색 과정 에서 가지치기 함수 로 잘못된 검색 을 피한다.
4. 알고리즘 프레임 워 크
(1) 문제 의 틀
문제 의 해 는 n 차원 벡터 (a1, a2,..., an) 이 고 제약 조건 은 ai (i = 1, 2, 3,...........................................................
(2) 비 재 귀 역 추적 프레임 워 크
1: int a[n],i;
2: a[];
3: i = 1;
4: while (i>0( ) and ( )) //
5: {
6: if(i > n) //
7: {
8: , ;
9: }
10: else // i
11: {
12: a[i] ;
13: while(a[i] )
14: {
15: a[i] ;
16: }
17: if(a[i] )
18: {
19: ;
20: i = i+1; //
21: }
22: else
23: {
24: ; //
25: i = i –1;
26: }
27: }
(3) 재 귀적 알고리즘 프레임 워 크
역 추적 법 은 해 공간의 깊이 에 대한 우선 검색 으로 일반적인 상황 에서 재 귀 함 수 를 사용 하여 역 추적 법 을 실현 하 는 것 이 비교적 간단 하 다. 그 중에서 i 는 검색 의 깊이 이 고 구 조 는 다음 과 같다.
1: int a[n];
2: try(int i)
3: {
4: if(i>n)
5: ;
6: else
7: {
8: for(j = ; j <= ; j=j+1) // i
9: {
10: if(fun(j)) //
11: {
12: a[i] = j;
13: ... //
14: try(i+1);
15: ( a[i] );
16: }
17: }
18: }
19: }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.