무지개타고

해 찾기를 이용해 조합 구하기 본문

Program

해 찾기를 이용해 조합 구하기

OnRainbow 2009. 5. 28. 23:41
얼마 전 오픈오피스3.1이 출시되었다니, 새 버전으로 업데이트 해주고
간단한 문제(?)를 풀어보려 한다.

아래 12개의 산 중 내가 오른 산은 8개이고, 그 높이의 총합은 11,029m 이다.
어느어느 산을 올랐는지 찍어 보시오.



뜬금 없는 문제 같지만, 생각 만큼 어렵진 않다.

예전에 조합을 구하는 수식을 만든 적이 있는데, 이를 이용해 보면...
우선 총 조합의 경우의 수 2^12 만큼 조합을 구한다.
원래는 12C8 만큼의 조합만 있으면 되지만 밑천이 딸려, 이 수식은 아직 완성하지 못 했다.



i2 셀
=N(MOD(ROW($A1)-1;POWER(2;COLUMN(A$1)))+1<=POWER(2;COLUMN(A$1)-1))+STYLE(CURRENT())

u2 셀 (갯수)
=SUM(I2:T2)

v2 셀 (합계)
=MMULT(I2:T2;$B$2:$B$13)


참고로 i2 셀 수식에서 사용한 Style, Current 함수는 서식을 불러오기 위해 사용한 것이다.

그리고 필터를 이용해 조합을 찾는다.



그런데 이 방법은 좀 원시적인 방법이며 좀더 복잡한 선형계획에는 적용하기 어렵다.
이에 '해 찾기' 기능을 이용해 조합을 구해보자.
엑셀에만 '해 찾기' 기능이 있는게 아니다. 오픈오피스 캘크에도 있다.



그 결과는...
애석하게도 처리 불가. -_-;;



왜 선형이 아니라고 하는지 도무지 이해되진 않지만 처리 못 하겠단다.

혹시나해서 오픈오피스의 확장기능 사이트를 구경하다 찾았다.
뭘?
비선형의 해 찾기 확장기능을...



http://extensions.services.openoffice.org/project/NLPSolver

(아직 베타이지만) 내려받은 NLPSolver.oxt 파일을 실행만하면 설치 끝.

그리고 다시 '해 찾기'를 실행한다.
이때 '해 찾기' 대화상자에서 옵션을 눌러 조금 조정해 준다.



알고리즘이 두개가 추가 됐으나, 무슨 차이가 있는지 까진 확인하진 않았다.
봐도 모른다... -_-a




아무튼 알고리즘을 각각을 선택하면서 실행한 결과...
조건을 만족하는 조합 두개를 찾아냈다.
(앞서 구한 조합과 같다.)



그리고 혹시나해서 엑셀에서 같은 작업을 수행해 봤지만,
엑셀의 '해 찾기' 기능으로는 결과를 얻을 수 없었다.

단편적인 예제이지만, 이를 봐서는 선형계획 작업은 엑셀 보다
캘크의 해 찾기 기능이 좀더 유용할 것으로 여겨진다.

Comments