[C언어 알고리즘] 6.1.1 순열 알고리즘의 경험(Heuristic)정보 설계
바구니에서 공을 꺼내는 순열 문제의 경험 정보는 꺼내지 않은 공의 집합과 꺼낸 공의 집합이라 할 수 있습니다.
여기에서는 동적 배열을 이용하여 꺼낸 공과 꺼내지 않은 공의 집합을 표현할게요. 동적 배열과 연결리스트, 스택에 관한 코드 설명은 이 책에서는 하지 않습니다. 디딤돌 자료구조 (C언어)를 참고하세요. 이에 관한 소스 코드는 6.1.4 순열 알고리즘 소스 코드에 있습니다.
typedef struct _Heuristic Heuristic;
struct _Heuristic
{
Array *ori_bucket;
Array *out_bucket;
};
초기 경험 정보를 생성하는 함수를 제공합시다. 이 함수에는 초기 바구니에 있는 공의 집합을 입력 인자로 전달받아야 합니다.
Heuristic *MakeInitHeuristic(Array *bucket);
동적으로 생성한 경험 정보를 소멸하는 함수도 제공합시다.
void DeleteHeuristic(Heuristic *now);
현재 경험 정보에서 다음 경험 정보들을 조사하는 함수도 제공해야 합니다. 입력 인자로 현재 경험 정보와 다음 경험 정보들을 보관할 동적 배열을 받기로 할게요.
void FindNextHeuristics(Heuristic *now, Array *next_heus);
원하는 결론에 도달했는지 확인하기 위해 꺼낸 공의 개수를 반환하는 함수도 제공합시다.
int GetOutCount(Heuristic *now);
그리고 꺼낸 공의 목록을 출력하는 함수도 제공합시다.
void ViewHeuristic(Heuristic *now);
'언어 자료구조 알고리즘 > 디딤돌 알고리즘 (C언어)' 카테고리의 다른 글
[C언어 알고리즘] 6.2.1 그래프 설계(DFS 알고리즘에 사용할 그래프) (0) | 2016.12.01 |
---|---|
[C언어 알고리즘] 6.2 깊이우선탐색(DFS) 알고리즘 (0) | 2016.12.01 |
[C언어 알고리즘] 6.1.4 순열 알고리즘 소스 코드 (0) | 2016.12.01 |
[C언어 알고리즘] 6.1.3 순열 알고리즘 테스트 코드 작성 (0) | 2016.12.01 |
[C언어 알고리즘] 6.1.2 순열 알고리즘의 경험 정보 구현 (0) | 2016.12.01 |
[C언어 알고리즘] 6.1 순열 알고리즘 (0) | 2016.12.01 |
[C언어 알고리즘] 6.동적 프로그래밍 (0) | 2016.12.01 |
[C언어 알고리즘] 5.4 인접 행렬로 표현한 그래프 소스 코드 (0) | 2016.12.01 |
[C언어 알고리즘] 5.3 진입 차수, 진출 차수 (0) | 2016.12.01 |
[C언어 알고리즘] 5.2.1 인접 행렬로 방향성 있는 그래프 소스 코드 (0) | 2016.12.01 |