제가 정말 여쭤보고 싶은 것
헛매질
다소 제가 설명하는 것이 이해가 안대 실지라도 자세히 한번 읽어바 주셨으면 하네요.
여기서
|| ( == or ) 로 표시하고
& ( == and ) 로 표시 하겠습니다.
어떠한 프로그램을 짜려고 하는데,
예를 들면,NO.1 ( A || B|| C ) & ( D ||E ) &( F )이면박지성 이라는 단어 출력
NO.2 ( A || E || F ) &( B || C ) 이면 이영표 이라는 단어 출력
NO.3 ( A || Z ) & ( B ) & ( C ) & ( E ) 이면 이동국 이라는 단어 출력이 있다고 할때
여러 물음중 처음 선택을 유저가 A로 했을때,
위의 모든 것을 따져서 경제적인 질문 부터하고싶습니다.
위의 예를 보자면 A를 만족한다고 하면B나 C만 만족하면이영표라는 결론이
나는 NO.2에 대한 질문을 먼저 시작하면
제일 경제적인 방법이니 B나 C에 대한 질문을 하게되고,
B나 C를 만족하면 이영표라는 결론이 도출 되겠지만 아니라면, NO.3가 아닌것은 이미 결론이
났으니 NO.1에 대한 질문인F를 물어본뒤참이라면 D나 E를
거짓이라면 더이상질문을
못하게되는 과정을 만들고 싶습니다.
실제로는위와 같은 NO.1 ~NO.3가 적어도 100개 이상은 되고결론까지나게 되는
경우 또한많다고 할때
이런 프로그램을 짜려는제게 지금 필요한 지식이 무엇인지 좀 알려주셨으면 합니다.
좀더다르게 표현하자면
A라는 결과가 나기 위한 경우가 a1, a2 이고 a1 = { 1, 2, 3 } , a2 = { 4, 5, 6}
B라는 결과가 나기 위한 경우가 b1, b2 이고 b1 = { 1 , 7, 8} , b2 = { 9, 10, 2}
라고 할때 처음 선택이 1인 경우 다음 질문은 2나 7 중에 2를 물어보게 하고 싶습니다.
또,
별개로 C라는 결과가 나기위한 경우가 c1, c2 이고 c1 = {1,2,3,4}, c2 = {1, 5, 6}
라고 할때 처음 선택이 1인경우 다음질문은 3개를 물어보아야 C라는 결론이 나는 c1이 아닌
앞으로 5, 6 만 만족하는 것에 대해 c1보다 경제적으로 결론이 나는 c2에 대한 경로를 따르게 만들고 싶습니다.
이를 짜기 위해 저는 기초적인 책에 나오는자바지식과JDBC, 그리고 JESS라는 자바 기반 Rule-Based System을 공부하고 있는 학생
입니다.
처음에는일일이 경우의 수를 다 따져서 물어보게끔하면 할수 있을지 알고
하다가. 정말 바보 같은 짓이라는 것을 느끼고 다시 어떠한 법칙이나 알고리즘을
만들거나 이용해서해야겠다는 느낌을 느끼고는 있는데
어떻게 해야 댈지... 너무 막막한 기분에 한번 도움을 청해 보았습니다.
좋은 밤 대셔요
-
수국
음.. 제가보기에는 state패턴을 사용하셔서 프로그램을 만드시는게 가장 무난할듯 합니다.
NO1,2,3에 해당하는 룰을 만드시고 정보가 넘어오면 각각의 상태를 반영하여 행위를 수행하는 방식이..
그냥 풀라면;;; 머리에 쥐날듯싶어욤;; ㅎㅎ;;