cartesian product을 구하는 알고리즘
글쓴이: lacovnk / 작성시간: 목, 2005/10/13 - 1:48오후
난감합니다 -o-
A1, A2,...An의 카티션 곱을 구하는데,
각각의 도메인은 D1,D2,...Dn이라고 하고, 각각 값이 a1,a2..an이라고 합시다.
간단히 다음과 같이 모든 경우를 찾을 수 있을 것입니다.
for each A1 for each A2 .... for each An print a1,a2,...an
문제는, n이 변할수 있기 때문에, 이렇게 프로그램을 짤 수 없다는 점입니다! -o-
어떻게 구현하면 좋을까요? 음음..
재귀를 사용하려는데..
cartesian product(A,B) // A is relations & B is set of Domain if B is only one set -for each A --for each B ---add tuple (A,B) to result -return result else cartesian product(cartesian product(A,B[0]),left of B) call cartesian product (A1,(A2...An))
어떤가요? 음음..
Forums:
음..
혹시
이것을 이용하여 구현할 수 있을까요?
c++ 구현 예제입니다; 잘 돌아가는 것 같군요;
순열을 이용해서 구합니다.
A1, A2,...An의 카티션 곱을 구하는데,
각각의 도메인은 D1,D2,...Dn이라고 하고, 각각 값이 a1,a2..an이라고 합시다.
모든 경우를 구하려면, 1부터 size of result까지 값을 index로 돌리면 되겠군요~
....조합으로 간단히 되는군요;
댓글 달기