컴파일러 수업에서 CFG 문법을 배우는데, 마침 인공지능 수업에서 search 개념이 나오길래 적용해 보았다.

initial node 를 CFG 의 시작 노드로 잡고 goal node(solution) 를 sentence 로 잡으면 search method 를 적용할 수 있다.

사실  휴리스틱 정보도 없고 BLIND search 로 DFS/BFS 적용해본 거라서 인공지능... 까지 들먹일 수준은 아니다...-_-;; 그냥 개념이 그렇다고...

CFG 정보를 입력하면 depth-cutoff 가 적용된 DFS / BFS 를 이용하여 sentence 들을 출력한다.

루비로 구현하였고, 소스 코드는 http://codepad.org/oUfhz4ZO 에서 볼 수 있다.

cfg_sentence_generator.rb

ps. CSG 도 해보려 했는데... 생성규칙이 동시에 여러 개가 적용되는 경우 lhs 가 다를 수 있어서 그 부분을 고려해야 된다. 그래서 '귀찮아서' 하다 말았다 -_-;;

ps2. 사실 CSG 적용하다가 실수로 날려버렸다. 쩝쩝...
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Heart