³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î

 

ÇÁ·Î±×·¡¹Ö ¾ð¾î·Ð : Robert W. Sebesta ¿øÀú, À¯¿øÈñ.ÇÏ»óÈ£ ¿ª, È«¸ª°úÇÐÃâÆÇ»ç, 1999 (¿ø¼­ : Concepts of Programming Languages, 4th ed), Page 701~740

 

1. ¼­·Ð

2. ¼ú¾î Çؼ®ÇÐ

     (1) ¸íÁ¦

     (2) Ŭ·ÎÁî Çü½Ä

3. ¼ú¾î Çؼ®Çаú Á¤¸® Áõ¸í

4. ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ °³°ü

5. Prolog ÀÇ ±â¿ø

6. Prolog ÀÇ ±âº» ¿ø¼Ò

     (1) Ç×

     (2) »ç½Ç ¹®

     (3) ±ÔÄ¢¹®

     (4) ¸ñÀû¹®

     (5) Prolog ÀÇ Ãß·Ð °úÁ¤

     (6) °£´ÜÇÑ »ê¼ú ¿¬»ê

     (7) ¸®½ºÆ® ±¸Á¶

7. Prolog ÀÇ °áÁ¡

     (1) ÇØ µµÃâ ¼ø¼­ Á¦¾î

     (2) ´ÝÈù ¼¼°è °¡Á¤

     (3) ºÎÁ¤ ¹®Á¦

     (4) º»ÁúÀûÀÎ ÇÑ°è

8. ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ÀÀ¿ë

     (1) °ü°èÇü µ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛ

     (2) Àü¹®°¡ ½Ã½ºÅÛ

     (3) ÀÚ¿¬¾î ó¸®

     (4) ±³À°

9. °á·Ð

¿äÁ¡ Á¤¸®

Âü°í ¹®Çå

º¹½À ¹®Á¦

¿¬½À ¹®Á¦

 

ÀÌ ÀåÀÇ ¸ñÀûÀº ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ °³³ä°ú Prolog ºÎºÐ ÁýÇÕÀÇ °£°áÇÑ ±â¼úÀ» Æ÷ÇÔÇÏ¿© ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¼Ò°³ÇÏ´Â °ÍÀÌ´Ù. ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ±âÃÊ°¡ µÇ´Â ¼ú¾î Çؼ®ÇÐ (Predicate calculus) ÀÇ ¼Ò°³·Î ½ÃÀÛÇÑ´Ù. µÚÀÌ¾î ¼ú¾î Çؼ®ÇÐÀÌ ÀÚµ¿ Á¤¸® Áõ¸í ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÉ ¼ö ÀÖ´Â ¹æ¹ýÀ» ³íÀÇÇÑ´Ù. ±× ÈÄ¿¡, ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ÀüüÀûÀÎ °³°üÀ» ¼Ò°³ÇÑ´Ù. ´ÙÀ½À¸·Î, ±ä ÀýÀº »ê¼ú, ¸®½ºÆ® 󸮸¦ Æ÷ÇÔÇÑ Prolog ÇÁ·Î±×·¡¹ÖÀÇ ±âÃÊ¿Í ÇÁ·Î±×·¥À» µð¹ö±ëÇÏ´Â µ¥ µµ¿òÀ» ÁÖ°í Prolog ½Ã½ºÅÛÀÌ µ¿ÀÛÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ´Â µ¥ »ç¿ëµÇ´Â ÃßÀû µµ±¸ÀÇ »ç¿ëÀ» ¼Ò°³ÇÑ´Ù. ¸¶Áö¸· µÎ ÀýÀº ³í¸® ¾ð¾î·Î¼­ Prolog ÀÇ ¹®Á¦Á¡°ú Prolog °¡ »ç¿ëµÇ°í ÀÖ´Â ÀÀ¿ë ºÐ¾ß¸¦ ±â¼úÇÑ´Ù.

1. ¼­·Ð

14 ÀåÀº ¸í·ÉÇü ¾ð¾î¿¡¼­ »ç¿ëµÈ ¼ÒÇÁÆ®¿þ¾î °³¹ß ¹æ¹ý·Ð°ú ¸Å¿ì ´Ù¸¥ ÇÔ¼ö ÇÁ·Î±×·¡¹Ö Æз¯´ÙÀÓÀ» ³íÀÇÇß´Ù. ÀÌ Àå¿¡¼­´Â ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¹æ¹ý·ÐÀ» ±â¼úÇÑ´Ù. ÀÌ °æ¿ì¿¡¼­ Á¢±Ù ¹æ¹ýÀº ÇÁ·Î±×·¥À» ±âÈ£ ³í¸®ÀÇ Çü½ÄÀ¸·Î Ç¥ÇöÇÏ°í °á°ú¸¦ µµÃâÇÏ´Â ³í¸®Àû Ãß·Ð °úÁ¤À» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ³í¸® ÇÁ·Î±×·¥Àº ÀýÂ÷ÀûÀ̶ó±âº¸´Ù´Â ¼±¾ðÀûÀÌ´Ù. ±×°ÍÀº °á°ú¸¦ µµÃâÇϱâ À§ÇÑ ¼¼ºÎÀûÀÎ ÀýÂ÷°¡ ¾Æ´Ï¶ó ¿øÇÏ´Â °á°úÀÇ ¸í¼¼°¡ ¼­¼úµÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î¼­ ±âÈ£ ³í¸®ÀÇ Çü½ÄÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¹ÖÀº ³í¸® ÇÁ·Î±×·¡¹Ö (logic Programming language) ¶Ç´Â ¼±¾ðÀû ¾ð¾î (declarative language) ¶ó ºÒ¸°´Ù. ¿ì¸®´Â ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ±â¼úÇϱâ À§ÇØ Prolog ¸¦ ¼±ÅÃÇß´Ù. ¿Ö³ÄÇϸé Prolog ´Â ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ´Â À¯ÀÏÇÑ ¾ð¾îÀ̱⠶§¹®ÀÌ´Ù.

³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ±¸¹®Àº ¸í·ÉÇü ¾ð¾î³ª ÇÔ¼ö ¾ð¾îÀÇ ±¸¹®°ú´Â ÇöÀúÇÏ°Ô ´Ù¸£´Ù. ³í¸® ÇÁ·Î±×·¥ÀÇ Àǹ̴ ¸í·ÉÇü ¾ð¾î ÇÁ·Î±×·¥ÀÇ ÀÇ¹Ì¿Í °ÅÀÇ ´àÁö ¾Ê¾Ò´Ù. ÀÌ·± °üÂûÀº µ¶ÀÚ¿¡°Ô ³í¸® ÇÁ·Î±×·¡¹Ö°ú ¼±¾ðÇü ¾ð¾îÀÇ º»Áú¿¡ °üÇØ È£±â½ÉÀ» À¯¹ß½ÃŲ´Ù.

2. ¼ú¾î Çؼ®ÇÐ

³í¸® ÇÁ·Î±×·¡¹ÖÀ» ³íÀÇÇϱâ Àü¿¡ ±âÃÊÀÎ Çü½Ä ³í¸®¸¦ °£´ÜÇÏ°Ô Á¶»çÇÏ°íÀÚ ÇÑ´Ù. ÀÌ°ÍÀÌ ÀÌ Ã¥¿¡¼­ Çü½Ä³í¸®¿¡ óÀ½ Á¢ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. Çü½Ä ³í¸®´Â 3 Àå¿¡¼­ ¼­¼úÇÑ °ø¸® Àǹ̷Р(axiomatic semantics) ¿¡¼­ ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ¾ú´Ù.

¸íÁ¦ (proposition) ´Â ÂüÀ̰ųª °ÅÁþÀÎ ³í¸®Àû ¹®ÀåÀ̶ó°í »ý°¢µÉ ¼ö ÀÖ´Ù. ¸íÁ¦´Â °´Ã¼¿Í °´Ã¼ »óÈ£°£ÀÇ °ü°è·Î ±¸¼ºµÈ´Ù. Çü½ÄÀûÀ¸·Î ¾ð±ÞµÈ ¸íÁ¦ÀÇ À¯È¿¼ºÀÌ °Ë»çµÇ´Â °ÍÀ» Çã¿ëÇÒ ¸ñÀûÀ¸·Î, Çü½Ä ³í¸®´Â ¸íÁ¦¸¦ ±â¼úÇϱâ À§ÇÑ ¹æ¹ýÀ» Á¦°øÇϱâ À§ÇØ °³¹ßµÇ¾ú´Ù.

±âÈ£ ³í¸® (Symbolic logic) ´Â Çü½Ä ³í¸®ÀÇ ¼¼ °¡Áö ±âº» ¿ä±¸ - ¸íÁ¦ Ç¥Çö, ¸íÁ¦ »çÀÌÀÇ °ü°è Ç¥Çö, ÂüÀ̶ó°í ÃßÁ¤µÇ´Â ¸íÁ¦ÀÇ Ãʱâ ÁýÇÕ (initial set) ÀÌ´Ù. Á¤¸®´Â Ãʱâ ÁýÇÕÀ¸·ÎºÎÅÍ Ãß·ÐµÉ ¼ö ÀÖ´Â ºÎ°¡ÀûÀÎ ¸íÁ¦ÀÌ´Ù.

³í¸® ÇÁ·Î±×·¡¹ÖÀ» À§ÇØ »ç¿ëµÈ ±âÈ£ ³í¸®ÀÇ Æ¯º°ÇÑ Çü½ÄÀ» ¼ú¾î Çؼ®ÇÐ (predicate calculus) À̶ó ºÎ¸¥´Ù. ´ÙÀ½ºÎÀý¿¡¼­, ¿ì¸®´Â ¼ú¾î Çؼ®ÇÐÀ» °£´ÜÈ÷ ¼Ò°³ÇÑ´Ù. ¿ì¸®ÀÇ ¸ñÀûÀº ³í¸® ÇÁ·Î±×·¡¹Ö°ú ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î Prolog ÀÇ ³íÀǸ¦ À§ÇÑ ±âÃʸ¦ ÁغñÇÏ´Â °ÍÀÌ´Ù.

(1) ¸íÁ¦

³í¸® ÇÁ·Î±×·¡¹Ö ¸íÁ¦¿¡¼­ °´Ã¼´Â »ó¼ö³ª º¯¼öÀÎ ´Ü¼øÇÑ Ç׿¡ ÀÇÇؼ­ Ç¥ÇöµÈ´Ù. »ó¼ö´Â °´Ã¼¸¦ Ç¥ÇöÇÏ´Â ±âÈ£À̸ç, º¯¼ö´Â, ºñ·Ï ¾î´À Àǹ̿¡¼­ ¸í·ÉÇü ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ º¯¼öº¸´Ù ¼öÇп¡ Á»´õ °¡±î¿ïÁö¶óµµ, °¢±â ´Ù¸¥ ½Ã°£¿¡ ´Ù¸¥ °´Ã¼¸¦ Ç¥ÇöÇÏ´Â ±âÈ£ÀÌ´Ù.

±âº» ¸íÁ¦ (atomic propositions) ¶ó ºÒ¸®´Â °¡Àå °£´ÜÇÑ ¸íÁ¦´Â º¹ÇÕ Ç×À¸·Î ±¸¼ºµÈ´Ù. º¹ÇÕ Ç× (Compound term) Àº ¼öÇÐ °ü°èÀÇ ¿ø¼ÒÀ̸ç, ¼öÇÐ ÇÔ¼ö ±âÈ£ÀÇ ¸ð¾çÀ» °®´Â Çü½ÄÀ¸·Î ¾²¿©Áø´Ù. ¼öÇÐ ÇÔ¼ö´Â Ç¥Çö½Ä, Æ©ÇÃÀÇ Å×À̺í, ¶Ç´Â Æ©Çà ¸®½ºÆ®·Î Ç¥ÇöµÈ »ç»óÀ̶ó´Â °ÍÀ» 14 ÀåÀ¸·ÎºÎÅÍ »ó±âÇÏÀÚ. ±×·¯¹Ç·Î º¹ÇÕ Ç×Àº ÇÔ¼öÀÇ Å×À̺í Á¤ÀÇÀÇ ¿ø¼ÒÀÌ´Ù.

º¹ÇÕ Ç×Àº µÎ ºÎºÐÀ¸·Î ±¸¼ºµÈ´Ù. °ü°è¸¦ ¸í¸íÇÏ´Â ÇÔ¼ö ±âÈ£ÀÎ ÀÛ¿ëÀÚ (functor) ¿Í ¸Å°³º¯¼öÀÇ ¼ø¼­È­ ¸®½ºÆ®ÀÌ´Ù. ´ÜÀÏ ¸Å°³º¯¼ö¸¦ °®´Â º¹ÇÕ Ç×Àº 1-Æ©ÇÃÀÌ°í, µÎ °³ÀÇ ÀÎÀÚ¸¦ °®´Â º¹ÇÕ Ç×Àº 2-Æ©ÇÃÀÌ´Ù. °°Àº ¹æ¹ýÀ¸·Î °è¼ÓµÈ´Ù. ¿¹·Î µé¸é, µÎ °³ÀÇ ¸íÁ¦

   man (jake)
   like (bob, steak)

ÀÌ ÀÖ´Ù°í ÇÏÀÚ. ¿©±â¼­ {jake} ´Â man À̶ó°í ¸í¸íµÈ °ü°èÀÇ 1-Æ©ÇÃÀÌ°í, {bob, steak} ´Â like ¶ó°í ¸í¸íµÈ °ü°èÀÇ 2-Æ©ÇÃÀÌ´Ù. ¸¸¾à ¿ì¸®°¡ ¸íÁ¦

    man (fred)

¸¦ À§ÀÇ µÎ ¸íÁ¦¿¡ ÷°¡Çϸé, °ü°è man Àº µÎ °³ÀÇ ´Ù¸¥ ¿ø¼ÒÀÎ {jake} ¿Í {fred} ¸¦ °®´Â´Ù. ÀÌ·± ¸íÁ¦¿¡¼­ ¸ðµç °£´ÜÇÑ Ç× - man, jake, like, bob, ±×¸®°í steak - Àº »ó¼öÀÌ´Ù. ÀÌ·± ¸íÁ¦´Â º»ÁúÀûÀÎ Àǹ̸¦ °®Áö ¾ÊÀ½¿¡ À¯ÀÇÇ϶ó. ±×°ÍµéÀº ¿ì¸®°¡ ÀǹÌÇÏ°íÀÚ ÇÏ´Â °ÍÀ» ³ªÅ¸³½´Ù. ¿¹·Î µé¸é, À§¿¡¼­ µÎ¹ø° ¿¹Á¦´Â bob ÀÌ steak ¸¦ ÁÁ¾ÆÇϰųª, ¶Ç´Â steak °¡ bob À» ÁÁ¾ÆÇϰųª, bob ÀÌ ¾î¶² ¸é¿¡¼­ steak ¿Í ºñ½ÁÇÏ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

¸íÁ¦´Â µÎ °¡Áö ¾ç½Ä (mode) À¸·Î ³ªÅ¸³¾ ¼ö ÀÖ´Ù. ¸íÁ¦°¡ ÂüÀ¸·Î Á¤ÀǵǴ ¾ç½Ä°ú, ¸íÁ¦ÀÇ Áø¸® °ªÀÌ °áÁ¤µÉ ¼ö ÀÖ´Â ¾ç½ÄÀÌ´Ù. ´Ù½Ã ¸»Çϸé, ¸íÁ¦´Â »ç½ÇÀ̳ª ÁúÀǸ¦ ³ªÅ¸³½´Ù. À§ÀÇ ¸íÁ¦´Â »ç½ÇÀ̳ª ÁúÀÇÀÏ ¼ö ÀÖ´Ù.

º¹ÇÕ ¸íÁ¦ (compound proposition) ´Â º¹ÇÕ ³í¸®½ÄÀÌ ¸í·ÉÇü ¾ð¾î¿¡¼­ ±¸¼ºµÈ °Í°ú µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ³í¸® ¿¬°áÀÚ Áï ¿¬»êÀÚ¿¡ ÀÇÇØ ¿¬°áµÈ µÎ °³ ¶Ç´Â ±× ÀÌ»óÀÇ ±âº» ¸íÁ¦ (atom proposition) ¸¦ °¡Áö°í ÀÖ´Ù. ¼ú¾î Çؼ®ÇÐÀÇ ³í¸®Àû ¿¬°áÀÚ (logical connector) ÀÇ À̸§, ±âÈ£, Àǹ̴ ´ÙÀ½°ú °°´Ù.

À̸§

±âÈ£

¿¹Á¦

ÀǹÌ

ºÎÁ¤

³í¸®°ö

³í¸®ÇÕ

µ¿µî

ÇÔÃà

 

¡þ

¡û

¡ú

¡Õ

¡ù

¡ø

¡þa

a ¡û b

a ¡ú b

a ¡Õ b

a ¡ù b

a ¡ø b

a °¡ ¾Æ´Ï´Ù.

a ±×¸®°í b

a ¶Ç´Â b

a ´Â b ¿Í µ¿Ä¡ÀÌ´Ù.

a ´Â b ¸¦ Æ÷ÇÔÇÑ´Ù.

b ´Â a ¸¦ Æ÷ÇÔÇÑ´Ù.

´ÙÀ½Àº º¹ÇÕ ¸íÁ¦ÀÇ ¿¹Á¦ÀÌ´Ù.

    a ¡û b ¡ù c

    a ¡û ¡þb ¡ù d

¿¬»êÀÚ ¡þ Àº °¡Àå ³ôÀº ¿¬»êÀÚ ¿ì¼± ¼øÀ§¸¦ °®´Â´Ù. ¿¬»ê ¡û, ¡ú °ú ¡Õ Àº ¸ðµÎ ¡ù °ú ¡ø º¸´Ù ³ôÀº ¿¬»êÀÚ ¿ì¼± ¼øÀ§¸¦ °®´Â´Ù. ±×·¡¼­ À§ÀÇ µÎ¹ø° ¿¹Á¦´Â

    (a ¡û (¡þb)) ¡ù d

°ú µ¿Ä¡¸¦ ÀÌ·é´Ù.

º¯¼ö´Â ÇÑÁ¤»ç (quantifier) ¶ó ºÒ¸®´Â Ưº°ÇÑ ±âÈ£¿¡ ÀÇÇØ ±â¼úµÉ ¶§¸¸ ¸íÁ¦¿¡ ³ªÅ¸³­´Ù. ¼ú¾î Çؼ®ÇÐÀº ´ÙÀ½¿¡¼­ ±â¼úµÇ´Â µÎ °³ÀÇ ÇÑÁ¤»ç¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¿©±â¼­ X ´Â º¯¼öÀÌ°í, P ´Â ¸íÁ¦ÀÌ´Ù.

À̸§

¿¹Á¦

ÀǹÌ

ÀüĪ ÇÑÁ¤»ç

Á¸Àç ÇÑÁ¤»ç

¢£X.P

¢¤X.P

¸ðµç X ¿¡ ´ëÇÏ¿© P ´Â ÂüÀÌ´Ù.

P °¡ ÂüÀÎ X °¡ Á¸ÀçÇÑ´Ù.

X ¿Í P »çÀÌÀÇ ¸¶Ä§Ç¥ ( .) ´Â ¸íÁ¦¿¡¼­ º¯¼ö¸¦ °£´ÜÇÏ°Ô ºÐ¸®ÇÑ´Ù. ¿¹·Î, ´ÙÀ½À» »ý°¢Çغ¸ÀÚ.

    ¢£X. (woman (X) ¡ù human (X))
    ¢¤X. mother (mary, X) ¡û male (X))

ù¹ø° ¸íÁ¦´Â X ÀÇ ¸ðµç °ª¿¡ ´ëÇØ, ¸¸¾à X °¡ ¿©ÀÚ¸é, X ´Â »ç¶÷À̶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù. µÎ¹ø° ¸íÁ¦´Â mary ´Â X ÀÇ ¾î¸Ó´ÏÀÌ°í, X ´Â ³²ÀÚÀÎ X ÀÇ °ªÀÌ Á¸ÀçÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ´Ù½Ã ¸»Çϸé, mary ¿¡°Ô´Â ¾ÆµéÀÌ ÀÖ´Â °ÍÀÌ´Ù. ÀüĪ (universal) °ú Á¸Àç (existential) ÇÑÁ¤»çÀÇ ¿µ¿ªÀº ÇÑÁ¤»ç°¡ ÷ºÎµÈ ±âº» ¸íÁ¦ÀÌ´Ù. ±×·± ¿µ¿ªÀº ¹æ±Ý ¼­¼úÇÑ µÎ °³ÀÇ ¸íÁ¦Ã³·³ °ýÈ£¸¦ »ç¿ëÇؼ­ È®ÀåµÈ´Ù. ±×·¡¼­ ÀüĪ ÇÑÁ¤»çÀÇ Á¸Àç ÇÑÁ¤»ç´Â ´Ù¸¥ ¿¬»êÀڵ麸´Ù ³ôÀº ¿¬»êÀÚ ¿ì¼± ¼øÀ§¸¦ °®´Â´Ù.

(2) Ŭ·ÎÁî Çü½Ä

¿ì¸®´Â ¼ú¾î Çؼ®ÇÐÀÌ ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ±âÃÊÀ̱⠶§¹®¿¡ ¼ú¾î Çؼ®ÇÐÀ» ³íÀÇÇÏ°í ÀÖ´Ù. ´Ù¸¥ ¾ð¾î¿Í ¸¶Âù°¡Áö·Î, ³í¸® ¾ð¾î´Â Áߺ¹ (redundancy) ÀÌ ±âÃÊÈ­µÈ °ÍÀ» ÀǹÌÇÏ´Â Á¦ÀÏ ´Ü¼øÇÑ Çü½ÄÀÌ °¡Àå ÁÁ´Ù.

Áö±Ý±îÁö ¼­¼úÇÑ ¼ú¾î Çؼ®ÇÐÀÇ ¹®Á¦´Â µ¿ÀÏÇÑ Àǹ̸¦ °®´Â ¸íÁ¦¸¦ Ç¥ÇöÇÏ´Â ´Ù¸¥ ¹æ¹ýÀÌ ³Ê¹« ¸¹´Ù´Â °ÍÀÌ´Ù. Áï Áߺ¹ÀÌ ³Ê¹« ¸¹ÀÌ Á¸ÀçÇÑ´Ù. ÀÌ°ÍÀº ³í¸®ÇÐÀÚ¿¡°Ô´Â ¹®Á¦°¡ µÇÁö ¾ÊÁö¸¸, ¸¸¾à ¼ú¾î Çؼ®ÇÐÀÌ ÀÚµ¿È­µÈ ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÈ´Ù¸é, ±×°ÍÀº ½É°¢ÇÑ ¹®Á¦ÀÌ´Ù. ¹®Á¦¸¦ ´Ü¼øÈ­Çϱâ À§ÇØ ¸íÁ¦ÀÇ Ç¥ÁØ Çü½ÄÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. »ó´ëÀûÀ¸·Î ¸íÁ¦ÀÇ °£´ÜÇÑ Çü½ÄÀΠŬ·ÎÁî Çü½Ä (clausal form) Àº Ç¥ÁØ Çü½ÄÁßÀÇ ÇϳªÀÌ´Ù. ÀϹݼºÀ» ÀÒÁö ¾Ê°í, ¸ðµç ¸íÁ¦´Â Ŭ·ÎÁî Çü½ÄÀ¸·Î Ç¥ÇöµÉ ¼ö ÀÖ´Ù. Ŭ·ÎÁî Çü½Ä¿¡¼­ ¸íÁ¦´Â ¾Æ·¡¿Í °°Àº ÀϹÝÀûÀÎ ±¸¹®À» °®´Â´Ù.

    

¿©±â¼­ A ¿Í B ´Â Ç×ÀÌ´Ù. ÀÌ·± Ŭ·ÎÁî Çü½Ä ¸íÁ¦ÀÇ Àǹ̴ ´ÙÀ½°ú °°´Ù. ¸¸¾à ¸ðµç A °¡ ÂüÀ̸é, Àû¾îµµ ÇϳªÀÇ B ´Â ÂüÀÌ´Ù. Ŭ·ÎÁî Çü½Ä ¸íÁ¦ÀÇ ±âº»ÀûÀΠƯ¼ºÀº ´ÙÀ½°ú °°´Ù. Á¸Àç ÇÑÁ¤»ç´Â ¿ä±¸µÇÁö ¾Ê°í, ÀüĪ ÇÑÁ¤»ç´Â ±âº» ¸íÁ¦ÀÇ º¯¼ö »ç¿ë¿¡¼­ ¹¬½ÃÀûÀÌ°í, ³í¸®°ö (conjunction) °ú ³í¸®ÇÕ (disjunction) ÀÌ¿ÜÀÇ ´Ù¸¥ ¿¬»êÀÚ´Â ¿ä±¸µÇÁö ¾Ê´Â´Ù. ¹°·Ð, ³í¸®°ö°ú ³í¸®ÇÕÀº ÀϹÝÀûÀΠŬ·ÎÁî Çü½Ä¿¡¼­ º¸¿©Áø ¼ø¼­·Î ³ªÅ¸³ª´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. ³í¸®ÇÕÀº ¿ÞÂÊ¿¡ ³í¸®°öÀº ¿À¸¥ÂÊ¿¡ À§Ä¡ÇÑ´Ù. ¸ðµç ¼ú¾î Çؼ®ÇÐ ¸íÁ¦´Â ¾Ë°í¸®Áò¿¡ ÀÇÇØ Å¬·ÎÁî Çü½ÄÀ¸·Î º¯È¯µÈ´Ù. Nilsson (1971) Àº º¯È¯À» ¼öÇàÇϱâ À§ÇÑ °£´ÜÇÑ º¯È¯ ¾Ë°í¸®Áò°ú ¾Ë°í¸®ÁòÀÌ Á¦´ë·Î ¼öÇàµÈ´Ù´Â °ÍÀ» Áõ¸íÇÏ¿´´Ù.

Ŭ·ÎÁî Çü½Ä ¸íÁ¦ÀÇ ¿ìº¯À» ÀüÁ¦ (antecedent) ¶ó ºÎ¸£¸ç, Áº¯Àº ÀüÁ¦ Áø¸® °ªÀÇ °á°úÀ̱⠶§¹®¿¡ °á·Ð (consequent) À̶ó ºÒ¸°´Ù. Ŭ·ÎÁî Çü½Ä ¸íÁ¦ÀÇ ¿¹Á¦·Î¼­ ´ÙÀ½À» »ý°¢ÇØ º¸ÀÚ.

    likes (bob, trout) ¡ø likes (bob, fish) ¡û fish (trout)

    father (louis, al) ¡ú father (louis, violet) ¡ø father (al, bob) ¡û mother (violet, bob) ¡û grandfather (louis, bob)

ù¹ø° ¿¹Á¦¿¡´Â ¸¸¾à bob ÀÌ fish ¸¦ ÁÁ¾ÆÇÏ°í, trout °¡ fish À̸é, bob Àº trout À» ÁÁ¾ÆÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù. µÎ¹ø° ¿¹Á¦´Â ¸¸¾à al ÀÌ bob ÀÇ ¾Æ¹öÁöÀÌ°í violet ÀÌ bob ÀÇ ¾î¸Ó´ÏÀÌ°í louis °¡ bob ÀÇ ÇҾƹöÁö¶ó¸é, louis ´Â al ÀÇ ¾Æ¹öÁöÀ̰ųª violet ÀÇ ¾Æ¹öÁöÀÌ´Ù¸¦ ³ªÅ¸³½´Ù.

3. ¼ú¾î Çؼ®Çаú Á¤¸® Áõ¸í

¼ú¾î Çؼ®ÇÐÀº ¸íÁ¦ÀÇ ÁýÇÕÀ» Ç¥ÇöÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ¸íÁ¦ ÁýÇÕÀÇ »ç¿ëÀº ¾î¶² Èï¹Ì·Ó°Å³ª À¯¿ëÇÑ »ç½ÇÀÌ ¸íÁ¦ ÁýÇÕÀ¸·ÎºÎÅÍ Ãß·ÐµÉ ¼ö ÀÖ´ÂÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ÀÌ¹Ì ¾Ë·ÁÁø Á¤¸®³ª °ø¸®·ÎºÎÅÍ Ãß·ÐµÉ ¼ö ÀÖ´Â »õ·Î¿î Á¤¸®¸¦ ¹ß°ßÇÒ·Á°í ³ë·ÂÇÏ´Â ¼öÇÐÀÚÀÇ ¿¬±¸¿Í ¾ÆÁÖ À¯»çÇÏ´Ù.

ÄÄÇ»ÅÍ °úÇÐÀÇ Ãʱâ½Ã´ë (1950 ³â´ë ~ 1960 ³â´ë ÃÊ) ¿¡´Â Á¤¸® Áõ¸í °úÁ¤À» ÀÚµ¿È­ÇÏ´Â µ¥ ¸¹Àº Èï¹Ì¸¦ º¸¿´´Ù. ÀÚµ¿ Á¤¸® Áõ¸í¿¡¼­ °¡Àå Áß¿äÇÑ µ¹Æı¸´Â Syracuse ´ëÇÐÀÇ Alan Robinson ¿¡ ÀÇÇØ ÇØ µµÃâ ¿ø¸® (resolution principle) ÀÇ ¹ß°ßÀÌ´Ù (Robinson, 1965).

ÇØ µµÃâ (resolution) Àº Ãß·ÐµÈ ¸íÁ¦°¡ ÁÖ¾îÁø ¸íÁ¦·ÎºÎÅÍ °è»êµÇ´Â °ÍÀ» Çã¿ëÇÏ´Â Ãß·Ð ±ÔÄ¢ÀÌ´Ù. µû¶ó¼­ ÇصµÃâÀº ÀÚµ¿ Á¤¸® Áõ¸í¿¡ Àû¿ë °¡´ÉÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ÇØ µµÃâÀº Ŭ·ÎÁî Çü½ÄÀÇ ¸íÁ¦¿¡ Àû¿ëÇϱâ À§ÇØ °í¾ÈµÇ¾ú´Ù. ÇصµÃâÀÇ °³³äÀº ´ÙÀ½°ú °°´Ù. ´ÙÀ½°ú °°Àº Çü½ÄÀ» µÎ °³ÀÇ ¸íÁ¦°¡ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.

    

ÀÌ°ÍÀº °¡ À» Æ÷ÇÔÇÏ°í, °¡ À» Æ÷ÇÔÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ´õ¿íÀÌ ÀÌ ¿Í µ¿ÀÏÇÏ´Ù°í Çϸé, ¿ì¸®´Â °ú ¸¦ T ·Î ´Ù½Ã ¾µ ¼ö ÀÖ´Ù°í °¡Á¤ÇÏÀÚ. ±×·¯¸é, ¿ì¸®´Â ´ÙÀ½°ú °°ÀÌ µÎ °³ÀÇ ¸íÁ¦¸¦ ´Ù½Ã ¾µ ¼ö ÀÖ´Ù.

    

ÀÌÁ¦, °¡ T ¸¦ Æ÷ÇÔÇÏ°í, T °¡ À» Æ÷ÇÔÇϱ⠶§¹®¿¡, ¾Æ·¡¿¡ ¾´ °Íó·³, ³í¸®ÀûÀ¸·Î ¸í¹éÈ÷ °¡ À» Æ÷ÇÔÇÑ´Ù.

    

¿ø·¡ÀÇ µÎ ¸íÁ¦·ÎºÎÅÍ ÀÌ ¸íÁ¦¸¦ Ãß·ÐÇÏ´Â ¹æ¹ýÀÌ ÇØ µµÃâÀÌ´Ù.

´Ù¸¥ ¿¹·Î¼­, ´ÙÀ½ µÎ °³ÀÇ ¸íÁ¦¸¦ »ý°¢ÇØ º¸ÀÚ.

    older (joanne, jake) ¡ø mother (joanne, jake)

ÀÌ ¸íÁ¦·ÎºÎÅÍ, ´ÙÀ½ÀÇ ¸íÁ¦°¡ ÇØ µµÃâÀ» »ç¿ëÇؼ­ ¸¸µé¾îÁú ¼ö ÀÖ´Ù.

    wiser (joanne, jake) ¡ø mother (joanne, jake)

ÀÌ·± ÇØ µµÃâÀÇ ±¸¼º ¸ÞÄ«´ÏÁòÀº °£´ÜÇÏ´Ù. µÎ ¸íÁ¦ÀÇ Áº¯ÀÇ Ç×Àº »õ·Î¿î ¸íÁ¦ÀÇ Áº¯À» ¸¸µé±â À§ÇØ ÇÔ²² AND ¿¬»êÀ» ÇÑ´Ù. ±×·±ÈÄ, µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î »õ·Î¿î ¸íÁ¦ÀÇ ¿ìº¯À» ¸¸µç´Ù. ´ÙÀ½À¸·Î, »õ·Î¿î ¸íÁ¦ÀÇ ¾çº¯¿¡ ³ªÅ¸³ª´Â Ç×Àº ¾çº¯¿¡¼­ Á¦°ÅµÈ´Ù. ¸íÁ¦°¡ ´ÙÁß Ç×À» ÇÑ º¯À̳ª ¾çº¯¿¡ °®´õ¶óµµ ±× °úÁ¤Àº µ¿ÀÏÇÏ´Ù. »õ·Ó°Ô Ãß·ÐµÈ ¸íÁ¦ÀÇ Áº¯Àº óÀ½¿¡ ÁÖ¾îÁø µÎ ¸íÁ¦ÀÇ Áº¯ÀÇ ¸ðµç Ç×À» °¡Áö°í ÀÖ´Ù. »õ·Î¿î ¿ìº¯µµ ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ¸¸µé¾îÁø´Ù. ±×·±ÈÄ, »õ·Î¿î ¸íÁ¦ÀÇ ¾çº¯¿¡ ³ªÅ¸³ª´Â Ç×À» Á¦°ÅÇÑ´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½°ú °°Àº ¸íÁ¦¸¦ °¡Áö°í ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.

    father (bob, jake) ¡ú mother (bob, jake) ¡ø parent (bob, jake)

    grandfather (bob, fred) ¡ø father (bob, jake) ¡û father (jake, fred)

ÇØ µµÃâÀº ´ÙÀ½°ú °°´Ù.

    mother (bob, jake) ¡ú grandfather (bob, fred) ¡ø parent (bob, jake) ¡û father (jake, fred)

ÀÌ ¸íÁ¦´Â ¿ø·¡ ¸íÁ¦ÀÇ ±âº» ¸íÁ¦ Áß Çϳª¸¸À» Á¦¿ÜÇÏ°í ¸ðµç ¸íÁ¦¸¦ °¡Áö°í ÀÖ´Ù. ù¹ø° ¸íÁ¦ÀÇ Áº¯°ú µÎ¹ø° ¸íÁ¦ÀÇ ¿ìº¯¿¡ ÀÖ´Â ¿¬»ê father (bob, jake) ¸¦ Çã¿ëÇÑ ±âº» ¸íÁ¦°¡ »ý·«µÇ¾ú´Ù. ¹®ÀåÀ¸·Î ´ÙÀ½°ú °°ÀÌ ¸»ÇÒ °ÍÀÌ´Ù.

    if :       bob ÀÌ jake ÀÇ ºÎ¸ðÀÌ´Ù´Â bob ÀÌ jake ÀÇ ¾Æ¹öÁöÀ̰ųª ¾î¸Ó´ÏÀÌ´Ù¸¦ Æ÷ÇÔÇÑ´Ù.

    and :    bob ÀÌ jake ÀÇ ¾Æ¹öÁöÀÌ°í jake °¡ fred ÀÇ ¾Æ¹öÁöÀÌ´Ù´Â bob ÀÌ fred ÀÇ ÇҾƹöÁöÀÌ´Ù¸¦ Æ÷ÇÔÇÑ´Ù.

    then :   if bob ÀÌ jake ÀÌ ºÎ¸ðÀÌ°í jake °¡ fred ÀÇ ¾Æ¹öÁöÀÌ´Ù, then : bob ÀÌ jake ÀÇ ¾î¸Ó´ÏÀ̰ųª bob ÀÌ fred ÀÇ ÇҾƹöÁöÀÌ´Ù.

ÇØ µµÃâÀº ½ÇÁ¦·Î ÀÌ·± °£´ÜÇÑ ¿¹Á¦°¡ ¼³¸íÇÏ´Â °Íº¸´Ù ´õ¿í º¹ÀâÇÏ´Ù. ƯÈ÷, ¸íÁ¦¿¡¼­ º¯¼öÀÇ Á¸Àç´Â ÇØ µµÃâ °úÁ¤¿¡¼­ ºÎÇÕ °úÁ¤ (matching process) ÀÌ ¼º°øÇÏ´Â °ÍÀ» Çã¿ëÇÏ´Â º¯¼öÀÇ °ªÀ» ãÀ¸¶ó°í ¿ä±¸µÈ´Ù. º¯¼öÀÇ À¯¿ëÇÑ °ªÀ» °áÁ¤ÇÏ´Â ÀÌ·± °úÁ¤À» ´ÜÀÏÈ­ (unification) ¶ó°í ºÎ¸¥´Ù. ´ÜÀÏÈ­¸¦ Çã¿ëÇϱâ À§ÇØ º¯¼ö¿¡ °ªÀ» ÀϽÃÀûÀ¸·Î ´ëÀÔ½ÃÅ°´Â °ÍÀ» »ç·ÊÈ­ (instantiation) ¶ó ºÎ¸¥´Ù.

ÇØ µµÃâ ´Ü°è¿¡¼­ º¯¼ö¿¡ °ªÀ» »ç·ÊÈ­ÇÏ°í ¿ä±¸µÈ ¸ÅĪÀ» ¿Ï¼ºÇÏ´Â °ÍÀÌ ½ÇÆÐµÈ ÈÄ¿¡ ¿ªÇàÇؼ­ º¯¼ö¿¡ ´Ù¸¥ °ªÀ» »ç·ÊÈ­ÇÏ´Â °ÍÀº ÀϹÝÀûÀÌ´Ù. Prolog ÀÇ ¹®¸Æ¿¡¼­ ´ÜÀÏÈ­¿Í ¿ªÇà (backtracking) À» Á»´õ ±¤¹üÀ§ÇÏ°Ô ³íÀÇÇÒ °ÍÀÌ´Ù.

ÇØ µµÃâÀÇ ¾ÆÁÖ Áß¿äÇÑ ¼ºÁúÀ» ÁÖ¾îÁø ¸íÁ¦ ÁýÇÕ¿¡¼­ ¾î¶² ºÒÀÏÄ¡ (inconsistency) ¸¦ ŽÁöÇÏ´Â ´É·ÂÀÌ´Ù. ÀÌ·± ¼ºÁúÀº ´ÙÀ½°ú °°ÀÌ, ÇØ µµÃâÀ» Á¤¸®¸¦ Áõ¸íÇÏ´Â µ¥ »ç¿ëÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ¼ú¾î Çؼ®ÇÐ °üÁ¡¿¡¼­ Á¤¸® Áõ¸íÀ» Àû´çÇÑ ¸íÁ¦ÀÇ ÁÖ¾îÁø ÁýÇÕ (Á¤¸®ÀÇ ºÎÁ¤À» »õ ¸íÁ¦·Î ¼­¼úµÊ) À¸·Î º¼ ¼ö ÀÖ´Ù. ÇØ µµÃâÀÌ ºÒÀÏÄ¡¸¦ ¹ß°ßÇÔÀ¸·Î½á Á¤¸®¸¦ Áõ¸íÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖµµ·Ï Á¤¸®´Â ºÎÁ¤µÈ´Ù. ÀÌ°ÍÀÌ ¸ð¼ø¿¡ ÀÇÇÑ Áõ¸í (proof by contradiction) ÀÌ´Ù. ÀüÇüÀûÀ¸·Î ¿ø·¡ÀÇ ¸íÁ¦´Â °¡¼³ (hypotheses) À̶ó°í ºÒ¸®°í, Á¤¸®ÀÇ ºÎÁ¤Àº ¸ñÀû (goal) À̶ó°í ºÒ¸°´Ù.

À̷лóÀ¸·Î, ÀÌ°ÍÀº À¯È¿ÇÏ°í À¯¿ëÇÑ °úÁ¤ÀÌ´Ù. ±×·¯³ª ÇØ µµÃâ¿¡ ¿ä±¸µÇ´Â ½Ã°£ÀÌ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. ¸íÁ¦ÀÇ ÁýÇÕÀÌ À¯ÇÑÀÏ ¶§ ÇØ µµÃâµµ À¯ÇÑ °úÁ¤ÀÏÁö¶óµµ, °Å´ëÇÑ ¸íÁ¦ µ¥ÀÌÅÍ º£À̽º¿¡¼­ ºÒÀÏÄ¡¸¦ ã´Â µ¥ ¿ä±¸µÇ´Â ½Ã°£Àº °Å´ëÇÒ ¼ö ÀÖ´Ù.

Á¤¸® Áõ¸íÀº ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ±âÃÊÀÌ´Ù. °è»êµÇ´Â ¸¹Àº ºÎºÐÀÌ °¡¼³·Î¼­ ÁÖ¾îÁø »ç½Ç°ú °ü°èÀÇ ¸®½ºÆ®¿Í, ÇØ µµÃâÀ» »ç¿ëÇÏ¿© °¡¼³·ÎºÎÅÍ Ãß·ÐµÈ ¸ñÀûÀÇ Çü½ÄÀ¸·Î Ç¥ÇöµÈ´Ù.

¸íÁ¦°¡ ÇØ µµÃâÀ» À§ÇØ »ç¿ëµÉ ¶§, ÇØ µµÃâ °úÁ¤À» ´õ¿í ´Ü¼øÈ­½ÃÅ°´Â Á¦ÇÑµÈ Á¾·ùÀÇ Å¬·ÎÁî Çü½ÄÀÌ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ Æ¯¼öÇÑ ¸íÁ¦¸¦ È¥ Ŭ·ÎÁî (Horn clauses) ¶ó ºÒ¸®¸ç, ´ÜÁö 2 °¡Áö Çü½ÄÀ¸·Î Á¸ÀçÇÑ´Ù. Áï Áº¯ÀÌ ´ÜÀÏ ±âº» ¸íÁ¦À̰ųª »ý·«µÈ´Ù. [È¥ Ŭ·ÎÁî´Â ÀÌ·± Çü½ÄÀ¸·Î Ŭ·ÎÁ ¿¬±¸ÇÑ Alfred Horn ÀÇ À̸§À» µû¼­ ºÙ¿©Á³´Ù (horn, 1951).] Ŭ·ÎÁî Çü½Ä ¸íÁ¦ÀÇ Áº¯Àº ¶§¶§·Î Çìµå (head) ¶ó ºÒ¸®°í, Áº¯À» °®´Â È¥ Ŭ·ÎÁî´Â À¯µÎ È¥ Ŭ·ÎÁî (headed Horn clause) ¶ó°í ºÒ¸°´Ù. ´ÙÀ½°ú °°ÀÌ À¯µÎ È¥ Ŭ·ÎÁî´Â °ü°è¸¦ ³ªÅ¸³»´Â µ¥ »ç¿ëµÈ´Ù.

    likes (bob, trout) ¡ø likes (bob, fish) ¡û fish (trout)

»ç½ÇÀ» ³ªÅ¸³»´Â µ¥ ÀÚÁÖ »ç¿ëµÇ´Â Áº¯ÀÌ ¾ø´Â È¥ Ŭ·ÎÁî´Â ¸ðµÎ È¥ Ŭ·ÎÁî (headless Horn clause) ¶ó ºÒ¸°´Ù. ¿¹¸¦ µé¸é, ¾Æ·¡¿Í °°´Ù.

    father (bob, jake)

¸ðµÎ´Â ¾Æ´ÏÁö¸¸, ´ëºÎºÐÀÇ ¸íÁ¦´Â È¥ Ŭ·ÎÁî·Î ³ªÅ¸³¾ ¼ö ÀÖ´Ù.

4. ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ °³°ü

³í¸® ÇÁ·Î±×·¡¹ÖÀ» À§ÇØ »ç¿ëµÈ ¾ð¾î¸¦ ¼±¾ðÀû ¾ð¾î (declarative language) ¶ó°í ºÎ¸¥´Ù. ¿Ö³ÄÇÏ¸é ±× ¾ð¾î·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥ÀÌ ¹èÁ¤¹®À̳ª Á¦¾î È帧¹®ÀÌ ¾Æ´Ñ ¼±¾ðÀ¸·Î ±¸¼ºµÇ±â ¶§¹®ÀÌ´Ù. ÀÌ·± ¼±¾ðÀº ±âÈ£ ³í¸®¿¡¼­ ½ÇÁ¦ÀûÀ¸·Î ¹®Àå, Áï ¸íÁ¦ÀÌ´Ù.

³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ÇʼöÀûÀΠƯ¼ºÀº ¼±¾ðÀû Àǹ̷Р(declarative semantics) À̶ó ºÒ¸®´Â Àǹ̷ÐÀÌ´Ù. ÀÌ Àǹ̷ÐÀÇ ±âº» °³³äÀº °¢ ¹®ÀåÀÇ Àǹ̸¦ °áÁ¤ÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀÌ ÀÖ°í, Àǹ̴ ¹®Á¦¸¦ Ç®±â À§ÇØ ¹®ÀåÀÌ »ç¿ëµÇ´Â ¹æ¹ý¿¡ Á¾¼ÓµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ¼±¾ðÀû Àǹ̷ÐÀº ¸í·ÉÇü ¾ð¾î (imperative language) ÀÇ Àǹ̷к¸´Ù °£´ÜÇÏ´Ù. ¿¹¸¦ µé¸é, ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ ÁÖ¾îÁø ¸íÁ¦ÀÇ Àǹ̴ ¹®Àå ±× ÀÚü·ÎºÎÅÍ °£°áÇÏ°Ô °áÁ¤µÉ ¼ö ÀÖ´Ù. ¸í·ÉÇü ¾ð¾î¿¡¼­ °£´ÜÇÑ ¹èÁ¤¹®ÀÇ Àǹ̴ Áö¿ª ¼±¾ðÀÇ Á¶»ç, ¾ð¾îÀÇ ¿©¿ª ±ÔÄ¢ÀÇ Áö½Ä, ±×¸®°í ½ÉÁö¾î ¹èÁ¤¹® º¯¼öÀÇ Å¸ÀÔÀ» °áÁ¤Çϱâ À§ÇØ ´Ù¸¥ ÆÄÀÏÀÇ ÇÁ·Î±×·¥ Á¶»ç¸¦ ¿ä±¸ÇÑ´Ù. ±×·± ÈÄ, ¹èÁ¤¹® Ç¥Çö½ÄÀÌ º¯¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é, ¹èÁ¤¹® ÀÌÀüÀÇ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀº ¹Ýµå½Ã ÀÌ·± º¯¼öÀÇ °ªÀ» °áÁ¤Çϱâ À§ÇØ ÃßÀûµÇ¾î¾ß ÇÑ´Ù. ±× ´ÙÀ½¿¡ ¹èÁ¤¹®ÀÇ °á°ú´Â ½ÇÇà ½Ã°£ ¹®¸Æ¿¡ ´Þ·Á ÀÖ´Ù. ÀÌ°ÍÀ» ´ÜÀÏ ¹®ÀåÀÇ °£´ÜÇÑ °Ë»ç, ÅؽºÆ®ÀÇ ¹®¸ÆÀ̳ª ½ÇÇà¼ø¼­¸¦ °í·ÁÇÒ ÇÊ¿ä°¡ ¾ø´Â °Í°ú ºñ±³Çϸé, ¼±¾ðÀû Àǹ̷ÐÀÌ ¸í·ÉÇü ¾ð¾îÀÇ Àǹ̷к¸´Ù ´õ¿í °£´ÜÇÏ´Ù´Â °ÍÀº ¸í¹éÇÏ´Ù. ±×·¯¹Ç·Î, ¼±¾ðÀû Àǹ̷ÐÀº ¼±¾ðÀû ¾ð¾î°¡ ¸í·ÉÇü ¾ð¾î¿¡ ´ëÇؼ­ °¡Áö´Â ÀåÁ¡ Áß¿¡ ÇϳªÀÌ´Ù (Hogger, 1984, pp. 240 - 241).

¸í·ÉÇü ¾ð¾î¿Í ÇÔ¼ö ¾ð¾î¿¡¼­ÀÇ ÇÁ·Î±×·¡¹ÖÀº ±âº»ÀûÀ¸·Î ÀýÂ÷Àû (procedural) ÀÌ´Ù. ±×°ÍÀº ÇÁ·Î±×·¡¸Ó°¡ ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¹«¾ùÀÌ ¼ºÃëµÇ´ÂÁö¸¦ ¾Ë°í °è»êÀÌ Á¤È®ÇÏ°Ô ¾î¶»°Ô ¼öÇàµÇ´ÂÁö¸¦ ÄÄÇ»ÅÍ¿¡°Ô Áö½ÃÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ´Ù½Ã ¸»Çϸé, ÄÄÇ»ÅÍ´Â ¸í·ÉÀ» µû¸£´Â °£´ÜÇÑ ÀåÄ¡·Î¼­ Ãë±ÞµÈ´Ù. °è»êµÇ´Â ¸ðµç °ÍÀº °è»êÀÇ ¸ðµç ¼¼ºÎ »çÇ×ÀÌ »ó¼¼È÷ ¼³¸íµÇ¾î¾ß ÇÑ´Ù. ¾î¶² »ç¶÷Àº ÀÌ·± °ÍÀÌ ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» ¾î·Æ°Ô ÇÏ´Â ÇÙ½ÉÀ̶ó°í ¹Ï´Â´Ù.

¾î¶² ºñ¸í·ÉÇü ¾ð¾î¿¡¼­ÀÇ ÇÁ·Î±×·¡¹Ö, ƯÈ÷ ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ÀÇ ÇÁ·Î±×·¡¹ÖÀº ºñÀýÂ÷ÀûÀÌ´Ù. ÀÌ·¯ÇÑ ¾ð¾î¿¡¼­ÀÇ ÇÁ·Î±×·¥Àº °á°ú°¡ °è»êµÇ´Â ¹æ¹ýÀ» Á¤È®ÇÏ°Ô ¼­¼úÇÏÁö ¾Ê°í °á°úÀÇ Çü½ÄÀ» ¼­¼úÇÑ´Ù. Â÷ÀÌÁ¡Àº ¿ì¸®°¡ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÌ ¾î·µç °á°ú°¡ ¾ò¾îÁö´Â ¹æ½ÄÀ» °áÁ¤ÇÑ´Ù°í °¡Á¤ÇÏ´Â °ÍÀÌ´Ù. ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ÀÌ ´É·ÂÀ» Á¦°øÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÍÀº Àû´çÇÑ Á¤º¸¿Í ¿øÇÏ´Â °è»ê °á°ú¸¦ Ãß·ÐÇÏ´Â ¹æ¹ýÀ» ÄÄÇ»ÅÍ¿¡°Ô Á¦°øÇÏ´Â °£°áÇÑ ¼ö´ÜÀÌ´Ù. ¼ö·· Çؼ®ÇÐÀº ÄÄÇ»ÅÍ¿¡ ´ëÇÑ ±âº» Åë½Å Çü½ÄÀ» Á¦°øÇÏ°í, Robinson ¿¡ ÀÇÇØ Ã¹¹ø°·Î °³¹ßµÈ Áõ¸í ¹æ¹ýÀº Ãß·Ð ±â¹ýÀ» Á¦°øÇÑ´Ù.

ÀýÂ÷Àû ½Ã½ºÅÛ°ú ºñÀýÂ÷Àû ½Ã½ºÅÛÀÇ Â÷À̸¦ ¼³¸íÇÏ´Â µ¥ »ç¿ëµÇ´Â ÀϹÝÀûÀÎ ¿¹Á¦´Â µ¥ÀÌÅ͸¦ ¾î¶² ƯÁ¤ÇÑ ¼ø¼­·Î ¹è¿­ÇÏ´Â °úÁ¤ Áï Á¤·Ä (sorting) ÀÌ´Ù. C++ ¿Í °°Àº ¾ð¾î¿¡¼­ Á¤·ÄÀº C++ ÄÄÆÄÀÏ·¯¸¦ °¡Áø ÄÄÇ»ÅÍ¿¡°Ô Á¤·Ä ¾Ë°í¸®ÁòÀÇ ¸ðµç ¼¼ºÎ»çÇ×À» C++ ÇÁ·Î±×·¥À¸·Î ±â¼úÇÔÀ¸·Î½á ½ÇÇàµÈ´Ù. C++ ÇÁ·Î±×·¥À» ±â°è Äڵ峪 ÀÎÅÍÇÁ¸®ÅÍ Áß°£ÄÚµå·Î º¯È¯ÇÑ ÈÄ¿¡ ÄÄÇ»ÅÍ´Â ¸í·É¾î¸¦ µû¸£¸ç Á¤·ÄµÈ ¸®½ºÆ®¸¦ »ý¼ºÇÑ´Ù.

ºñÀýÂ÷Àû ¾ð¾î¿¡¼­´Â Á¤·ÄµÈ ¸®½ºÆ®ÀÇ Æ¯¼ºÀ» ±â¼úÇϱ⸸ ÇÏ¸é µÈ´Ù. ±×°ÍÀº ÀÎÁ¢ 2 ¿ø¼ÒÀÇ °¢ ½Ö¿¡ ´ëÇؼ­, ÁÖ¾îÁø °ü°è½ÄÀÌ ¼º¸³ÇÏ´Â ¸®½ºÆ®ÀÇ Ä¡È¯ÀÌ´Ù. ÀÌ°ÍÀ» Çü½ÄÀûÀ¸·Î ¼³¸íÇÏÀÚ. Á¤·ÄµÇ´Â ¸®½ºÆ®°¡ ÷ÀÚ¹üÀ§ 1..n À» °®´Â list ¶ó´Â À̸§ÀÇ ¹è¿­À̶ó°í °¡Á¤ÇÏÀÚ. old_list ¶ó´Â ÁÖ¾îÁø ¸®½ºÆ®ÀÇ ¿ø¼Ò¸¦ Á¤·ÄÇÏ°í ±× °á°ú¸¦ ´Ù¸¥ ¹è¿­¿¡ ³õ´Â´Ù´Â °³³äÀ» ´ÙÀ½°ú °°ÀÌ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.

¿©±â¼­ permute ´Â µÎ¹ø° ¸Å°³º¯¼ö ¹è¿­ÀÌ Ã¹¹ø° ¸Å°³º¯¼ö ¹è¿­ÀÇ Ä¡È¯À̸é, ÂüÀ» µÇµ¹·ÁÁÖ´Â ¼ú¾î (predicate) ÀÌ´Ù.

ÀÌ·± ¼­¼ú·ÎºÎÅÍ, ºñÀýÂ÷Àû ¾ð¾î ½Ã½ºÅÛÀº Á¤·ÄµÈ ¸®½ºÆ®¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. ±×°ÍÀº ºñÀýÂ÷Àû ÇÁ·Î±×·¡¹ÖÀ» °£°áÇÑ ¼ÒÇÁÆ®¿þ¾î ¿ä±¸ ¸í¼¼ÀÇ ´Ü¼øÇÑ »ý»ê¹°Ã³·³ º¸ÀÌ°Ô ÇÑ´Ù. ±×·¯³ª ºÒÇàÇÏ°Ôµµ, ±×·¸°Ô °£´ÜÇÏÁö ¾Ê´Ù. ´ÜÁö ÇØ µµÃ⸸ »ç¿ëÇÏ´Â ³í¸® ÇÁ·Î±×·¥Àº ±â°è È¿À²¼ºÀ̶ó´Â ½É°¢ÇÑ ¹®Á¦¿¡ Á÷¸éÇÑ´Ù. ´õ¿íÀÌ, ³í¸® ¾ð¾îÀÇ ÃÖÀû Çü½ÄÀº ¾ÆÁ÷±îÁö °áÁ¤µÇÁö ¾Ê¾Ò°í, ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ °Å´ëÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ ÇÁ·Î±×·¥À» »ý¼ºÇÏ´Â ÁÁÀº ¹æ¹ýÀº ¾ÆÁ÷ °³¹ßµÇÁö ¾Ê¾Ò´Ù.

5. Prolog ÀÇ ±â¿ø

2 Àå¿¡¼­ ¼­¼úÇÑ °Íó·³, Edinburgh ´ëÇÐÀÇ Robert Kowalski ÀÇ Áö¿øÀ» ¹ÞÀº Aix-marseille ´ëÇÐÀÇ Alain Colmerauer ¿Í Phillipe Roussel Àº Prolog ÀÇ ±âº»ÀûÀÎ ¼³°è¸¦ °³¹ßÇÏ¿´´Ù. Colmerauer ¿Í Roussel Àº ÀÚ¿¬¾î 󸮿¡ °ü½ÉÀÌ ÀÖ¾ú°í Kowaski ´Â ÀÚµ¿È­µÈ Á¤¸® Áõ¸í¿¡ °ü½ÉÀÌ ÀÖ¾ú´Ù. Aix-Marseille ´ëÇаú Edinburgh ´ëÇÐÀÇ Çù·ÂÀº 1970 ³â´ë Á߹ݱîÁö °è¼ÓµÇ¾ú´Ù. ±× ÈÄ¿¡, ¾ð¾î °³¹ß°ú »ç¿ë¿¡ °üÇÑ ¿¬±¸°¡ µÎ Áö¿ª¿¡¼­ µ¶¸³ÀûÀ¸·Î ÁøÇàµÇ¾ú°í, ±× °á°ú ±¸¹®ÀûÀ¸·Î ´Ù¸¥ µÎ °³ÀÇ Prolog ÆÄ»ý¾î°¡ ¸¸µé¾îÁ³´Ù.

Prolog ÀÇ °³¹ß°ú ³í¸® ÇÁ·Î±×·¡¹Ö¿¡¼­ ´Ù¸¥ ¿¬±¸ ³ë·ÂÀº ÀϺ» Á¤ºÎ°¡ 5 ¼¼´ë ÄÄÇ»Æà ½Ã½ºÅÛ (FGCS - Fifth Generation Computing Systems) (Fuchi, 1981 ; Moto-oka, 1981) À̶ó ºÒ¸®´Â ´ëÇü ¿¬±¸ ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇß´Ù´Â ¹ßÇ¥°¡ 1981 ³â¿¡ ÀÖ±â Àü±îÁö´Â Edinburgh ¿Í Marseille ´ëÇÐ ¿ÜºÎ¿¡¼­´Â Á¦ÇÑÀûÀÎ °ü½É¸¸À» ¹Þ¾Ò´Ù. ÇÁ·ÎÁ§Æ®ÀÇ ±âº» ¸ñÀûÀº Áö´É ±â°è¸¦ °³¹ßÇÏ´Â °ÍÀ̾ú°í, Prolog °¡ ÀÌ·± ¿¬±¸ÀÇ ±âÃÊ·Î ¼±ÅõǾú´Ù. FGCS ÀÇ ¹ßÇ¥´Â ¹Ì±¹ Á¤ºÎ¿Í À¯·´ ¿©·¯ ³ª¶óÀÇ ¿¬±¸ÀÚ¿Í Á¤ºÎ¿¡ ÀΰøÁö´É°ú ³í¸® ÇÁ·Î±×·¡¹Ö¿¡ Áï°¢ÀûÀÌ°í °­·ÂÇÑ °ü½ÉÀ» ºÒ·¯ ÀÏÀ¸Ä×´Ù.

6. Prolog ÀÇ ±âº» ¿ø¼Ò

ÇöÀç ¸¹Àº Prolog ÀÇ ´Ù¸¥ ÆÄ»ý¾î°¡ Á¸ÀçÇÑ´Ù. ÀÌ·± °ÍÀº ¿©·¯ °³ÀÇ ºÎ·ù·Î ºÐ·ùÇÒ ¼ö ÀÖ´Ù. Marseille ±×·ìÀ¸·ÎºÎÅÍ ¹ßÀüÇÑ °Í, Edinburgh ±×·ìÀ¸·ÎºÎÅÍ ³ª¿Â °Í, ±×¸®°í Clark °ú McCabe (1984) ¿¡ ÀÇÇØ ±â¼úµÈ micro-Prolog ¿Í °°Àº ¸¶ÀÌÅ©·Î ÄÄÇ»Å͸¦ À§ÇØ °³¹ßµÈ ÆÄ»ý¾îÀÇ ¸ðÀÓÀÌ´Ù. À̰͵éÀÇ ±¸¹® Çü½ÄÀº ¾à°£ ´Ù¸£´Ù. Prolog ÀÇ ¿©·¯ ÆÄ»ý¾î ȤÀº À̵éÀÇ È¥ÇÕÇü ±¸¹®À» ±â¼úÇϱ⺸´Ù´Â, ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ°í ÀÖ°í Edinburgh ¿¡¼­ °³¹ßÇÑ Æ¯º°ÇÑ ÆÄ»ý¾î¸¦ ¼±ÅÃÇß´Ù. ÀÌ ¾ð¾î Çü½ÄÀº ¶§¶§·Î Edinburgh ±¸¹®À̶ó°í ºÒ¸°´Ù. ±×°ÍÀÇ Ã¹¹ø° ±¸ÇöÀº DEC ½Ã½ºÅÛ - 10 ¿¡¼­ ÀÌ·ç¾îÁ³´Ù (Warren et al., 1979).

(1) Ç×

´Ù¸¥ ¾ð¾îÀÇ ÇÁ·Î±×·¥Ã³·³, Prolog ÇÁ·Î±×·¥µµ ¹®ÀåÀÇ ÁýÇÕÀ¸·Î ±¸¼ºµÈ´Ù. Prolog ¿¡´Â ´ÜÁö 2 ~ 3 Á¾·ùÀÇ ¹®ÀåÀÌ ÀÖÁö¸¸, ±×°ÍÀº º¹ÀâÇÒ ¼ö ÀÖ´Ù. ¸ðµç Prolog ¹®ÀåÀº Ç×À¸·ÎºÎÅÍ ±¸¼ºµÈ´Ù.

Prolog Ç×Àº »ó¼ö, º¯¼ö, ¶Ç´Â ±¸Á¶ÀÌ´Ù. »ó¼ö´Â ¿øÀÚ (atom) À̰ųª Á¤¼öÀÌ´Ù. ¿øÀÚ´Â Prolog ÀÇ ±âÈ£ °ªÀÌ°í, LISP ÀÇ ¿øÀÚ¿Í À¯»çÇÏ´Ù. ƯÈ÷, ¿øÀÚ´Â ¼Ò¹®ÀÚ·Î ½ÃÀÛÇÏ´Â ¹®ÀÚ, ¼ýÀÚ, ¹ØÁÙ ¹®ÀÚ (underscore) ÀÇ ½ºÆ®¸µÀ̰ųª µû¿ÈÇ¥·Î ±¸ºÐµÈ ÇÁ¸°Æ® °¡´ÉÇÑ ASCII ¹®ÀÚÀÇ ½ºÆ®¸µÀÌ´Ù.

º¯¼ö´Â ´ë¹®ÀÚ·Î ½ÃÀÛÇÏ´Â ¹®ÀÚ³ª ¼ýÀÚ, ¹ØÁÙ ¹®ÀÚÀÇ ½ºÆ®¸µÀÌ´Ù. º¯¼ö´Â ¼±¾ð¿¡ ÀÇÇØ Å¸ÀÔ¿¡ ¹ÙÀεùµÇÁö ¾Ê´Â´Ù. °ª°ú ŸÀÔÀ» º¯¼ö¿¡ °áÇÕ½ÃÅ°´Â °ÍÀ» »ç·ÊÈ­ (instantiation) ¶ó ºÎ¸¥´Ù. »ç·ÊÈ­´Â ÇØ µµÃâ °úÁ¤ (resolution process) ¿¡¼­¸¸ ÀϾ´Ù. °ª ÇÒ´çÀÌ ¾ÈµÈ º¯¼ö´Â ºñ»ç·ÊÈ­ (uninstantiation) º¯¼ö¶ó ºÒ¸°´Ù. »ç·ÊÈ­´Â ÇÑ ¸íÁ¦ÀÇ Áõ¸íÀ̳ª ¹ÝÁõÀ» Æ÷ÇÔÇÏ´Â ÇϳªÀÇ ¿ÏÀüÇÑ ¸ñÀûÀ» ¸¸Á·½Ãų ¼ö ÀÖ´Â ÇÑ °è¼ÓµÈ´Ù. Prolog º¯¼ö´Â, Àǹ̳ª »ç¿ë °üÁ¡¿¡¼­, ¸í·ÉÇü ¾ð¾îÀÇ º¯¼ö¿Í´Â ´Ù¸£´Ù.

Ç×ÀÇ ¸¶Áö¸· Á¾·ù´Â ±¸Á¶¶ó ºÒ¸°´Ù. ±¸Á¶´Â ¼ú¾î Çؼ®ÇÐÀÇ ±âº» ¸íÁ¦·Î Ç¥ÇöµÇ°í, ÀϹÝÀûÀÎ Çü½ÄÀº µ¿ÀÏÇÏ´Ù.

    functor (¸Å°³º¯¼ö ¸®½ºÆ®)

functor ´Â ¾î¶² ¿øÀÚÀÌ°í ±¸Á¶¸¦ ÀνÄÇÏ´Â µ¥ »ç¿ëµÈ´Ù. ¸Å°³ º¯¼ö ¸®½ºÆ®´Â ¿øÀÚ, º¯¼ö³ª ´Ù¸¥ ±¸Á¶ÀÇ ¸®½ºÆ®°¡ µÉ ¼ö ÀÖ´Ù. ´ÙÀ½ Àý¿¡¼­ »ó¼¼È÷ ³íÀǵǰÚÁö¸¸, ±¸Á¶´Â Prolog ¿¡¼­ »ç½Ç (fact) À» ¸í½ÃÇÏ´Â µµ±¸ÀÌ´Ù. ±¸Á¶´Â °´Ã¼·Î »ý°¢µÉ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì ±¸Á¶´Â »ç½ÇÀÌ °ü·ÃµÈ ¿©·¯ ¿øÀÚÀÇ Ç׿¡¼­ Ç¥½ÃµÇ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ÀÌ·± Àǹ̿¡¼­, ±¸Á¶´Â Ç× »çÀÌÀÇ °ü°è¸¦ ³ªÅ¸³»±â ¶§¹®¿¡ °ü°èÀÌ´Ù. ¶ÇÇÑ ±¸Á¶´Â ¹®¸ÆÀÌ ±¸Á¶¸¦ Áú¹®À¸·Î ¸í½ÃÇÒ ¶§´Â ¼ú¾îÀÌ´Ù.

(2) »ç½Ç ¹®

Prolog ¹®¿¡ ´ëÇÑ ³íÀÇ´Â °¡¼³ Áï ÃßÁ¤µÈ Á¤º¸ÀÇ µ¥ÀÌÅͺ£À̽º¸¦ ±¸¼ºÇϴµ¥ »ç¿ëµÇ´Â ¹®ÀåÀ¸·Î ½ÃÀÛÇÑ´Ù. ÀÌ ¹®ÀåÀ¸·ÎºÎÅÍ »õ·Î¿î Á¤º¸°¡ Ãß·ÐµÉ ¼ö ÀÖ´Ù.

Prolog ´Â µÎ °³ÀÇ ±âÃÊ ¹®Àå Çü½ÄÀ» °®´Â´Ù. ÀÌ°ÍÀº ¼ú¾î Çؼ®ÇÐÀÇ ¹«µÎ È¥ Ŭ·ÎÁî¿¡ ÇØ´çµÈ´Ù. Prolog ÀÇ ¹«µÎ È¥ Ŭ·ÎÁîÀÇ °¡Àå °£´ÜÇÑ Çü½ÄÀÌ ´ÜÀÏ ±¸Á¶ÀÌ´Ù. ÀÌ°ÍÀº ¹«Á¶°ÇÀû ´Ü¾ð Áï »ç½Ç·Î Çؼ®µÈ´Ù. ³í¸®ÀûÀ¸·Î »ç½ÇÀº ÂüÀÎ ´Ü¼ø ¸íÁ¦ÀÌ´Ù.

´ÙÀ½ ¿¹Á¦´Â Prolog ÇÁ·Î±×·¥¿¡¼­ °¡Áú ¼ö ÀÖ´Â »ç½ÇÀÇ Á¾·ù¸¦ ¼³¸íÇÑ´Ù. ¸ðµç Prolog ¹®ÀåÀÌ ¸¶Ä§Ç¥·Î ³¡³ª´Â °Í¿¡ ÁÖÀÇÇضó.

   female (shelley).
   male (bill).
   female (mary).
   male (jake).
   father (bill, jake).
   father (bill, shelley).
   mother (mary, jake).
   mother (mary, shelley).

ÀÌ °£´ÜÇÑ ±¸Á¶µéÀº jake, shelley, bill, mary ¿¡ °üÇÑ ¾î¶² »ç½ÇÀ» ³ªÅ¸³½´Ù. ¿¹·Î, ù¹ø° °ÍÀº shelley °¡ ¿©ÀÚ¶ó´Â °ÍÀ» ³ªÅ¸³½´Ù. ¸¶Áö¸· ³× °³´Â ¿øÀÚ functor ·Î À̸§ÀÌ ºÙ¿©Áø °ü°è·Î µÎ ¸Å°³º¯¼ö¸¦ ¿¬°áÇÑ´Ù. ¿¹¸¦ µé¸é, ´Ù¼¸¹ø° ¸íÁ¦´Â bill ÀÌ jake ÀÇ ¾Æ¹öÁö¶ó´Â Àǹ̷ΠÇؼ®µÈ´Ù. ¼ú¾î Çؼ®ÇÐÀÇ ¸íÁ¦Ã³·³ Prolog ¸íÁ¦´Â °íÀ¯ÀÇ Àǹ̸¦ °¡Áö°í ÀÖÁö ¾ÊÀ½¿¡ À¯ÀÇÇ϶ó. ±×µéÀº ÇÁ·Î±×·¡¸Ó°¡ ±×µé¿¡°Ô ³ªÅ¸³»±â¸¦ ¿øÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¿¹¸¦ µé¸é, ¸íÁ¦

    father (bill, jake).

´Â bill °ú jake °¡ µ¿ÀÏÇÑ ¾Æ¹öÁö¸¦ °®°Å³ª jake °¡ bill ÀÇ ¾Æ¹öÁö¶ó´Â °ÍÀ» ÀǹÌÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª °¡Àå ÀϹÝÀûÀÌ°í Á÷¼³ÀûÀÎ Àǹ̴ bill ÀÌ jake ÀÇ ¾Æ¹öÁö¶ó´Â °ÍÀÌ´Ù.

(3) ±ÔÄ¢¹®

µ¥ÀÌÅͺ£À̽º¸¦ ±¸¼ºÇϱâ À§ÇÑ Prolog ÀÇ ´Ù¸¥ ±âº» Çü½ÄÀº À¯µÎ È¥ Ŭ·ÎÁî¿¡ ´ëÀÀµÈ´Ù. ÀÌ Çü½ÄÀº ¼öÇп¡¼­ ÁÖ¾îÁø Á¶°Ç ÁýÇÕÀÌ ¸¸Á·µÇ¸é °á°ú°¡ ³ª¿À´Â °ÍÀ¸·Î ¾Ë·ÁÁø Á¤¸®¿Í ¿¬°ü½Ãų ¼ö ÀÖ´Ù. ¿ìº¯Àº ÀüÁ¦, Áï if ºÎºÐÀ̸ç, Áº¯Àº °á·Ð, Áï then ºÎºÐÀÌ´Ù. ¸¸¾à Prolog ¹®ÀåÀÇ ÀüÁ¦°¡ ÂüÀ̸é, ¶ÇÇÑ ¹®ÀåÀÇ °á°úµµ ÂüÀÌ´Ù. ±×µéÀº È¥ Ŭ·ÎÁîÀ̱⠶§¹®¿¡, Prolog ¹®ÀÚÀÇ °á°ú´Â ´ÜÀÏ Ç×ÀÌ°í, ¹Ý¸é¿¡ ÀüÁ¦´Â ´ÜÀÏ Ç×À̰ųª ³í¸®°ö (conjunctions) ÀÌ µÉ ¼ö ÀÖ´Ù.

³í¸®°ö (conjunctions) Àº ³í¸® AND ¿¬»êÀÚ¿¡ ÀÇÇØ ºÐ¸®µÈ ´ÙÁß Ç×À» °¡Áö°í ÀÖ´Ù. Prolog ¿¡ AND ¿¬»êÀÚ´Â ¾Ï½ÃÀûÀÌ´Ù. ±âº» ¸íÁ¦¸¦ ³í¸®°öÀ¸·Î ¸í±âÇÏ´Â ±¸Á¶´Â ÄÞ¸¶·Î ºÐ¸®µÇ¸ç, ±×·¡¼­ ÄÞ¸¶¸¦ AND ¿¬»êÀÚ·Î °£ÁÖÇÒ ¼ö ÀÖ´Ù. ³í¸®°ö ¿¹Á¦·Î¼­, ´ÙÀ½À» »ý°¢ÇØ º¸ÀÚ.

    female (shelley), child (shelley).

Prolog ÀÇ À¯µÎ È¥ Ŭ·ÎÁî ¹®ÀåÀÇ ÀϹÝÀûÀÎ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

    °á·Ð_1 :- ÀüÁ¦_Ç¥Çö½Ä.

ÀÌ°ÍÀº ´ÙÀ½°ú °°ÀÌ ÀÐÀ» ¼ö ÀÖ´Ù. "¸¸¾à ÀüÁ¦_Ç¥Çö½ÄÀÌ ÂüÀ̰ųª º¯¼öÀÇ »ç·ÊÈ­¿¡ ÀÇÇØ ÂüÀÌ µÇ¸é °á·Ð_1 ÀÌ ¼º¸³ÇÑ´Ù." ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

    ancestor (mary, shelly) :- mother (mary, shelley).

ÀÌ ¿¹Á¦´Â "¸¸¾à mary °¡ shelley ÀÇ ¾î¸Ó´ÏÀ̸é, mary ´Â shelley ÀÇ Á¶»óÀÌ´Ù" ¶ó´Â °ÍÀ» ³ªÅ¸³½´Ù. À¯µÎ È¥ Ŭ·ÎÁî´Â ¸íÁ¦»çÀÌÀÇ ÇÔÃà ±ÔÄ¢À» ¼­¼úÇϱ⠶§¹®¿¡, À¯µÎ È¥ Ŭ·ÎÁî´Â ±ÔÄ¢ (Rule) À̶ó°í ºÒ¸°´Ù.

¼ú¾î Çؼ®ÇÐÀÇ Å¬·ÎÁî Çü½Ä ¸íÁ¦Ã³·³, Prolog ¹®Àº ±×µéÀÇ Àǹ̸¦ ÀϹÝÈ­ÇÏ´Â º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Ŭ·ÎÁî Çü½ÄÀÇ º¯¼ö´Â ³»ÀçµÈ ÀüĪ (universal) ÇÑÁ¤»ç¸¦ Á¦°øÇÑ´Ù. ´ÙÀ½Àº Prolog ¹®¿¡¼­ º¯¼öÀÇ »ç¿ëÀ» º¸¿©ÁÖ°í ÀÖ´Ù.

   parent (X, Y) :- mother (X, Y).
   parent (X, Y) :- father (X, Y).
   grandparent (X, Z) :- parent (X, Y), parent (Y, Z).
   sibling (X, Y) :- mother (M, X), mother (M, Y), father (F, X), father (F, Y).

ÀÌ ¹®Àº º¯¼ö³ª ÀÏ¹Ý °´Ã¼»çÀÌÀÇ ÇÔÃà ±ÔÄ¢À» Á¦°øÇÑ´Ù. ÀÌ °æ¿ì¿¡, ÀÏ¹Ý °´Ã¼´Â X, Y, Z, M, F ÀÌ´Ù. ù¹ø° ±ÔÄ¢Àº ¸¸¾à mother (X, Y) ÂüÀÌ µÇ´Â X, Y ÀÇ »ç·ÊÈ­°¡ ÀÖ´Ù¸é, µ¿ÀÏÇÑ X, Y ÀÇ »ç·ÊÈ­¿¡ ´ëÇØ parent (X, Y) µµ ÂüÀÌ´Ù¶ó´Â ±ÔÄ¢À» ¼­¼úÇÑ´Ù.

(4) ¸ñÀû¹®

Áö±Ý±îÁö ¿ì¸®´Â ¾Ë·ÁÁø »ç½ÇÀ̳ª »ç½ÇµéÀÇ ³í¸®Àû °ü°è¸¦ ³ªÅ¸³»´Â ±ÔÄ¢À» ±â¼úÇÏ´Â µ¥ »ç¿ëµÈ ³í¸® ¸íÁ¦¸¦ À§ÇØ Prolog ¹®À» ±â¼úÇÏ¿´´Ù. ÀÌ·¯ÇÑ ¹®ÀåÀº Á¤¸® Áõ¸í ¸ðµ¨¿¡¼­ ±âÃÊÀÌ´Ù. Á¤¸®´Â ½Ã½ºÅÛÀÌ Áõ¸íÀ̳ª ¹ÝÁõµÇ±â¸¦ ¿øÇÏ´Â ¸íÁ¦ Çü½ÄÀÌ´Ù. Prolog ¿¡¼­, ÀÌ·± ¸íÁ¦´Â ¸ñÀû (goal) À̳ª ÁúÀÇ (query) ¶ó°í ºÒ¸°´Ù. Prolog ¸ñÀû¹®ÀÇ ±¸¹® Çü½ÄÀº ¹«µÎ È¥ Ŭ·ÎÁî¿Í µ¿ÀÏÇÏ´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½ ¸ñÀû¹®À» º¸ÀÚ.

    man (fred).

ÀÌ ¸ñÀû¹®¿¡ ´ëÇØ ½Ã½ºÅÛÀº "¿¹" ³ª "¾Æ´Ï¿À" ¶ó°í ÀÀ´äÇÑ´Ù. ´ë´äÀÌ "¿¹" ÀÌ¸é ½Ã½ºÅÛÀº ÁÖ¾îÁø »ç½Ç°ú °ü°èÀÇ µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸ñÀûÀÌ ÂüÀ̶ó°í ½Ã½ºÅÛÀÌ Áõ¸íÇÏ¿´´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ´ë´äÀÌ "¾Æ´Ï¿À" ÀÌ¸é ¸ñÀûÀÌ °ÅÁþÀ̰ųª ½Ã½ºÅÛÀÌ Áõ¸íÀ̳ª ¹ÝÁõÀ» °£´ÜÈ÷ ÇÒ ¼ö ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

³í¸®°ö ¸íÁ¦¿Í º¯¼ö¸¦ °®´Â ¸íÁ¦µµ ÇÕ¹ýÀûÀÎ ¸ñÀû ¹®ÀÌ´Ù. º¯¼ö°¡ Á¸ÀçÇÒ ¶§, ½Ã½ºÅÛÀº ¸ñÀûÀÇ À¯È¿¼ºÀ» ÁÖÀåÇÒ »Ó¸¸ ¾Æ´Ï¶ó ¸ñÀûÀ» ÂüÀ¸·Î ¸¸µå´Â º¯¼öÀÇ »ç·ÊÈ­¸¦ È®ÀÎÇÑ´Ù. ¿¹¸¦ µé¸é,

    father (X, mike).

·Î ÁúÀÇÇÒ ¼ö ÀÖ´Ù. ±×·± ÈÄ¿¡, ½Ã½ºÅÛÀº ´ÜÀÏÈ­¸¦ ÅëÇØ ¸ñÀûÀ» ÂüÀ¸·Î ¸¸µå´Â X ÀÇ »ç·ÊÈ­¸¦ ãµµ·Ï ½ÃµµÇÑ´Ù.

¸ñÀû¹®°ú ºñ¸ñÀû¹®Àº µ¿ÀÏÇÑ Çü½Ä (¹«µÎ È¥ Ŭ·ÎÁî) À» °¡Áö±â ¶§¹®¿¡, Prolog ±¸ÇöÀº ÀÌ µÎ °³¸¦ ±¸º°ÇÏ´Â ¹æ¹ýÀ» ¹Ýµå½Ã °¡Á®¾ß ÇÑ´Ù. ´ëÈ­½Ä Prolog ±¸ÇöÀº ´Ù¸¥ ´ëÈ­½Ä ÇÁ·ÒÇÁÆ®¿¡ ÀÇÇØ Ç¥½ÃµÇ´Â °£´ÜÇÑ µÎ °³ÀÇ ¸ðµå¸¦ °¡ÁüÀ¸·Î¼­ ÀÌ°ÍÀ» ¼öÇàÇÑ´Ù. Áï »ç½Ç°ú ±ÔÄ¢À» ÀÔ·ÂÇÏ´Â ÇÁ·ÒÇÁÆ®¿Í ¸ñÀûÀ» ÀÔ·ÂÇÏ´Â ÇÁ·ÒÇÁÆ®ÀÌ´Ù. »ç¿ëÀÚ´Â ¾ðÁ¦¶óµµ ¸ðµå¸¦ ¹Ù²Ü ¼ö ÀÖ´Ù.

(5) Prolog ÀÇ Ãß·Ð °úÁ¤

ÀÌ Àý¿¡¼­ Prolog ÀÇ ÇØ µµÃâÀ» Á¶»çÇÏ°íÀÚ ÇÑ´Ù. Prolog ÀÇ È¿À²ÀûÀÎ »ç¿ëÀº ÇÁ·Î±×·¡¸Ó°¡ Prolog ½Ã½ºÅÛÀÌ ÇÁ·Î±×·¥À¸·Î ¼öÇàÇÏ´Â °ÍÀ» ÀÚ¼¼È÷ ¾Ë °ÍÀ» ¿ä±¸ÇÑ´Ù.

ÁúÀÇ´Â ¸ñÀû (goal) À̶ó ºÒ¸°´Ù. ¸ñÀûÀÌ º¹ÇÕ ¸íÁ¦ÀÏ ¶§, °¢ »ç½Ç (±¸Á¶) Àº ºÎ¸ñÀû (subgoal) À̶ó ºÒ¸°´Ù. ¸ñÀûÀÌ ÂüÀ̶ó´Â °ÍÀ» Áõ¸íÇϱâ À§ÇØ, Ãß·Ð °úÁ¤Àº ¸ñÀûÀ» µ¥ÀÌÅÍ º£À̽ºÀÇ Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ »ç½Ç°ú ¿¬°á½ÃÅ°´Â µ¥ÀÌÅÍ º£À̽ºÀÇ Ãß·Ð ±ÔÄ¢°ú/¶Ç´Â »ç½ÇÀÇ Ã¼ÀÎÀ» ã¾Æ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é, ¸¸¾à Q °¡ ¸ñÀûÀ̸é, Q ´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ »ç½Ç·Î¼­ ã¾ÆÁö°Å³ª Ãß·Ð °úÁ¤Àº P °¡ ¼º¸³ÇÏ´Â »ç½Ç °ú ¸íÁ¦ ÀÇ ¼ø¼­¿­À» ã¾Æ¾ß ÇÑ´Ù.

    

¹°·Ð, ÀÌ °úÁ¤Àº ±ÔÄ¢ÀÇ º¹ÇÕ ¸íÁ¦·Î ±¸¼ºµÈ ¿ìº¯°ú ±ÔÄ¢ÀÇ º¯¼öÀÇ Á¸Àç¿¡ ÀÇÇؼ­ º¹ÀâÇØÁú ¼ö ÀÖ°í, °¡²ûÀº º¹ÀâÇÏ´Ù. P (Á¸ÀçÇÒ ¶§) ¸¦ ã´Â ¹æ¹ýÀº ±Ùº»ÀûÀ¸·Î ¼­·Î ´Ù¸¥ Ç×°úÀÇ ºñ±³ Áï ºÎÇÕ (matching) ÀÌ´Ù.

ºÎ¸ñÀûÀ» Áõ¸íÇÏ´Â °úÁ¤Àº ¸íÁ¦-ºÎÇÕ °úÁ¤À¸·Î ¼öÇàµÇ±â ¶§¹®¿¡, ±×°ÍÀº ¶§¶§·Î ºÎÇÕÀ̶ó ºÒ¸°´Ù. ¾î¶² °æ¿ì¿¡¼­´Â ºÎ¸ñÀûÀ» Áõ¸íÇÏ´Â °ÍÀº ºÎ¸ñÀûÀ» ¸¸Á· (satisfying) ÇÏ´Â °ÍÀ̶ó ºÒ¸°´Ù.

´ÙÀ½ ÁúÀǸ¦ »ý°¢Çغ¸ÀÚ.

    man (bob).

ÀÌ ¸ñÀû¹®Àº °¡Àå °£´ÜÇÑ Á¾·ùÀÌ´Ù. ÇØ µµÃâÀÌ ÂüÀÎÁö °ÅÁþÀÎÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀº »ó´ëÀûÀ¸·Î ½±´Ù. ÀÌ ¸ñÀûÀÇ ÆÐÅÏÀº µ¥ÀÌÅͺ£À̽ºÀÇ »ç½Ç°ú ±ÔÄ¢¿¡ ºñ±³µÈ´Ù. ¸¸¾à µ¥ÀÌÅͺ£À̽º°¡ »ç½Ç

    man (bob).

À» Æ÷ÇÔÇÑ´Ù¸é, Áõ¸íÀº ´Ü¼øÇÏ´Ù. ±×·¯³ª ¸¸¾à µ¥ÀÌÅͺ£À̽º°¡ ´ÙÀ½ÀÇ »ç½Ç°ú Ãß·Ð ±ÔÄ¢À» °¡Áö°í ÀÖ´Ù¸é,

   father (bob).
   man (X) :- father (X).

Prolog ´Â ÀÌ µÎ ¹®ÀåÀ» ãµµ·Ï ¿ä±¸Çϸç, ¸ñÀûÀÇ Áø¸® °ªÀ» Ãß·ÐÇϱâ À§ÇØ À̵éÀ» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº ÀϽÃÀûÀ¸·Î X ¸¦ bob À¸·Î »ç·ÊÈ­ÇÏ´Â ´ÜÀÏÈ­¸¦ ÇÊ¿ä·Î ÇÑ´Ù.

ÀÌÁ¦ ´ÙÀ½ ¸ñÀûÀ» »ìÆ캸ÀÚ.

    man (X).

ÀÌ °æ¿ì¿¡, Prolog ´Â ¸ñÀûÀ» µ¥ÀÌŸº£À̽ºÀÇ ¸íÁ¦¿Í ºÎÇÕ½ÃÄÑ¾ß ÇÑ´Ù. ¸Å°³º¯¼ö·Î °´Ã¼¸¦ °®°í, ¸ñÀûÀÇ Çü½ÄÀ» °®´Â Prolog °¡ ã´Â ù¹ø° ¸íÁ¦´Â X ¸¦ °´Ã¼ÀÇ °ªÀ¸·Î »ç·ÊÈ­½ÃŲ´Ù. ±×·± ÈÄ, X ´Â °á°ú·Î¼­ µð½ºÇ÷¹ÀÌ (Ãâ·Â) µÈ´Ù. ¸ñÀûÀÇ Çü½ÄÀ» °®´Â ¸íÁ¦°¡ ¾ø´Ù¸é, ½Ã½ºÅÛÀº "¾Æ´Ï¿À" ¶ó°í ¸»Çϸ鼭, ¸ñÀûÀ» ¸¸Á·½Ãų ¼ö ¾ø´Ù°í ³ªÅ¸³½´Ù.

ÁÖ¾îÁø ¸ñÀûÀÌ µ¥ÀÌÅͺ£À̽ºÀÇ »ç½Ç°ú ºÎÇÕÇϱâ À§ÇÑ ½Ãµµ¿¡´Â µÎ °¡Áö ´ë¸³µÇ´Â Á¢±Ù ¹æ¹ýÀÌ ÀÖ´Ù. ½Ã½ºÅÛÀº µ¥ÀÌÅͺ£À̽ºÀÇ »ç½Ç°ú ±ÔÄ¢À» °¡Áö°í ½ÃÀÛÇÏ°í, ¸ñÀû¿¡ µµ´ÞÇÏ´Â ºÎÇÕ ¼ø¼­¸¦ ãµµ·Ï ½ÃµµÇÑ´Ù. ÀÌ·¯ÇÑ Á¢±Ù ¹æ¹ýÀº »óÇâ½Ä ÇØ µµÃ⠶Ǵ ÀüÇâ üÀÎ (forward chaining) À̶ó°í ºÒ¸°´Ù. ´Ù¸¥ ¹æ¹ýÀº ¸ñÀûÀ¸·Î ½ÃÀÛÇÏ°í, µ¥ÀÌÅͺ£À̽º¿¡¼­ ¿ø·¡ÀÇ ¾î¶² »ç½Ç ÁýÇÕ¿¡ µµ´ÞÇÏ´Â ºÎÇÕ ¸íÁ¦ÀÇ ¼ø¼­¸¦ Ž»öÇϵµ·Ï ½ÃÀÎÇÑ´Ù. ÀÌ·± Á¢±Ù ¹æ½ÄÀº ÇÏÇâ½Ä ÇØ µµÃ⠶Ǵ ÈÄÇâ üÀÎ (backward chaining) À̶ó°í ºÒ¸°´Ù. ÀϹÝÀûÀ¸·Î ÈÄÇâ üÀÎÀº Èĺ¸ ÇØ´äÀÇ ÁýÇÕÀÌ Àû´çÇÏ°Ô ÀÛÀ» ¶§ Àß ÀÛµ¿ÇÑ´Ù. ÀüÇâ üÀÎ Á¢±Ù ¹æ¹ýÀº °¡´ÉÇÑ ´äÀÇ ¼ö°¡ ¸¹À» ¶§ Àß µ¿ÀÛÇÑ´Ù. ÀÌ·¯ÇÑ »óȲ¿¡¼­ ÈÄÇâ üÀÎÀº ÇØ´äÀ» ¾ò±â À§ÇØ ¸¹Àº ¼öÀÇ ºÎÇÕÀ» ¿ä±¸ÇÑ´Ù. ¼³°èÀÚ´Â °Å´ëÇÑ ºÎ·ùÀÇ ¹®Á¦¿¡ ´ëÇØ ÀüÇâ üÀκ¸´Ù ÈÄÇâ üÀÎÀÌ ÀûÇÕÇÏ´Ù°í ¹Ï±â ¶§¹®¿¡, Prolog ±¸ÇöÀº ÇØ µµÃâÀ» À§ÇØ ÈÄÇâ üÀÎÀ» »ç¿ëÇÑ´Ù.

´Ù½Ã ÁúÀÇ ¿¹Á¦¸¦ »ìÆ캸ÀÚ.

    man (bob).

µ¥ÀÌÅͺ£À̽º¿¡ ´ÙÀ½ÀÌ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ.

    father (bob).
    man (X) :- father (X).

ÀüÇâ üÀÎÀº ù¹ø° ¸íÁ¦¸¦ Ž»öÇÏ°í ã´Â´Ù. ±×·± ÈÄ, X ¸¦ bob À¸·Î »ç·ÊÈ­ÇÏ¿© ù¹ø° ¸íÁ¦¸¦ µÎ¹ø° ±ÔÄ¢ÀÇ ¿ìº¯ ((father (X)) °ú ºÎÇÕÇÑ ÈÄ µÎ¹ø° ¸íÁ¦ÀÇ Áº¯À» ¸ñÀû¿¡ ºÎÇÕ½ÃÅ´À¸·Î¼­ ¸ñÀûÀÌ Ã߷еȴÙ. ÈÄÇâ üÀÎÀº ¸ÕÀú X ¸¦ bob À¸·Î »ç·ÊÈ­¸¦ ÅëÇؼ­ ¸ñÀûÀ» µÎ¹ø° ¸íÁ¦ÀÇ Áº¯ (man (X)) °ú ºÎÇÕÇÑ´Ù. ¸¶Áö¸· ´Ü°è¿¡¼­, µÎ¹ø° ¸íÁ¦ÀÇ ¿ìº¯ (father (bob)) Àº ù¹ø° ¸íÁ¦¿Í ºÎÇÕÇÑ´Ù.

´ÙÀ½ ¼³°è ¹®Á¦´Â À§¿¡¼­ º» ¿¹Á¦Ã³·³ ¸ñÀûÀÌ Çϳª ÀÌ»óÀÇ ±¸Á¶¸¦ °¡Áú ¶§ ¹ß»ýÇÑ´Ù. ¿©±â¿¡¼­ÀÇ ¹®Á¦´Â ÇØ µµÃâ Ž»öÀÌ ³ÐÀÌ ¿ì¼± (breadth-first) ¶Ç´Â ±íÀÌ ¿ì¼± (depth-first) À¸·Î ¼öÇàµÇ´À³ÄÀÌ´Ù. ±íÀÌ ¿ì¼± Ž»öÀº ´Ù¸¥ ºÎ¸ñÀû¿¡ ÀÛ¾÷Çϱâ Àü¿¡ ÁÖ¾îÁø ¸ñÀûÀÇ Ã¹¹ø° ºÎ¸ñÀûÀÇ ¸íÁ¦-Áõ¸í- ÀÇ ¿ÏÀüÇÑ ¼ø¼­¸¦ ã´Â´Ù. ³ÐÀÌ ¿ì¼± Ž»öÀº ÁÖ¾îÁø ¸ñÀûÀÇ ¸ðµç ºÎ¸ñÀû¿¡ º´·ÄÀûÀ¸·Î ÀÛ¾÷ÇÑ´Ù. Prolog ¼³°èÀÚ´Â ±íÀÌ ¿ì¼± Ž»ö Á¢±Ù ¹æ¹ýÀÌ ÀûÀº ÄÄÇ»ÅÍ ÀÚ¿øÀ» °¡Áö°í ¼öÇàµÉ ¼ö Àֱ⠶§¹®¿¡ ±âº»ÀûÀ¸·Î ±íÀÌ ¿ì¼± Ž»ö Á¢±Ù ¹æ¹ýÀ» ¼±ÅÃÇÏ¿´´Ù. ³ÐÀÌ ¿ì¼± Ž»öÀº ¸¹Àº ¸Þ¸ð¸® »ç¿ëÀ» ¿ä±¸ÇÏ´Â º´·Ä Ž»öÀÌ´Ù.

³íÀÇÇØ¾ß ÇÒ Prolog ÇØ µµÃâ ±¸Á¶ÀÇ ¸¶Áö¸· Ư¡Àº ¿ªÇà (backtracking) ÀÌ´Ù. ´ÙÁß ºÎ¸ñÀûÀ» °¡Áø ¸ñÀûÀÌ Ã³¸®µÇ°í ½Ã½ºÅÛÀÌ ºÎ¸ñÀû Áß ÇϳªÀÇ Áø¸®°ªÀ» º¸¿©ÁÖ´Â °ÍÀ» ½ÇÆÐÇÒ ¶§, ½Ã½ºÅÛÀº Áõ¸íÇÒ ¼ö ¾ø´Â ±× ºÎ¸ñÀûÀ» Æ÷±âÇÑ´Ù. ´ë½Å¿¡, ½Ã½ºÅÛÀº ¸¸¾à ±× ºÎ¸ñÀûÀÌ ÀÖÀ¸¸é ÀÌÀü ºÎ¸ñÀûÀ» ´Ù½Ã °í·ÁÇÏ¿© ´Ù¸¥ ÇØ´äÀ» ãµµ·Ï ½ÃµµÇÑ´Ù. ÀÌÀü¿¡ Áõ¸íµÈ ºÎ¸ñÀûÀÇ Àç°í¸¦ À§ÇØ ¸ñÀû¿¡¼­ ÈÄÅðÇÏ´Â °ÍÀ» ¿ªÇà (backtracking) À̶ó ºÎ¸¥´Ù. »õ·Î¿î ÇØ´äÀº ±× ºÎ¸ñÀûÀÇ ÀÌÀü Ž»öÀÌ Áß´ÜµÈ °÷¿¡¼­ Ž»öÀ» ½ÃÀÛÇÔÀ¸·Î¼­ ãÀ» ¼ö ÀÖ´Ù. ºÎ¸ñÀûÀÇ ´Ù¼öÀÇ ÇØ´Â º¯¼öÀÇ °¢°¢ ´Ù¸¥ »ç·ÊÈ­¿¡ ±âÀÎÇÑ´Ù. ¿ªÇàÀº ½Ã°£°ú °ø°£À» ¸¹ÀÌ ¿ä±¸ÇÑ´Ù. ¿Ö³ÄÇϸé, °¢ ºÎ¸ñÀûÀÇ ¸ðµç °¡´ÉÇÑ Áõ¸íÀ» ã¾Æ¾ßÇϱ⠶§¹®ÀÌ´Ù. ÀÌ·± ºÎ¸ñÀû Áõ¸íÀº ¸¶Áö¸· ¿ÏÀüÇÑ Áõ¸íÀÌ µÇ´Â °á°ú Áõ¸íÀ» ã±â À§ÇØ ¿ä±¸µÈ ½Ã°£ÀÌ ÃÖ¼ÒÈ­µÇµµ·Ï Á¶Á÷µÇÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ¹®Á¦¸¦ ¾ÇÈ­½ÃŲ´Ù.

¿ªÇà¿¡ ´ëÇÑ ÀÌÇظ¦ È®½ÇÈ÷ Çϱâ À§ÇØ ´ÙÀ½ ¿¹Á¦¸¦ »ìÆ캸ÀÚ. µ¥ÀÌÅͺ£À̽º¿¡ »ç½Ç°ú ±ÔÄ¢ÀÇ ÁýÇÕÀÌ ÀÖ°í, Prolog ¿¡ ´ÙÀ½°ú °°Àº º¹ÇÕ ¸ñÀûÀÌ Á¦½ÃµÇ¾ú´Ù°í °¡Á¤ÇÏÀÚ.

    male (X), parent (X, shelley).

ÀÌ ¸ñÀûÀº X °¡ male ÀÌ°í X °¡ shelley ÀÇ parent °¡ µÇ´Â X ÀÇ »ç·ÊÈ­°¡ ÀÖ´ÂÁö¸¦ ¹¯´Â´Ù. Prolog ´Â ¸ÕÀú ÀÛ¿ëÀÚ (functor) ·Î male À» °¡Áö°í ÀÖ´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ù¹ø° »ç½ÇÀ» ã´Â´Ù. ±×·± ÈÄ, X ¸¦ ãÀº »ç½ÇÀÇ ¸Å°³º¯¼ö mike ·Î »ç·ÊÈ­½ÃŲ´Ù. ±× ´ÙÀ½À¸·Î, parent (mike, shelley) °¡ ÂüÀ̶ó´Â Áõ¸íÀ» ½ÃµµÇÑ´Ù. ¸¸¾à ±×°ÍÀÌ ½ÇÆÐÇϸé, ù¹ø° ºÎ¸ñÀû male (X) ·Î µÇµ¹¾Æ°¡°í, X ÀÇ ´Ù¸¥ »ç·ÊÈ­·Î ¸¸Á·½Ãų·Á°í ½ÃµµÇÑ´Ù. ÇØ µµÃâ °úÁ¤Àº shelley ÀÇ ºÎ¸ðÀÎ male À» ã±â Àü¿¡ µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸ðµç male À» ãÀ» ¼öµµ ÀÖ´Ù. ÇØ µµÃâ °úÁ¤Àº ¸ñÀûÀ» ¸¸Á·½Ãų ¼ö ¾ø´Ù´Â °ÍÀ» Áõ¸íÇϱâ À§ÇØ ¸ðµç male À» È®½ÇÈ÷ ã¾Æ¾ßÇÑ´Ù. ¸¸¾à µÎ °³ÀÇ ºÎ¸ñÀûÀÇ ¼ø¼­°¡ ¹Ý´ë·Î µÇ¾î  ÀÖÀ¸¸é, ¿ì¸®ÀÇ ¿¹Á¦´Â Á»´õ È¿À²ÀûÀ¸·Î 󸮵ȴÙ. ±×·± ÈÄ, ÇØ µµÃâÀÌ shelley ÀÇ ºÎ¸ð¸¦ ¹ß°ßÇÑ ÈÄ ±× »ç¶÷°ú ºÎ¸ñÀû male ¸¦ ºÎÇÕ½Ãų·Á°í ÇÒ °ÍÀÌ´Ù. ¸¸¾à µ¥ÀÌÅͺ£À̽º¿¡ shelley °¡ male º¸´Ù ÀûÀº parent ¸¦ °¡Áö°í ÀÖÀ¸¸é (°øÁ¤ÇÑ °¡Á¤Ã³·³ »ý°¢µÊ) ÀÌ°ÍÀº Á»´õ È¿À²ÀûÀÌ´Ù. 7.1 Àý¿¡¼­ Prolog ½Ã½ºÅÛ¿¡ ÀÇÇؼ­ ¼öÇàµÇ´Â ¿ªÇàÀ» Á¦ÇѽÃÅ°´Â ¹æ¹ýÀ» »ìÆ캻´Ù.

Prolog ¿¡¼­ µ¥ÀÌÅͺ£À̽º Ž»öÀº Ç×»ó ù¹ø°¿¡¼­ ¸¶Áö¸· ¹æÇâÀ¸·Î ÁøÇàµÈ´Ù.

´ÙÀ½ µÎ ºÎÀýÀº ÇØ µµÃâ °úÁ¤À» ´õ »ó¼¼È÷ ¼³¸íÇÏ´Â Prolog ¿¹Á¦¸¦ ±â¼úÇÑ´Ù.

(6) °£´ÜÇÑ »ê¼ú ¿¬»ê

Prolog ´Â Á¤¼ö º¯¼ö¿Í Á¤¼ö »ê¼ú ¿¬»êÀ» Áö¿øÇÑ´Ù. ¿ø·¡, »ê¼ú ¿¬»êÀÚ´Â ÀÛ¿ëÀÚ (functor) ¿´´Ù. ±×·¡¼­ 7 °ú º¯¼ö X ÀÇ ÇÕÀº ´ÙÀ½°ú °°ÀÌ Çü¼ºµÈ´Ù.

    + (7, X)

Prolog ´Â is ¿¬»êÀڷμ­ »ê¼ú ¿¬»êÀÇ ´õ¿í °£°áÇÑ ±¸¹®À» Çã¿ëÇÑ´Ù. ÀÌ ¿¬»êÀÚ´Â ¿À¸¥ÂÊ ÇÇ¿¬»êÀڷμ­ »ê¼ú Ç¥Çö½ÄÀ» ¿ÞÂÊ ÇÇ¿¬»êÀڷμ­ º¯¼ö¸¦ ÃëÇÑ´Ù. Ç¥Çö½ÄÀÇ ¸ðµç º¯¼ö´Â ¹Ýµå½Ã ¹Ì¸® »ç·ÊÈ­µÇ¾î¾ß ÇÏÁö¸¸, Áº¯ÀÇ º¯¼ö´Â Àü¿¡ »ç·ÊÈ­µÉ ¼ö ¾ø´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½ÄÀ» »ý°¢ÇØ º¸ÀÚ.

    A is B / 17 + C.

¸¸¾à B ¿Í C °¡ »ç·ÊÈ­µÇ¾úÁö¸¸, A ´Â ¾ÈµÇ¾ú´Ù¸é, ÀÌ Å¬·ÎÁî´Â A ¸¦ Ç¥Çö½ÄÀÇ °ªÀ¸·Î »ç·ÊÈ­ÇÒ °ÍÀÌ´Ù. ÀÌ·± ÀÏÀÌ ¹ß»ýÇϸé, Ŭ·ÎÁî´Â ¸¸Á·µÈ´Ù. ¸¸¾à B ¿Í C °¡ »ç·ÊÈ­µÇÁö ¾Ê°í A ¸¸ÀÌ »ç·ÊÈ­µÇ¾ú´Ù¸é, Ŭ·ÎÁî´Â ¸¸Á·µÇÁö ¾ÊÀ¸¸ç A ÀÇ »ç·ÊÈ­´Â ¹ß»ýµÉ ¼ö ¾ø´Ù. is ¸íÁ¦ÀÇ Àǹ̴ ¸í·ÉÇü ¾ð¾îÀÇ ¹èÁ¤¹®°ú´Â ¸¹Àº Â÷ÀÌ°¡ ÀÖ´Ù. ÀÌ Â÷ÀÌ´Â Èï¹Ì·Î¿î »óȲÀ» À̲ø¾î ³¾ ¼ö ÀÖ´Ù. is ¿¬»êÀڴ Ŭ·ÎÁ ¹èÁ¤¹®Ã³·³ º¸ÀÌ°Ô Çϱ⠶§¹®¿¡, Ãʺ¸ Prolog ÇÁ·Î±×·¡¸Ó´Â ´ÙÀ½°ú °°Àº ¹®ÀåÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

    Sum is Sum + Number.

ÀÌ°ÍÀº Prolog ¿¡¼­ ÇÕ¹ýÀûÀÏÁö¶óµµ À¯¿ëÇÏÁö ¾Ê´Ù. ¸¸¾à Sum ÀÌ »ç·ÊÈ­µÇÁö ¾Ê¾Ò´Ù¸ç, ¿ìº¯ÀÇ ÂüÁ¶´Â Á¤ÀǵÇÁö ¾Ê°í, Ŭ·ÎÁî´Â ½ÇÆÐÇÑ´Ù. ¸¸¾à Sum ÀÌ ÀÌ¹Ì »ç·ÊÈ­µÇ¾ú´Ù¸é, is °¡ Æò°¡µÉ ¶§ ¿ÞÂÊ ÇÇ¿¬»êÀÚ´Â ÇöÀç »ç·ÊÈ­¸¦ °¡Áú ¼ö ¾ø±â ¶§¹®¿¡ Ŭ·ÎÁî´Â ½ÇÆÐÇÑ´Ù. ¾î´À °æ¿ìµç, »õ·Î¿î °ª¿¡ ´ëÇÑ Sum ÀÇ »ç·ÊÈ­´Â ¹ß»ýÇÏÁö ¾Ê´Â´Ù (¸¸¾à Sum + Number ÀÇ °ªÀÌ ¿ä±¸µÇ¸é, ±×°ÍÀº ¾î¶² »õ·Î¿î À̸§¿¡ ¹ÙÀεùµÉ ¼ö ÀÖ´Ù).

Prolog ´Â ¸í·ÉÇü ¾ð¾î¿Í °°Àº µ¿ÀÏÇÑ Àǹ̷Π¹èÁ¤¹®À» °®Áö ¾Ê´Â´Ù. ±×µéÀº Prolog °¡ ¼³°èµÈ ´ëºÎºÐÀÇ ÇÁ·Î±×·¡¹Ö¿¡¼­ ÇÊ¿äÄ¡ ¾Ê´Ù. ¸í·ÉÇü ¾ð¾î¿¡¼­ ¹èÁ¤¹®ÀÇ À¯¿ë¼ºÀº ¹èÁ¤¹®ÀÌ ³»ÀåµÈ ÄÚµåÀÇ ½ÇÇà Á¦¾î È帧À» Á¦¾îÇÏ´Â ÇÁ·Î±×·¡¸ÓÀÇ ´É·Â¿¡ ´Þ·ÁÀÖ´Ù. ÀÌ·± ÇüÀÇ Á¦¾î´Â Prolog ¿¡¼­ Ç×»ó °¡´ÉÇÏÁö ¾Ê±â ¶§¹®¿¡, ÀÌ·¯ÇÑ ¹®ÀåÀº °ÅÀÇ À¯¿ëÇÏÁö ¾Ê´Ù.

Prolog ¿¡¼­ ¼öÄ¡ °è»êÀ» »ç¿ëÇÑ °£´ÜÇÑ ¿¹Á¦·Î¼­, ´ÙÀ½ ¹®Á¦¸¦ »ý°¢ÇØ º¸ÀÚ. ¿ì¸®´Â ¾î¶² Ưº°ÇÑ ÀÚµ¿Â÷ °æÁÖ Æ®·¢¿¡¼­ ¿©·¯ ÀÚµ¿Â÷ÀÇ Æò±Õ ¼Óµµ¿Í ±× Æ®·¢¿¡ ÀÖ´Â ÀÚµ¿Â÷ÀÇ ÃÑ ½Ã°£À» ¾Ë°í ÀÖ´Ù°í °¡Á¤ÇÏÀÚ. ÀÌ ±âº» Á¤º¸´Â »ç½Ç·Î ÄÚµùµÇ°í, ¼Óµµ, ½Ã°£, °Å¸® »çÀÌÀÇ °ü°è´Â ±ÔÄ¢À¸·Î ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÈ´Ù.

   speed (ford, 100).
   speed (vlovo, 80).
   speed (chevy, 105).
   speed (dodge, 95).
   time (ford, 20).
   time (chevy, 21).
   time (dodge, 24).
   time (volvo, 24).
   distance (X, Y) :- speed (X, Speed),
       time (X, Time),
           Y is Speed * Time.

ÀÌÁ¦, ÁúÀǴ Ưº°ÇÑ ÀÚµ¿Â÷ÀÇ ÁÖÇà °Å¸®¸¦ ¿ä±¸ÇÑ´Ù. ¿¹¸¦ µé¸é, ÁúÀÇ

    distance (chevy, Chevy_Distance).

´Â Chevy_Distance ¸¦ 2205 ·Î »ç·ÊÈ­½ÃŲ´Ù. °Å¸® °è»ê ¹®ÀåÀÇ ¿ìº¯¿¡¼­ ù µÎ Ŭ·ÎÁî´Â °£´ÜÇÏ°Ô º¯¼ö Speed ¿Í Time À» ÁÖ¾îÁø ÀÚµ¿Â÷ ÀÛ¿ëÀÚÀÇ ´ëÀÀ °ªÀ¸·Î »ç·ÊÈ­½ÃŲ´Ù. ¸ñÀûÀÌ ¸¸Á·µÈ ÈÄ¿¡, ¶ÇÇÑ Prolog ´Â Chevy_Distance ¿Í °ªÀ» µð½ºÇ÷¹ÀÌÇÑ´Ù.

ÀÌ ½ÃÁ¡¿¡¼­, Prolog ½Ã½ºÅÛÀÌ °á°ú¸¦ »ý»êÇÏ´Â ¹æ¹ýÀ» ¿¬»êÀûÀÎ ¸é¿¡¼­ °üÂûÇÏ´Â °ÍÀº À¯ÀÍÇÏ´Ù. Prolog ´Â ÁÖ¾îÁø ¸ñÀûÀ» ¸¸Á·½ÃÅ°´Â µ¿¾È¿¡ °¢ ´Ü°è¿¡¼­ ¼öÇàÇÑ º¯¼öÀÇ »ç·ÊÈ­¸¦ µð½ºÇ÷¹ÀÌÇÏ´Â trace ¶ó´Â À̸§ÀÇ ³»Àå ±¸Á¶¸¦ °®´Â´Ù. trace ´Â  Prolog ÇÁ·Î±×·¥À» ÀÌÇØÇÏ°í µð¹ö±×ÇÏ´Â µ¥ »ç¿ëµÈ´Ù. trace ¸¦ ÀÌÇØÇϱâ À§ÇØ, ÃßÀû ¸ðµ¨ (tracing model) À̶ó ºÒ¸®´Â Prolog ÇÁ·Î±×·¥ÀÇ ´Ù¸¥ ½ÇÇà ¸ðµ¨À» ¼³¸íÇÏ´Â °ÍÀÌ °¡Àå ÁÁ´Ù.

ÃßÀû ¸ðµ¨Àº ³× °¡Áö »ç°ÇÀ¸·Î Prolog ½ÇÇàÀ» ±â¼úÇÑ´Ù. (1) call Àº ¸ñÀûÀ» ¸¸Á·½ÃÅ°·Á´Â ½Ãµµ Ãʱ⿡ ¹ß»ýÇÑ´Ù. (2) exit ´Â ¸ñÀûÀÌ ¸¸Á·µÇ¾úÀ» ¶§ ¹ß»ýÇÑ´Ù. (3) redo ´Â ¸ñÀûÀ» Àç ¸¸Á·½Ãų·Á°í ½ÃµµÇÒ ¶§ ¹ß»ýÇÑ´Ù. (4) fail Àº ¸ñÀûÀÌ ½ÇÆеǾúÀ» ¶§ ¹ß»ýÇÑ´Ù. ¸¸¾à distance ¿Í °°Àº ÇÁ·Î¼¼½º°¡ ºÎÇÁ·Î±×·¥À¸·Î »ý°¢µÈ´Ù¸é call °ú exit ´Â ¸í·ÉÇü ¾ð¾îÀÇ ºÎÇÁ·Î±×·¥ ½ÇÇà ¸ðµ¨°ú Á÷Á¢ÀûÀ¸·Î °ü·Ã½Ãų ¼ö ÀÖ´Ù. ´Ù¸¥ µÎ »ç°ÇÀº ³í¸® ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ¿¡¼­¸¸ À¯ÀÏÇÏ´Ù. ´ÙÀ½ trace ¿¹Á¦¿¡¼­, ¸ñÀûÀº redo ³ª fail »ç°ÇÀ» ¿ä±¸ÇÏÁö ¾Ê´Â´Ù.

´ÙÀ½Àº Chevy_Distance ¸¦ À§ÇÑ °ªÀÇ °è»ê ÃßÀûÀÌ´Ù.

   trace.
   distance (chevy, Chevy_Distance).

   (1) 1 Call : distance (chevy, _0)?
   (2) 2 Call : speed (chevy, _5)?
   (2) 2 Exit : speed (chevy, 105)
   (3) 2 Call : time (chevy, _6)?
   (3) 2 Exit : time (chevy, 21)
   (4) 2 Call : _0 is 105 * 21?
   (4) 2 Exit : 2205 is 105 * 21
   (1) 1 Exit : distance (chevy, 2205)

   Chevy_distance = 2205

¹ØÁÙ ¹®ÀÚ (_) ·Î ½ÃÀÛÇÏ´Â ÃßÀû (trace) ¿¡ ÀÖ´Â ±âÈ£´Â »ç·ÊÈ­µÈ °ªÀ» ÀúÀåÇÏ´Â ³»ºÎ º¯¼öÀÌ´Ù. ÃßÀûÀÇ Ã¹ ¿­Àº ºÎÇÕÀÌ ÇöÀç ½ÃÀ۵ǰí ÀÖ´Â ºÎ¸ñÀûÀ» °¡¸®Å²´Ù. ¿¹¸¦ µé¸é, À§ÀÇ ÃßÀû¿¡¼­ Ç¥½Ã (3) À» °®´Â ù ÁÙÀº Àӽà º¯¼ö _6 ¸¦ chevy ÀÇ time °ªÀ¸·Î »ç·ÊÈ­ÇÏ·Á´Â ½ÃµµÀÌ´Ù. ¿©±â¼­ time Àº distance ÀÇ °è»êÀ» ±â¼úÇÏ´Â ¹®ÀåÀÇ ¿ìº¯ÀÇ µÎ¹ø° Ç×ÀÌ´Ù. µÎ¹ø° ¿­Àº ºÎÇÕ °úÁ¤ÀÇ È£Ãâ ±íÀ̸¦ ³ªÅ¸³½´Ù. ¼¼¹ø° ¿­Àº ÇöÀç µ¿ÀÛÀ» ³ªÅ¸³½´Ù.

¿ªÇàÀ» ¼³¸íÇϱâ À§ÇØ, ´ÙÀ½ ¿¹Á¦ µ¥ÀÌÅͺ£À̽º¿Í ÃßÀûµÈ º¹ÇÕ ¸ñÀûÀ» »ý°¢Çغ¸ÀÚ.

   likes (jake, chocolate).
   likes (jake, apricots).
   likes (darcie, licorice).
   likes (darcie, apricots).

   trace.
   likes (jake, X), likes (darcie, X).

   (1) 1 Call : likes (jake, _0)?
   (1) 1 Exit : likes (jake, chocolate)
   (2) 1 Call : likes (darcie, chocolate)?
   (2) 1 Fail : likes (darcie, chocolate)
   (1) 1 Redo : likes (jake, _0)?
   (1) 1 Exit : likes (jake, apricots)
   (3) 1 Call : likes (darcie, apricots)?
   (3) 1 Exit : likes (darcie, apricots)

   X = apricots

Prolog °è»êÀ» ´ÙÀ½°ú °°ÀÌ µµÇ¥·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. °¢ ¸ñÀûÀ» ³× °³ÀÇ Æ÷Æ® - call, fail, exit, redo - ¸¦ °¡Áø »óÀÚ·Î »ý°¢ÇØ º¸ÀÚ. Á¦¾î°¡ ÀüÁø ¹æÇâ¿¡¼­ call Æ÷Æ®¸¦ ÅëÇؼ­ ¸ñÀû¿¡ µé¾î¿Â´Ù. ¶ÇÇÑ Á¦¾î´Â ¹Ý´ë ¹æÇâÀ¸·Î redo Æ÷Æ®¸¦ ÅëÇؼ­ ¸ñÀû¿¡ µé¾î°¥ ¼ö ÀÖ´Ù. ¸¸¾à ¸ñÀûÀÌ ¼º°øÇϸé, Á¦¾î´Â exit Æ÷Æ®¸¦ ÅëÇؼ­ ¶°³­´Ù. À§ÀÇ ¿¹Á¦ ¸ðµ¨Àº ±×¸² 1 ¿¡ ³ªÅ¸³ª ÀÖ´Ù.

±×¸² 1  ¸ñÀû likes (jake, X) ¿Í likes (darcie, X) À» À§ÇÑ Á¦¾î È帧 ¸ðµ¨

ÀÌ ¿¹Á¦¿¡¼­, Á¦¾î È帧Àº ºÎ¸ñÀûÀ» µÎ ¹ø Åë°úÇÑ´Ù. µÎ¹ø° ºÎ¸ñÀûÀº óÀ½¿¡ ½ÇÆÐÇÏ°í, ÀÌ°ÍÀº redo ¸¦ ÅëÇؼ­ °­Á¦·Î ù ºÎ¸ñÀûÀ¸·Î µÇµ¹·Á º¸³½´Ù.

(7) ¸®½ºÆ® ±¸Á¶

Áö±Ý±îÁö, ¿ì¸®°¡ ³íÀÇÇÑ Prolog µ¥ÀÌÅÍ ±¸Á¶´Â µ¥ÀÌÅÍ ±¸Á¶º¸´Ù ´õ ÇÔ¼ö È£Ãâó·³ º¸ÀÌ´Â ±âº» ¸íÁ¦ÀÌ´Ù. ¶ÇÇÑ ±¸Á¶¶ó ºÒ¸®´Â ±âº» ¸íÁ¦´Â ½ÇÁ¦·Î ·¹ÄÚµå Çü½ÄÀÌ´Ù. Áö¿øµÇ´Â ´Ù¸¥ ±âº» µ¥ÀÌÅÍ ±¸Á¶´Â LISP ¿¡¼­ »ç¿ëµÇ¾ú´ø ¸®½ºÆ® ±¸Á¶¿Í ºñ½ÁÇÑ ¸®½ºÆ®ÀÌ´Ù. ¸®½ºÆ®´Â ¸¹Àº ¿ø¼ÒÀÇ ¿¬¼ÓÀÌ´Ù. ¿©±â¼­ ¿ø¼Ò´Â ¿øÀÚ, ±âº» ¸íÁ¦ ¶Ç´Â ´Ù¸¥ ¸®½ºÆ®¸¦ Æ÷ÇÔÇÏ´Â ´Ù¸¥ Ç×ÀÌ´Ù.

Prolog ´Â ¸®½ºÆ®¸¦ ¸í½ÃÇϱâ À§ÇØ ÀüÅëÀû ±¸¹®À» »ç¿ëÇÑ´Ù. ¸®½ºÆ® ¿ø¼Ò´Â ´ÙÀ½°ú °°ÀÌ ÄÞ¸¶¿¡ ÀÇÇØ ºÐ¸®µÇ°í, Àüü ¸®½ºÆ®´Â »ç°¢ °ýÈ£¿¡ ÀÇÇØ ¹üÀ§°¡ Á¤ÇØÁø´Ù.

    [apple, prune, grape, kumquat]

Ç¥±â¹ý [] ´Â °ø ¸®½ºÆ®¸¦ ³ªÅ¸³»´Â µ¥ »ç¿ëÇÑ´Ù. ¸®½ºÆ®¸¦ ¸¸µé°Å³ª ºÐÇØÇÏ´Â ¸í½ÃÀûÀÎ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ´ë½Å¿¡, Prolog ´Â °£´ÜÇÏ°Ô Æ¯º°ÇÑ ±âÈ£¸¦ »ç¿ëÇÑ´Ù. [X | Y] ´Â Çìµå X ¿Í Å×ÀÏ Y ¸¦ °®´Â ¸®½ºÆ®ÀÌ´Ù. ¿©±â¼­ Çìµå¿Í Å×ÀÏÀº LISP ÀÇ CAR, CDR ¿¡ ´ëÀÀµÈ´Ù. ÀÌ°ÍÀº Haskell ¿¡¼­ »ç¿ëÇϴ ǥ±â¹ý°ú À¯»çÇÏ´Ù.

¸®½ºÆ®´Â ´ÙÀ½°ú °°ÀÌ °£´ÜÇÑ ±¸Á¶¸¦ °®°í »ý¼ºµÈ´Ù.

    new_list ([apple, prune, grape, kumquat]).

ÀÌ°ÍÀº »ó¼ö ¸®½ºÆ® [apple, prune, grape, kumquat] °¡ new_list (¹æ±Ý ÀÛ¼ºÇÑ À̸§) ¶ó´Â À̸§À» °®´Â °ü°èÀÇ »õ·Î¿î ¿ø¼Ò¶ó¸¥ °ÍÀ» ³ªÅ¸³½´Ù. ÀÌ ¹®ÀåÀº new_list ¶ó´Â À̸§À» °®´Â º¯¼ö¿¡ ¸®½ºÆ®¸¦ ¹ÙÀεùÇÏÁö ¾Ê´Â´Ù. ¿ÀÈ÷·Á, ±×°ÍÀº ´ÙÀ½°ú °°Àº ¸íÁ¦ Áß¿¡ ÇϳªÀÌ´Ù.

    male (jake)

Áï ¸»ÇÏÀÚ¸é, ±×°ÍÀº [apple, prune, grape, kumquat] °¡ new_list ÀÇ »õ·Î¿î ¿ø¼Ò¶ó´Â °ÍÀ» ³ªÅ¸³½´Ù. ±×·¯¹Ç·Î, ¿ì¸®´Â ´ÙÀ½°ú °°Àº ¸®½ºÆ® ÀÎÀÚ¸¦ °®´Â µÎ¹ø° ¸íÁ¦¸¦ °¡Áú ¼ö ÀÖ´Ù.

    new_list ([apricot, peach, pear])

ÁúÀÇ ¸ðµå¿¡¼­, new_list ÀÇ ¿ø¼Ò´Â ´ÙÀ½°ú °°ÀÌ Çìµå¿Í Å×ÀÏ·Î ºÐ¸®µÉ ¼ö ÀÖ´Ù.

    new_list ([New_List_Head | New_List_Tail]).

¸¸¾à new_list °¡ À§¿Í °°ÀÌ µÎ °³ÀÇ ±¸¼º ¿ø¼Ò¸¦ °®µµ·Ï ¼³Á¤µÇ¾ú´Ù¸é, ÀÌ ¹®ÀåÀº New_List_Tail ¸¦ ¸®½ºÆ®ÀÇ Å×ÀÏ ([prune, grape, kumquat]) ·Î »ç·ÊÈ­ÇÑ´Ù. ¸¸¾à ÀÌ°ÍÀÌ º¹ÇÕ ¸ñÀûÀÇ ºÎºÐÀÌ°í, ¿ªÇàÀÌ ÀÌ°ÍÀÇ »õ·Î¿î Æò°¡¸¦ °­¿äÇß´Ù¸é, [apricot, peach, pear] ÀÌ new_list ÀÇ ´ÙÀ½ ¿ø¼ÒÀ̱⠶§¹®¿¡ New_List_Head ¿Í New_List_Tail Àº °¢°¢ apricot ¿Í [peach, pear] ¿¡ »ç·ÊÈ­µÈ´Ù.

¸®½ºÆ®¸¦ ºÐÇØÇÏ´Â µ¥ »ç¿ëµÈ Ç¥±â¹ýÀº ÁÖ¾îÁø »ç·ÊÈ­µÈ Çìµå¿Í Å×ÀÏ ¿ø¼Ò¸¦ ´ÙÀ½°ú °°ÀÌ ¸®½ºÆ®¸¦ »ý¼ºÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.

    [Element_1 | List_2]

¸¸¾à Element_1 ÀÌ pickle ¿¡ »ç·ÊÈ­µÇ°í, List_2 °¡ [peanut, prune, popcorn] ¿¡ »ç·ÊÈ­µÇ¾ú´Ù¸é, À§¿Í °°Àº Ç¥±â¹ýÀº ¸®½ºÆ® [pickle, peanut, prune, popcorn] À» »ý¼ºÇÑ´Ù.

À§¿¡¼­ ±â¼úµÈ °Íó·³, | ±âÈ£¸¦ Æ÷ÇÔÇÏ´Â ¸®½ºÆ® Ç¥±â¹ýÀº º¸ÆíÀûÀÌ´Ù. ±×°ÍÀº ¸®½ºÆ® »ý¼ºÀ̳ª ¸®½ºÆ® ºÐÇظ¦ ¸í½ÃÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½°ú °°Àº ¿¹Á¦´Â ¸ðµÎ µ¿ÀÏÇÏ´Ù´Â °Í¿¡ À¯ÀÇÇضó.

   [apricot, peach, pear | []]
   [apricot, peach | [pear]]
   [apricot, | [peach, pear]]

¸®½ºÆ®¸¦ ´Ù·ê ¶§, LISP ¿¡¼­ ¹ß°ßµÇ´Â °Í°ú °°Àº ¾î¶² ±âº» ¿¬»êÀÌ Á¾Á¾ ¿ä±¸ÇÑ´Ù. Prolog ¿¡¼­ ÀÌ·¯ÇÑ ¿¬»êÀÇ ¿¹Á¦·Î¼­, ¿ì¸®´Â LISP ÀÇ append ÇÔ¼ö¿Í °ü·ÃÀÌ ÀÖ´Â append ÀÇ Á¤ÀǸ¦ »ìÆ캻´Ù. ÀÌ ¿¹Á¦¿¡¼­, ÇÔ¼öÇü ¾ð¾î¿Í ¼±¾ðÀû ¾ð¾îÀÇ Â÷ÀÌÁ¡°ú À¯»çÁ¡À» º¼ ¼ö ÀÖ´Ù. Prolog °¡ ÁÖ¾îÁø ¸®½ºÆ®·ÎºÎÅÍ »õ·Î¿î ¸®½ºÆ®¸¦ »ý¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ±â¼úÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¿ÀÈ÷·Á, ¿ì¸®´Â ÁÖ¾îÁø ¸®½ºÆ®·Î¼­ »õ·Î¿î ¸®½ºÆ®ÀÇ Æ¯¼ºÀ» ±â¼úÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù.

¿Ü°üÀûÀ¸·Î, Prolog append Á¤ÀÇ´Â LISP append Á¤ÀÇ¿Í ¸Å¿ì À¯»çÇÏ°í, ÇØ µµÃâ¿¡¼­ Àç±Í´Â »õ·Î¿î ¸®½ºÆ®¸¦ »ý¼ºÇϱâ À§ÇÑ À¯»çÇÑ ¹æ¹ýÀ¸·Î »ç¿ëµÈ´Ù. Prolog ÀÇ °æ¿ì, Àç±Í´Â ÇØ µµÃâ °úÁ¤¿¡ ÀÇÇؼ­ ¹ß»ýµÇ°í Á¦¾îµÈ´Ù.

   append ([], List, List)
   append ([Head | List_1], List_2, [Head | List_3]) :- append (List_1, List_2, List_3).

ù ¸íÁ¦´Â °ø ¸®½ºÆ®°¡ ´Ù¸¥ ¸®½ºÆ®¿¡ ÷°¡µÉ ¶§, ´Ù¸¥ ¸®½ºÆ®°¡ °á°ú¶ó´Â °ÍÀ» ³ªÅ¸³½´Ù. ÀÌ ¹®ÀåÀº LISP append ÇÔ¼öÀÇ Àç±Í-Á¾°á ´Ü°è¿¡ ÇØ´çµÈ´Ù. Á¾°á ¸íÁ¦´Â Àç±Í ¸íÁ¦ Àü¿¡ À§Ä¡ÇÑ´Ù´Â °Í¿¡ À¯ÀÇÇ϶ó. Prolog ´Â óÀ½ºÎÅÍ ½ÃÀÛÇÏ¿© ¼ø¼­´ë·Î (±íÀÌ ¿ì¼± Ž»öÀ» »ç¿ëÇϱ⠶§¹®¿¡) µÎ ¸íÁ¦¿¡ ºÎÇյȴٴ °ÍÀ» ¾Ë°í Àֱ⠶§¹®¿¡, ÀÌ°ÍÀº ¼öÇàµÈ´Ù.

µÎ¹ø° ¸íÁ¦´Â »õ·Î¿î ¸®½ºÆ®ÀÇ ¿©·¯ °¡Áö Ư¼ºÀ» ¸í½ÃÇÑ´Ù. ±×°ÍÀº LISP ÇÔ¼öÀÇ Àç±Í ´Ü°è¿¡ ÇØ´çµÈ´Ù. Áº¯ÀÇ ¼ú¾î´Â »õ·Î¿î ¸®½ºÆ®ÀÇ Ã¹ ¿ø¼Ò°¡ óÀ½ ÁÖ¾îÁø ¸®½ºÆ®ÀÇ Ã¹ ¿ø¼Ò¿Í µ¿ÀÏÇÏ´Ù´Â °ÍÀ» ³ªÅ¸³½´Ù. ¿Ö³ÄÇÏ¸é ±×µéÀº Head ¶ó´Â À̸§À» °®±â ¶§¹®ÀÌ´Ù. Head °¡ °ªÀ¸·Î »ç·ÊÈ­µÉ ¶§¸¶´Ù, ¸ñÀû¿¡ ÀÖ´Â ¸ðµç Head ´Â, »ç½Ç»ó, µ¿½Ã¿¡ ±× °ªÀ¸·Î »ç·ÊÈ­µÈ´Ù. µÎ¹ø° ¹®ÀåÀÇ ¿ìº¯Àº ù¹ø° ÁÖ¾îÁø ¸®½ºÆ®ÀÇ Å×ÀÏ (List_1) Àº µÎ¹ø° ÁÖ¾îÁø ¸®½ºÆ® (List_2) ¸¦ ù¹ø° ÁÖ¾îÁø ¸®½ºÆ®ÀÇ Å×ÀÏ¿¡ ÷°¡ÇÏ¿© °á°ú ¸®½ºÆ®ÀÇ Å×ÀÏ (List_3) À» Çü¼ºÇ϶ó°í ÁöÁ¤ÇÑ´Ù.

append ÀÇ µÎ¹ø° ¹®ÀåÀ» Àд ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ¸®½ºÆ® [Head | List_1] ¸¦ List_2 ¿¡ ÷°¡ÇÏ¿© ¸®½ºÆ® [Head | List_3] À» »ý¼ºÇÏÁö¸¸, List_3 Àº List_1 À» List_2 À» ÷°¡ÇÔÀ¸·Î½á Çü¼ºµÈ´Ù. LISP ¿¡¼­ ÀÌ°ÍÀ» ´ÙÀ½°ú °°ÀÌ ¾µ ¼ö ÀÖ´Ù.

    (CONS (CAR FIRST) (APPEND (CDR FIRST) SECOND))

Prolog ¿Í LISP append ¿¡¼­ °á°ú ¸®½ºÆ®´Â Àç±Í°¡ Á¾·á Á¶°ÇÀ» »ý»êÇÒ ¶§±îÁö ¸¸µé¾îÁöÁö ¾Ê´Â´Ù. ÀÌ °æ¿ì¿¡, ù ¸®½ºÆ®´Â ¹Ýµå½Ã °ø ¸®½ºÆ®ÀÌ´Ù. ±×·± ÈÄ¿¡, °á°ú ¸®½ºÆ®°¡ append ÇÔ¼ö¸¦ »ç¿ëÇؼ­ ¸¸µé¾îÁø´Ù. ù ¸®½ºÆ®¿¡¼­ ÃëÇØÁø ¿ø¼Ò´Â ¿ª¼øÀ¸·Î µÎ¹ø° ¸®½ºÆ®¿¡ ÷°¡µÈ´Ù. ¿ª¼øÀº Àç±Í¸¦ ÇØ°áÇÔÀ¸·Î½á ¿Ï¼ºµÈ´Ù.

¾î¶»°Ô append °úÁ¤ÀÌ ÁøÇàµÇ´Â°¡¸¦ ¼³¸íÇϱâ À§ÇØ, ´ÙÀ½ÀÇ ÃßÀûµÈ ¿¹Á¦¸¦ »ý°¢ÇØ º¸ÀÚ.

   trace.
   append ([bob, jo], [jake, darcie], family).

   (1) 1 Call : append ([bob, jo], [jake, darcie], _10)?
   (2) 2 Call : append ([jo], [jake, darcie], _18)?
   (3) 3 Call : append ([], [jake, darcie], _25)?
   (3) 3 Exit : append ([], [jake, darcie], [jake, darcie])
   (2) 2 Exit : append ([jo], [jake, darcie], [jo, jake, darcie])
   (1) 1 Exit : append ([bob, jo], [jake, darcie], [bob, jo, jake, darcie])

   Family = [bob, jo, jake, darcie]
   yes

ºÎ¸ñÀûÀ» Ç¥ÇöÇϴ ù µÎ °³ÀÇ call Àº °ø ¸®½ºÆ®°¡ ¾Æ´Ñ List_1 À» °®´Â´Ù. ±×·¡¼­ µÎ¹ø° ¹®ÀåÀÇ ¿ìº¯À¸·ÎºÎÅÍ Àç±Í È£ÃâÀ» »ý¼ºÇÑ´Ù. µÎ¹ø° ¹®ÀåÀÇ Áº¯Àº È¿°úÀûÀ¸·Î Àç±Í È£Ãâ Áï ¸ñÀûÀ» À§ÇÑ ÀÎÀÚ¸¦ ¸í½ÃÇÑ´Ù. ±×·¯¹Ç·Î ù¹ø° ¸®½ºÆ®´Â °¢ ´Ü°è ´ç ÇϳªÀÇ ¿ø¼Ò¸¦ ºÐ¸®½ÃŲ´Ù. ù¹ø° ¸®½ºÆ®°¡ È£Ãâ Áï ºÎ¸ñÀû¿¡¼­ °ø ¸®½ºÆ®ÀÏ ¶§, µÎ¹ø° ¹®ÀåÀÇ ¿ìº¯ÀÇ ÀνºÅϽº´Â ù¹ø° ¹®Àå¿¡ ºÎÇÕÇÔÀ¸·Î½á ¼º°øÇÑ´Ù. ÀÌ°ÍÀÇ È¿°ú´Â ¼¼¹ø° ¸Å°³º¯¼ö·Î¼­ µÎ¹ø° ¿ø·¡ ¸Å°³º¯¼ö ¸®½ºÆ®¿¡ ÷°¡µÈ °ø ¸®½ºÆ®ÀÇ °ªÀ» ¹ÝȯÇÏ´Â °ÍÀÌ´Ù. ¼º°øÀûÀÎ ºÎÇÕÀ» Ç¥ÇöÇÏ´Â ¿¬¼ÓÀûÀÎ exit ¿¡¼­ ù ¸®½ºÆ®·ÎºÎÅÍ Á¦°ÅµÈ ¿ø¼Ò´Â °á°ú ¸®½ºÆ® - Family - ¿¡ ÷°¡µÈ´Ù. ù ¸ñÀûÀÇ exit °¡ ½ÇÇàµÉ ¶§, ±× °úÁ¤Àº ¿Ï¼ºµÇ°í, °á°ú ¸®½ºÆ®°¡ Ç¥½ÃµÈ´Ù.

append ¸íÁ¦´Â ´ÙÀ½°ú °°Àº ´Ù¸¥ ¸®½ºÆ® ¿¬»êÀ» »ý¼ºÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ ¿¬»êÀÇ °á°ú¸¦ ¿©·¯ºÐµéÀÌ °áÁ¤Çϱ⠹ٶõ´Ù. list_op_2 ´Â ù ¸Å°³º¯¼ö·Î ¸®½ºÆ®¸¦, µÎ¹ø° ¸Å°³º¯¼ö·Î º¯¼ö¸¦ Á¦°øÇÏ°í, list_op_2 ÀÇ °á°ú´Â µÎ¹ø° ¸Å°³º¯¼ö°¡ »ç·ÊÈ­µÈ °ªÀÓ¿¡ À¯ÀÇÇ϶ó.

   list_op_2 ([], []).
   list_op_2 ([Head | Tail], List) :- List_op_2 (Tail, Result), append (Result, [Head], List).

µ¶ÀÚ°¡ °áÁ¤ÇÒ ¼ö ÀÖ´Â °Íó·³, list_op_2 ´Â Prolog ½Ã½ºÅÛ¿¡°Ô µÎ¹ø° ¸Å°³º¯¼ö¸¦ ù¹ø° ¸Å°³º¯¼öÀÇ ¸®½ºÆ® ¿ø¼Ò¸¦ ¿ª¼øÀ¸·Î °®´Â ¸®½ºÆ®·Î »ç·ÊÈ­½ÃÅ°°Ô ÇÑ´Ù. ¿¹¸¦ µé¸é, ([apple, orange, grape], Q) ´Â Q ¸¦ ¸®½ºÆ® [grape, orange, apple] ·Î »ç·ÊÈ­ÇÑ´Ù.

´Ù½Ã Çѹø, ºñ·Ï LISP ÀÇ Prolog ¾ð¾î°¡ º»ÁúÀûÀ¸·Î ´Ù¸£´Ù°í ÇÒÁö¶óµµ, À¯»çÇÑ ¿¬»êÀº À¯»çÇÑ Á¢±Ù ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿ª ¸®½ºÆ® ¿¬»êÀÇ °æ¿ì¿¡, Prolog ÀÇ list_op_2 ¿Í LISP ÀÇ reverse ÇÔ¼ö´Â Àç±Í Á¾·á Á¶°Ç°ú °á°ú ¸®½ºÆ®¸¦ »ý¼ºÇϱâ À§ÇÏ¿© ¸®½ºÆ®ÀÇ CDR (Áï Å×ÀÏ) ÀÇ ¿ª ¸®½ºÆ®¸¦ ¸®½ºÆ®ÀÇ CAR (Áï Çìµå) ¿¡ ÷°¡½ÃÅ°´Â ±âº» °úÁ¤À» Æ÷ÇÔÇÑ´Ù.

´ÙÀ½Àº reverse ¶ó À̸§ ºÙ¿©Áø ÀÌ °úÁ¤ ÃßÀûÀÌ´Ù.

   trace.
   reverse ([a, b, c], Q).

   (1) 1 Call : reverse ([a, b, c], _6)?
   (2) 2 Call : reverse ([b, c], _65636)?
   (3) 3 Call : reverse ([c], _65646)?
   (4) 4 Call : reverse ([ ], _65656)?
   (4) 4 Exit : reverse ([ ], [ ])
   (5) 4 Call : append ([ ], [c], _65646)?
   (5) 4 Exit : append ([ ], [c], [c])
   (3) 3 Exit : reverse ([c], [c])
   (6) 3 Call : append ([c], [b], _65636)?
   (7) 4 Call : append ([ ], [b], _25)?
   (7) 4 Exit : append ([ ], [b], [b])
   (6) 3 Exit : append ([c], [b], [c, b])
   (2) 2 Exit : reverse ([b, c], [c, b])
   (8) 2 Call : append ([c, b], [a], _6)?
   (9) 3 Call : append ([b], [a], _32)?
   (10) 4 Call : append ([ ], [a], _39)?
   (10) 4 Exit : append ([ ], [a], [a])
   (9) 3 Exit : append ([b], [a], [b, a])
   (8) 2 Exit : append ([c, b], [a], [c, b, a])
   (1) 1 eXIT :REVERSE ([A, B, C], [C, B, A])

   Q = [c, b, a]

ÁÖ¾îÁø ±âÈ£°¡ ÁÖ¾îÁø ¸®½ºÆ®¿¡ ÀÖ´ÂÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù°í °¡Á¤ÇÏÀÚ. Á÷¼³ÀûÀÎ Prolog Ç¥ÇöÀº ´ÙÀ½°ú °°´Ù.

   member (Element, [Element | _]).
   member (Element, [_ | List]) :- member (Element, List).

¹ØÁÙ ¹®ÀÚ´Â ÀÍ¸í º¯¼ö¸¦ ³ªÅ¸³»°í, ±×°ÍÀº ´ÜÀÏÈ­·ÎºÎÅÍ ¾ò¾îÁö´Â »ç·ÊÈ­¿¡ °ü½ÉÀÌ ¾ø´Ù´Â °ÍÀ» ÀǹÌÇÏ´Â µ¥ »ç¿ëµÈ´Ù. ¸¸¾à óÀ½ºÎÅÍ ¶Ç´Â µÎ ¹ø° ¹®ÀåÀ» Åë°úÇÏ¿© ¿©·¯ Àç±Í°¡ ÀÖÀº ÈÄ¿¡ Element °¡ ¸®½ºÆ®ÀÇ ÇìµåÀ̸é, À§ÀÇ Ã¹¹®ÀåÀº ¼º°øÇÑ´Ù. ¸¸¾à Element °¡ ¸®½ºÆ®ÀÇ Å×ÀÏ Áß¿¡ Çϳª¸é, µÎ ¹ø° ¹®ÀåÀº ¼º°øÇÑ´Ù. ´ÙÀ½ ÃßÀûµÈ ¿¹Á¦¸¦ »ý°¢Çغ¸ÀÚ.

   trace.
   member (a, [b, c, d] ).
   (1) 1 Call : member (a, [b, c, d])?
   (2) 2 Call : member (a, [c, d])?
   (3) 3 Call : member (a, [d])?
   (4) 4 Call : member (a, [ ])?
   (4) 4 Fail : member (a, [ ])
   (3) 3 Fail : member (a, [d])
   (2) 2 Fail : member (a, [c, d])
   (1) 1 Fail : member (a, [b, c, d])
   no

   member (a, [b, a, c]).
   (1) 1 Call : member (a, [b, a, c])?
   (2) 2 Call : member (a, [a, c])?
   (2) 2 Exit : member (a, [a, c])
   (1) 1 Exit : member (a, [b, a, c])
   yes

7. Prolog ÀÇ °áÁ¡

³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î¼­ Prolog ¸¦ »ç¿ëÇÒ ¶§ ¿©·¯ °¡Áö ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. ºñ·Ï ±×°ÍÀÌ À¯¿ëÇÑ µµ±¸ÀÏÁö¶óµµ, ±×°ÍÀº ¼ø¼öÇϰųª ¿ÏÀüÇÑ ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ ¾Æ´Ï´Ù.

(1) ÇØ µµÃâ ¼ø¼­ Á¦¾î

È¿À²ÀûÀÎ ÀÌÀ¯·Î, Prolog ´Â »ç¿ëÀÚ°¡ ÇØ µµÃâÀ» ¼öÇàÇÏ´Â µ¿¾È¿¡ ÆÐÅÏ ¸ÅĪÀÇ ¼ø¼­¸¦ Á¦¾îÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ¼ø¼ö ³í¸® ÇÁ·Î±×·¡¹Ö ȯ°æ¿¡¼­´Â, ÇØ µµÃâ µ¿¾È¿¡ ¹ß»ýÇÑ ½ÃµµµÈ ºÎÇÕÀÇ ¼ø¼­´Â ºñ°áÁ¤ÀûÀÌ°í ¸ðµç ºÎÇÕÀº º´·ÄÀûÀ¸·Î ½ÃµµµÉ ¼ö ÀÖ´Ù. ±×·¯³ª Prolog ´Â Ç×»ó µ¥ÀÌÅͺ£À̽ºÀÇ Ã³À½°ú ÁÖ¾îÁø ¸ñÀûÀÇ ¿ÞÂÊ ³¡¿¡¼­ ½ÃÀÛÇÏ´Â µ¿ÀÏÇÑ ¼ø¼­·Î ºÎÇյDZ⠶§¹®¿¡, »ç¿ëÀڴ Ưº°ÇÑ ÀÀ¿ëÀ» ÃÖÀûÈ­Çϱâ À§ÇØ µ¥ÀÌÅͺ£À̽º ¹®ÀåÀ» Á¤µ·ÇÔÀ¸·Î½á ½É¿ÀÇÏ°Ô È¿À²¼º¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é, ¸¸¾à »ç¿ëÀÚ°¡ Ưº°ÇÑ ½ÇÇà µ¿¾È¿¡ ¾î¶² ±ÔÄ¢ÀÌ ´Ù¸¥ ±ÔÄ¢º¸´Ù ´õ¿í ¼º°øÇÒ °Í °°´Ù´Â Áö½ÄÀ» °¡Áö°í ÀÖ´Ù¸é, ±×·± ±ÔÄ¢À» µ¥ÀÌÅͺ£À̽ºÀÇ Ã³À½¿¡ À§Ä¡ÇÏ°Ô ÇÏ¿© ÇÁ·Î±×·¥À» ´õ¿í È¿À²ÀûÀ¸·Î ¸¸µé ¼ö ÀÖ´Ù.

´À¸° ÇÁ·Î±×·¥ ½ÇÇàÀÌ Prolog ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÀÚ-Á¤ÀÇ ¼ø¼­ÀÇ ºÎÁ¤ÀûÀÎ °á°ú¸¸Àº ¾Æ´Ï´Ù. ¹«ÇÑ ·çÇÁ µû¶ó¼­ Àü ÇÁ·Î±×·¥ ½ÇÆи¦ ¹ß»ý½ÃÅ°´Â Çü½ÄÀ¸·Î ¹®ÀåÀ» ÀÛ¼ºÇϱâ´Â ¸Å¿ì ½±´Ù. ¿¹¸¦ µé¸é, ´ÙÀ½ Àç±Í ¹®Àå Çü½ÄÀ» °í·ÁÇغ¸ÀÚ.

    f (x, y) :- f (z, Y), g (X, z).

Prolog ÀÇ Á¿ì (left-to-right) ±íÀÌ-¿ì¼± Æò°¡ ¼ø¼­ ¶§¹®¿¡, ¹®Àå ¸ñÀû¿¡ °ü°è¾øÀÌ, ÀÌ°ÍÀº ¹«ÇÑ ·çÇÁ¸¦ ¹ß»ý½ÃŲ´Ù. ÀÌ·± Á¾·ùÀÇ ¹®ÀåÀÇ ¿¹·Î¼­ ´ÙÀ½À» »ý°¢Çغ¸ÀÚ.

   ancestor (X, X).
   ancestor (X, Y) :- ancestor (Z, Y), parent (X, Z).

µÎ ¹ø° ¸íÁ¦ÀÇ ¿ìº¯ÀÇ Ã¹ ºÎ¸ñÀûÀ» ¸¸Á·½ÃÅ°±â À§ÇÑ ½Ãµµ¿¡¼­, Prolog ´Â ancestor ¸¦ ÂüÀ¸·Î Çϱâ À§ÇØ Z ¸¦ »ç·ÊÈ­ÇÑ´Ù. ±×·± ÈÄ, ÀÌ »õ ºÎ¸ñÀûÀ» ¸¸Á·½ÃÅ°·Á°í ½ÃµµÇÑ´Ù. Áï ancestor ÀÇ Á¤ÀÇ·Î µ¹¾Æ°¡¼­ °°Àº °úÁ¤À» ¹Ýº¹ÇÏ¿©, °á±¹ ¹«ÇÑ Àç±Í¿¡ À̸¥´Ù.

ÀÌ Æ¯º°ÇÑ ¹®Á¦´Â 3 Àå¿¡¼­ ³íÀÇµÈ °Íó·³, ¹®¹ý ±ÔÄ¢¿¡¼­ ¿ÞÂÊ Àç±Í¸¦ °®´Â Àç±Í ÇÏÇâ Æļ­°¡ °®´Â ¹®Á¦¿Í µ¿ÀÏÇÏ´Ù. ÆĽÌÀÇ ¹®¹ý ±ÔĢó·³, À§ ¸íÁ¦ÀÇ ¿ìº¯¿¡¼­ °£´ÜÇÏ°Ô Ç×ÀÇ ¼ø¼­¸¦ ¹Ù²Ù¸é ±× ¹®Á¦´Â Á¦°ÅµÈ´Ù. ÀÌ°ÍÀÇ ¹®Á¦´Â Ç× ¼ø¼­ÀÇ °£´ÜÇÑ º¯È¯ÀÌ ÇÁ·Î±×·¥ Á¤È®¼º¿¡ °áÁ¤ÀûÀÌ µÇ¾î¼­´Â ¾ÈµÈ´Ù´Â °ÍÀÌ´Ù. ¹«¾ùº¸´Ùµµ, Á¦¾î ¼ø¼­¿¡ ´ëÇØ ÇÁ·Î±×·¡¸Ó°¡ °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀÌ ¾Æ¸¶µµ ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ÀåÁ¡ Áß¿¡ ÇϳªÀÏ °ÍÀÌ´Ù.

»ç¿ëÀÚ¿¡°Ô µ¥ÀÌÅͺ£À̽º¿Í ºÎ¸ñÀû ¼ø¼­ Á¦¾î¸¦ Çã¿ëÇÏ´Â °Í ÀÌ¿Ü¿¡µµ, È¿À²¼ºÀ» À§Çؼ­, Prolog ´Â ¿ªÇàÀÇ ¸í½ÃÀûÀÎ Á¦¾î¸¦ Çã¿ëÇÑ´Ù. ÀÌ°ÍÀº cut ¿¬»êÀÚ·Î ¼öÇàµÇ°í, °¨Åº»ç (!) ·Î Ç¥½ÃµÈ´Ù. cut ¿¬»êÀÚ´Â ¿¬»êÀÚ°¡ ¾Æ´Ï¶ó ½ÇÁ¦·Î ¸ñÀûÀÌ´Ù. ¸ñÀûÀ¸·Î¼­, cut Àº Ç×»ó Áï½Ã ¼º°øÇÏÁö¸¸, ¿ªÇàÀ» ÅëÇؼ­ Àç ¸¸Á·½Ãų ¼ö ÀÖ´Ù. cut ÀÇ ºÎÀÛ¿ëÀº º¹ÇÕ ¸ñÀû¿¡¼­ cut ÀÇ ¿ÞÂÊ ºÎ¸ñÀûÀº ¿ªÇàÀ» ÅëÇؼ­ Àç ¸¸Á·½Ãų ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù. ¿¹·Î µé¸é, ´ÙÀ½°ú °°Àº ¸ñÀû¿¡¼­,

    a, b, !, c, d.

¸¸¾à a, b °¡ ¼º°øÇÏ°í, c °¡ ½ÇÆÐÇϸé, Àüü ¸ñÀûÀº ½ÇÆÐÇÑ´Ù. c °¡ ½ÇÆÐÇÒ ¶§¸¶´Ù, b ³ª a ¸¦ Àç ¸¸Á·½ÃÅ°´Â °ÍÀÌ ½Ã°£ ³¶ºñ¶ó´Â °ÍÀÌ ¾Ë·ÁÁ³´Ù¸é, ÀÌ ¸ñÀûÀÌ »ç¿ëµÉ °ÍÀÌ´Ù.

cut ÀÇ ¸ñÀûÀº ¿ÏÀüÇÑ Áõ¸íÀ» ÇÒ ¼ö ¾ø´Â ºÎ¸ñÀûÀ» Àç ¸¸Á·½ÃÅ°·Á´Â ½Ãµµ¸¦ ÇÏÁö ¾ÊÀ» ½ÃÁ¡À» ½Ã½ºÅÛ¿¡°Ô ¸»ÇÏ°Ô ÇÔÀ¸·Î½á »ç¿ëÀÚ°¡ ÇÁ·Î±×·¥À» ´õ¿í È¿À²ÀûÀ¸·Î ¸¸µå´Â °ÍÀ» Çã¿ëÇÏ´Â °ÍÀÌ´Ù.

cut ¿¬»êÀÚÀÇ »ç¿ë ¿¹·Î¼­, 6.7 ÀýÀÇ member ÇÔ¼ö¸¦ »ý°¢ÇØ º¸ÀÚ.

   member (Element, [Elemtne | _]).
   member (Element, [_ | List]) :- member (Element, List).

¸¸¾à member ÀÇ ¸®½ºÆ® ¸Å°³º¯¼ö°¡ ÁýÇÕÀ» ³ªÅ¸³»¸é, ±×°ÍÀº ´ÜÁö Çѹø¸¸ ¸¸Á·µÉ ¼ö ÀÖ´Ù (ÁýÇÕÀº Áߺ¹µÈ ¿ø¼Ò¸¦ °®Áö ¾Ê´Â´Ù). ±×·¯¹Ç·Î, ¸¸¾à member °¡ ´ÙÁß ºÎ¸ñÀûÀ¸·Î ±¸¼ºµÈ ¸ñÀû ¹®ÀåÀÇ ºÎ¸ñÀûÀ¸·Î¼­ »ç¿ëµÈ´Ù¸é, ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. ¹®Á¦´Â ¸¸¾à member ´Â ¼º°øÇÏÁö¸¸ ´ÙÀ½ ºÎ¸ñÀûÀÌ ½ÇÆÐÇÑ´Ù¸é, ¿ªÇàÀÌ Àü ºÎÇÕÀ» °è¼ÓÇÔÀ¸·Î½á member ¸¦ À縸Á·½ÃÅ°·Á°í ÇÒ °ÍÀÌ´Ù. ±×·¯³ª Àü ºÎÇÕÀ» °è¼ÓÇÔÀ¸·Î½á member ¸¦ À縸Á·½ÃÅ°·Á°í ÇÒ °ÍÀÌ´Ù. ±×·¯³ª member ÀÇ ¸®½ºÆ® ¸Å°³º¯¼ö´Â óÀ½ºÎÅÍ ±× ¿ø¼Ò´Â Çϳª¸¸ °¡Áö±â ¶§¹®¿¡, member ´Â ´Ù½Ã ¼º°øÇÒ ¼ö ¾ø´Ù. member ¸¦ À縸Á·½ÃÅ°·Á´Â ºÎ°¡ÀûÀÎ ½Ãµµ¿¡µµ ºÒ±¸ÇÏ°í °á±¹Àº Àüü ¸ñÀûÀÌ ½ÇÆÐÇÏ°Ô µÈ´Ù. ÀÌ·± ºñÈ¿À²¼º¿¡ ´ëÇÑ ÇØ°áÃ¥Àº member Á¤ÀÇÀÇ Ã¹ ¹®Àå ¿ìº¯¿¡ ´ÙÀ½°ú °°ÀÌ ´Ü ÇϳªÀÇ ¿ø¼Ò·Î cut ¿¬»êÀÚ¸¦ ÷°¡½ÃÅ°´Â °ÍÀÌ´Ù.

    member (Element, [Element | _]) :- !.

¿ªÇàÀº member ¸¦ Àç ¸¸Á·½ÃÅ°·Á°í ½ÃµµÇÏÁö ¾Ê°í, ´ë½Å Àüü ºÎ¸ñÀûÀ» ½ÇÆÐÇÏ°Ô ÇÑ´Ù.

cut Àº Prolog ¿¡¼­ »ý¼º-°Ë»ç (generate and test) ¶ó ºÒ¸®´Â ÇÁ·Î±×·¡¹Ö ¹æ¹ý¿¡ Ưº°È÷ À¯¿ëÇÏ´Ù. ÀÌ·± ÇÁ·Î±×·¥¿¡¼­, ¸ñÀûÀº ÀáÀçÀûÀÎ ÇØ°áÃ¥À» »ý¼ºÇÏ´Â ºÎ¸ñÀûÀ¸·Î ±¸¼ºµÈ´Ù. ÀÌ ÀáÀçÀûÀÎ ÇØ°áÃ¥Àº ³ªÁß test ºÎ¸ñÀû¿¡ ÀÇÇؼ­ °Ë»çµÈ´Ù. °ÅºÎµÈ ÀáÀçÀûÀÎ ÇØ°áÃ¥Àº »õ·Î¿î ÀáÀçÀûÀÎ ÇØ°áÃ¥À» »ý¼ºÇÏ´Â »ý¼ºÀÚ ºÎ¸ñÀû¿¡ ¿ªÇàÀ» ¿ä±¸ÇÑ´Ù. »ý¼º-°Ë»ç ÇÁ·Î±×·¥ÀÇ ¿¹Á¦·Î¼­, Clocksin °ú Mellish (1984) °¡ Àú¼úÇÑ Ã¥¿¡ ³ª¿À´Â ´ÙÀ½ ¿¹Á¦¸¦ »ý°¢ÇØ º¸ÀÚ.

    divide (N1, N2, Result) :- is_integer (Result),
                   Product1 is Result * N2,
                   Product2 is (Result + 1) * N2,
                   Product1 =< N1, Product2 > N1, !.

ÀÌ ÇÁ·Î±×·¥Àº ÇÕ°ú °öÀ» ÀÌ¿ëÇؼ­ Á¤¼ö ³ª´©±â¸¦ ½ÇÇàÇÑ´Ù. ´ëºÎºÐÀÇ Prolog ½Ã½ºÅÛÀº ¿¬»êÀڷμ­ ³ª´©¼ÀÀ» Á¦°øÇϱ⠶§¹®¿¡, °£´ÜÇÑ »ý¼º-°Ë»ç ÇÁ·Î±×·¥À» ¼³¸íÇÏ´Â °Í ¿Ü¿¡´Â ÀÌ ÇÁ·Î±×·¥Àº ½ÇÁ¦·Î À¯¿ëÇÏÁö ¾Ê´Ù.

¼ú¾î is_integer ´Â ¸Å°³º¯¼ö°¡ À½ÀÌ ¾Æ´Ñ Á¤¼ö¿¡ »ç·ÊÈ­µÇ´Â ÇÑ ¼º°øÇÑ´Ù. ¸¸¾à ¸Å°³º¯¼ö°¡ »ç·ÊÈ­µÇÁö ¾Ê¾Ò´Ù¸é, is_integer ´Â ¸Å°³º¯¼ö¸¦ ´ÙÀ½ Á¤¼ö °ªÀ¸·Î »ç·ÊÈ­ÇÑ´Ù.

±×·¯¹Ç·Î, divide ¿¡¼­ is_integer ´Â »ý¼ºÀÚ ºÎ¸ñÀûÀÌ´Ù. ±×°ÍÀº ¸¸Á·µÉ ¶§¸¶´Ù Çϳª¾¿, ¼ö¿­ 0, 1, 2, ..., ÀÇ ¿ø¼Ò¸¦ »ý¼ºÇÑ´Ù. ¸ðµç ´Ù¸¥ °ÍÀº °Ë»ç ºÎ¸ñÀûÀÌ´Ù. ±×µéÀº is_integer ¿¡ ÀÇÇØ »ý¼ºµÈ °ªÀÌ, ½ÇÁ¦·Î, ù µÎ ¸Å°³º¯¼ö N1 °ú N2 ÀÇ ¸òÀΰ¡¸¦ °áÁ¤Çϱâ À§ÇØ °Ë»çÇÑ´Ù. ¸¶Áö¸· ºÎ¸ñÀûÀ¸·Î¼­ cut ÀÇ ¿ëµµ´Â °£´ÜÇÏ´Ù. ÀÏ´Ü ÇØ°¡ ¹ß°ßµÇ¸é divide °¡ ´Ù¸¥ Çظ¦ ãÀ»·Á´Â ½Ãµµ¸¦ ¸·´Â´Ù. is_integer °¡ °Å´ëÇÑ Èĺ¸ ¼ö¸¦ »ý¼ºÇÒ Áö¶óµµ, Çϳª¸¸ÀÌ ÇØÀÌ´Ù. ±×·¡¼­ ¿©±â¼­ÀÇ cut Àº µÎ ¹ø° Çظ¦ »ý¼ºÇÒ·Á´Â ¾µ¸ð ¾ø´Â ½Ãµµ¸¦ ¸·´Â´Ù.

cut ¿¬»êÀÚÀÇ »ç¿ëÀº ¸í·ÉÇü ¾ð¾îÀÇ goto »ç¿ë°ú ºñ±³µÇ¾ú´Ù (Van Emden, 1980). ºñ·Ï ±×°ÍÀÌ ¶§¶§·Î ÇÊ¿äÇÒÁö¶óµµ, cut ¸¦ ³²¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ½ÇÁ¦·Î, ±×°ÍÀº ¶§¶§·Î ¸í·ÉÇü ¾ð¾î ½ºÅ¸ÀϷκÎÅÍ ¿µ°¨À» ¹ÞÀº Á¦¾î È帧À» °®´Â ³í¸® ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇØ »ç¿ëµÈ´Ù.

Prolog ÇÁ·Î±×·¥¿¡¼­ Á¦¾î È帧À» °íÄ¥ ¼ö ÀÖ´Â ´É·ÂÀº °áÁ¡ÀÌ´Ù. ¿Ö³ÄÇÏ¸é ±×°ÍÀº ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ Áß¿äÇÑ ÀåÁ¡ Áß¿¡ Çϳª - ÇÁ·Î±×·¥Àº ÇØ°¡ ¹ß°ßµÇ´Â ¹æ¹ýÀ» ¸í±âÇÏÁö ¾Ê´Â´Ù - ¿¡ Çطӱ⠶§¹®ÀÌ´Ù. ¿ÀÈ÷·Á, ±×µéÀº °£´ÜÇÏ°Ô ÇØ°áÃ¥ÀÇ ÇüŸ¦ ¸í±âÇÑ´Ù. ÀÌ°ÍÀº ÇÁ·Î±×·¥À» ¸¸µé±â ½±°í, Àб⠽±°Ô ÇÑ´Ù. ÇÁ·Î±×·¥Àº ÇØ°áÃ¥ÀÌ °áÁ¤µÇ´Â ¹æ¹ýÀÇ ¼¼ºÎ »çÇ×°ú, ƯÈ÷, ÇØ°áÃ¥À» »ý¼ºÇϱâ À§ÇØ °è»êÀÌ ¼öÇàµÇ´Â Á¤È®ÇÑ ¼ø¼­·Î ÀÎÇØ º¹ÀâÇÏ°Ô µÇÁö ¾Ê´Â´Ù. µû¶ó¼­, ³í¸® ÇÁ·Î±×·¡¹ÖÀÌ Á¦¾î È帧 ¹æÇâÀ» ¿ä±¸ÇÏÁö ¾ÊÁö¸¸, ÁÖ·Î È¿À²À» À§Çؼ­, Prolog ÇÁ·Î±×·¥Àº Á¦¾îÈ帧À» ÀÚÁÖ »ç¿ëÇÑ´Ù.

(2) ´ÝÈù ¼¼°è °¡Á¤

Prolog ÇØ µµÃâÀÇ Æ¯¼ºÀº ¶§¶§·Î À߸øµÈ °á°ú¸¦ »ý¼ºÇÑ´Ù. Prolog ¿¡ °üÇÑ ÇÑ Áø¸®´Â Prolog ÀÇ µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ¿© Áõ¸íµÈ Áø¸®´Ù. Prolog ´Â µ¥ÀÌÅͺ£À̽º ÀÌ¿Ü¿¡ ½Ç¼¼°èÀÇ Áö½ÄÀº ¾ø´Ù. µ¥ÀÌÅͺ£À̽º¿¡ ÃæºÐÇÑ Á¤º¸°¡ ¾ø´Â ÁúÀÇ´Â Àý´ëÀûÀ¸·Î °ÅÁþÀ̶ó°í °¡Á¤ÇÑ´Ù. Prolog ´Â ÁÖ¾îÁø ¸ñÀûÀÌ ÂüÀÎ °ÍÀ» Áõ¸íÇÒ ¼ö ÀÖÁö¸¸, ÁÖ¾îÁø ¸ñÀûÀÌ °ÅÁþÀÎ °ÍÀ» Áõ¸íÇÒ ¼ö ¾ø´Ù. Prolog ´Â ¸ñÀûÀÌ ÂüÀ̶ó°í Áõ¸íÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ¸ñÀûÀÌ °ÅÁþÀÓ¿¡ Ʋ¸²¾ø´Ù°í °£´ÜÇÏ°Ô °¡Á¤ÇÑ´Ù. º»ÁúÀûÀ¸·Î, Prolog ´Â Âü/°ÅÁþ ½Ã½ºÅÛÀÌ ¾Æ´Ï¶ó Âü/½ÇÆÐ ½Ã½ºÅÛÀÌ´Ù.

½ÇÁ¦ÀûÀ¸·Î ´ÝÈù ¼¼°è °¡Á¤ (closed world assumption) Àº ¿©·¯ºÐ¿¡°Ô ÀüÇô ³¸¼± °ÍÀº ¾Æ´Ï´Ù. ¿ì¸®ÀÇ »ç¹ý ½Ã½ºÅÛµµ µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÑ´Ù. ¿ëÀÇÀÚ´Â À¯ÁË·Î Áõ¸íµÉ ¶§±îÁö ¹«ÁËÀÌ´Ù. ±×µéÀº ¹«Á˶ó°í Áõ¸íÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¸¸¾à ÀçÆÇÀÌ ¾î¶² »ç¶÷ÀÌ À¯Á˶ó°í Áõ¸íÇÏÁö ¸øÇϸé, ¿ëÀÇÀÚ´Â ¹«ÁË·Î ÀÎÁ¤µÈ´Ù.

´ÝÈù ¼¼°è °¡Á¤ÀÇ ¹®Á¦Á¡Àº ´ÙÀ½Àý¿¡¼­ ³íÀÇÇÒ ºÎÁ¤ ¹®Á¦¿Í °ü·ÃµÇ¾î ÀÖ´Ù.

(3) ºÎÁ¤ ¹®Á¦

Prolog ÀÇ ´Ù¸¥ ¹®Á¦´Â ºÎÁ¤ÀÇ ¾î·Á¿òÀÌ´Ù. µÎ °³ÀÇ »ç½Ç°ú ÇϳªÀÇ °ü°è·Î ±¸¼ºµÈ ´ÙÀ½ µ¥ÀÌÅͺ£À̽º¸¦ »ìÆ캸ÀÚ.

   parent (bill, jake).
   parent (bill, shelley).
   sibling (X, Y) :- parent (M, X), parent (M, Y).

ÀÌÁ¦, ´ÙÀ½ ÁúÀÇ°¡ ÁÖ¾îÁ³´Ù°í °¡Á¤ÇÏÀÚ.

   sibling (X, Y).

Prolog ´Â ´ÙÀ½°ú °°ÀÌ ÀÀ´äÀ» ÇÒ °ÍÀÌ´Ù.

   X = jake
   Y = jake

±×·¯¹Ç·Î, Prolog ´Â jake ¸¦ ÀÚ±â ÀÚ½ÅÀÇ ÇüÁ¦¶ó°í »ý°¢ÇÑ´Ù. ÀÌ°ÍÀº ½Ã½ºÅÛÀÌ Ã¹ ºÎ¸ñÀû parent (M, X) ¸¦ ÂüÀ¸·Î ¸¸µé±â À§ÇØ Ã³À½¿¡ M À» bill °ú x ¸¦ jake ·Î »ç·ÊÈ­½ÃÄױ⠶§¹®¿¡ ¹ß»ýÇÑ´Ù. ±×·± ÈÄ, µÎ ¹ø° ºÎ¸ñÀû parent (M, Y) ¸¦ ºÎÇÕÇϱâ À§ÇØ ´Ù½Ã µ¥ÀÌÅͺ£À̽ºÀÇ Ã³À½¿¡¼­ ½ÃÀÛÇÏ¿©, M À» bill ¿¡ Y ¸¦ jake ¿¡ »ç·ÊÈ­½ÃŲ´Ù. µÎ °³ÀÇ ºÎ¸ñÀûÀÇ ºÎÇÕ ¸ðµÎ°¡ µ¥ÀÌÅͺ£À̽º óÀ½¿¡¼­ ½ÃÀÛÇÏ¿© µ¶¸³ÀûÀ¸·Î ¸¸Á·µÇ±â ¶§¹®¿¡, À§¿Í °°Àº ÀÀ´äÀÌ ³ª¿Â´Ù. ÀÌ°ÍÀ» ÇÇÇϱâ À§ÇØ, ¸¸¾à ±×µéÀÌ µ¿ÀÏÇÑ ºÎ¸ð¸¦ °®°í, ±×µéÀÌ °°Áö ¾ÊÀ» ¶§¸¸, X ´Â Y ÀÇ ÇüÁ¦¶ó°í ±â¼úµÇ¾î¾ß ÇÑ´Ù. À¯°¨½º·´°Ôµµ, ³íÀÇÇÏ°ÚÁö¸¸, Prolog ¿¡¼­ X ¿Í Y °¡ °°Áö ¾Ê´Ù´Â °ÍÀ» ³ªÅ¸³»´Â °ÍÀº °£´ÜÇÏÁö ¾Ê´Ù. °¡Àå Á¤È®ÇÑ ¹æ¹ýÀº ¸ðµç ¿øÀÚ (atom) ½Ö¿¡ ´ëÇؼ­ ±×µéÀÌ °°Áö ¾Ê´Ù´Â »ç½ÇÀ» ÷°¡ÇÏ´Â °ÍÀÌ´Ù. ¹°·Ð, ±àÁ¤ÀûÀÎ Á¤º¸º¸´Ù ºÎÁ¤ÀûÀÎ Á¤º¸°¡ ÈξÀ ¸¹±â ¶§¹®¿¡ µ¥ÀÌÅͺ£À̽º¸¦ ¸Å¿ì Ä¿Áö°Ô ÇÑ´Ù. ¿¹¸¦ µé¸é, ´ëºÎºÐÀÇ »ç¶÷µéÀº »ýÀÏÀÎ ³¯º¸´Ù ¸¹Àº 364 ÀÏÀÇ »ýÀÏÀÌ ¾Æ´Ñ ³¯Àº °¡Áö°í ÀÖ´Ù.

°£´ÜÇÑ ´ë¾ÈÀûÀÎ ÇØ°áÃ¥Àº ´ÙÀ½°ú °°ÀÌ ¸ñÀû¿¡ X ¿Í Y ´Â µ¿ÀÏÇÏÁö ¾Ê´Ù°í ±â¼úÇÏ´Â °ÍÀÌ´Ù.

    sibling (X, Y) :- parent (M, X), parent (M, Y), not (X = Y).

´Ù¸¥ »óȲ¿¡¼­´Â ÇØ°áÃ¥ÀÌ ±×¸® °£´ÜÇÏÁö ¾Ê´Ù.

¸¸¾à ÇØ µµÃâÀÌ ºÎ¸ñÀû X = Y ¸¦ ¸¸Á·ÇÏÁö ¾ÊÀ¸¸é, Prolog not ¿¬»êÀÚ´Â ÀÌ °æ¿ì¿¡ ¸¸Á·ÇÑ´Ù. ±×·¯¹Ç·Î ¸¸¾à not ¿¬»êÀÚ°¡ ¼º°øÇÑ´Ù¸é, ±×°ÍÀº ¹Ýµå½Ã X °¡ Y ¿Í µ¿ÀÏÇÏÁö ¾Ê´Ù°í ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù. ´õ¿íÀÌ ÀÌ°ÍÀº ÇØ µµÃâÀÌ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ X °¡ Y ¿Í °°´Ù´Â °ÍÀ» Áõ¸íÇÏÁö ¸øÇÑ´Ù´Â °ÍÀ» ¶æÇÑ´Ù. ±×·¯¹Ç·Î Prolog not ¿¬»êÀÚ´Â ³í¸® NOT ¿¬»êÀÚ¿Í µ¿ÀÏÇÏÁö ¾Ê´Ù. ÀÌ °æ¿ì¿¡ (°ÅÁþÀ̸é) NOT Àº ÇÇ¿¬»êÀÚ°¡ ¾Æ¸¶µµ ÂüÀ̶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¸¸¾à Prolog not ¿¬»êÀÚ°¡ ÁøÁ¤ÇÑ ³í¸® NOT ¿¬»êÀÚÀÌ°í ¿ì¸®°¡ ¿ì¿¬È÷ ´ÙÀ½°ú °°Àº Çü½ÄÀÇ ¸ñÀûÀ» °®´Â´Ù¸é, ÀÌ·± ºñµ¿µî (nonequivalency) Àº ¹®Á¦¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Ù.

    not (not (some_goal)).

ÀÌ°ÍÀº ¾Æ·¡ÀÇ °Í°ú µ¿Ä¡´Ù.

    some_goal.

±×·¯³ª ¾î¶² °æ¿ì¿¡´Â ±×µéÀº °°Áö ¾Ê´Ù. ¿¹¸¦ µé¸é, ´Ù½Ã member ±ÔÄ¢À» »ìÆ캸ÀÚ.

    member (Element, [Element | _]) :- !.
    member (Element, [_ | List] :- member (Element, List).

ÁÖ¾îÁø ¸®½ºÆ® ¿ø¼Ò Áß Çϳª¸¦ ã±â À§ÇØ, ¿ì¸®´Â ´ÙÀ½°ú °°Àº ¸ñÀûÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

    member (X, [mary, fred, barb])

ÀÌ°ÍÀº X ¸¦ mary ¿¡ »ç·ÊÈ­½ÃÅ°°í ÇÁ¸°Æ®ÇÑ´Ù. ±×·¯³ª ´ÙÀ½ ¸ñÀûÀ» »ç¿ëÇÑ´Ù¸é,

    not (not (member (X, [mary, fred, barb]))).

´ÙÀ½ ÀÏ·ÃÀÇ »ç°ÇÀÌ ¹ß»ýÇÑ´Ù. ¸ÕÀú, ¾ÈÂÊÀÇ ¸ñÀûÀÌ ¼º°øÇÏ¿©, X ¸¦ mary ¿¡ »ç·ÊÈ­½ÃŲ´Ù. ±×·± ÈÄ¿¡ Prolog ´Â ¾Æ·¡¿Í °°Àº ´ÙÀ½ ¸ñÀûÀ» ¸¸Á·½ÃÅ°·Á°í ½ÃµµÇÑ´Ù.

    not (member (X, [mary, fred, barb])).

member °¡ ¼º°øÇ߱⠶§¹®¿¡ ÀÌ°ÍÀº ½ÇÆÐÇÒ °ÍÀÌ´Ù. ¸ñÀûÀÌ ½ÇÆÐµÉ ¶§, Prolog ´Â Ç×»ó ½ÇÆÐÇÑ ¸ñÀû¿¡ ÀÖ´Â ¸ðµç º¯¼öÀÇ »ç·ÊÈ­¸¦ Ãë¼ÒÇϱ⠶§¹®¿¡ X ÀÇ »ç·ÊÈ­µµ Ãë¼ÒµÉ °ÍÀÌ´Ù. ´ÙÀ½À¸·Î Prolog ´Â ¹Ù±ùÂÊÀÇ not ¸ñÀûÀ» ¸¸Á·½ÃÅ°°íÀÚ ½ÃµµÇÏ°í, ±×°ÍÀÇ ¸Å°³º¯¼ö°¡ ½ÇÆÐÇ߱⠶§¹®¿¡ ¼º°øÇÑ´Ù. ¸¶Áö¸·À¸·Î °á°ú X °¡ Ãâ·ÂµÈ´Ù. ±×·¯³ª X ´Â ÇöÀç »ç·ÊÈ­µÇÁö ¾Ê°í, ±×·¡¼­ ½Ã½ºÅÛÀº ±×°ÍÀ» ³ªÅ¸³½´Ù. ÀϹÝÀûÀ¸·Î »ç·ÊÈ­µÇÁö ¾ÊÀº º¯¼ö´Â ¹ØÁÙÀÌ ¼±ÇàÇÏ´Â ¼ýÀÚÀÇ ½ºÆ®¸µ Çü½ÄÀ¸·Î Ãâ·ÂµÈ´Ù. ±×·¡¼­ Prolog ÀÇ not ÀÌ ³í¸®ÀûÀÎ NOT ¿Í °°Áö ¾Ê´Ù´Â »ç½ÇÀº, Àû¾îµµ À߸øµÉ ¼ö°¡ ÀÖ´Ù.

³í¸® NOT ÀÌ Prolog ÀÇ Áß¿äÇÑ ºÎºÐÀÌ µÉ ¼ö ¾ø´Â ±âº»ÀûÀÎ ÀÌÀ¯´Â È¥ Å©·ÑÁîÀÇ Çü½Ä¿¡ ÀÖ´Ù.

    A :-

¸¸¾à ¸ðµç B ¸íÁ¦°¡ ÂüÀ̸é, A °¡ ÂüÀ̶ó°í °á·ÐÁöÀ» ¼ö ÀÖ´Ù. ±×·¯³ª B ÀÇ ¸ðµÎ ¶Ç´Â ÀϺκÐÀÇ Âü ¶Ç´Â °ÅÁþ¿¡ »ó°ü¾øÀÌ, A °¡ °ÅÁþÀ̶ó°í °á·Ð ÁöÀ» ¼ö ¾ø´Ù. ±àÁ¤ ³í¸®´Â ±àÁ¤ ³í¸®·Î¸¸ °á·ÐÁöÀ» ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î È¥ Å©·ÑÁî Çü½ÄÀÇ »ç¿ëÀº ¾î¶² ºÎÁ¤ÀûÀÎ °á·ÐÀ» ¸·´Â´Ù.

(4) º»ÁúÀûÀÎ ÇÑ°è

4 Àý¿¡¼­ ¾ð±ÞÇÑ °Íó·³ ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ º»ÁúÀûÀÎ ¸ñÀûÀº ºñÀýÂ÷ÀûÀÎ ÇÁ·Î±×·¡¹ÖÀ» Á¦°øÇÏ´Â °ÍÀÌ´Ù. Áï, ÇÁ·Î±×·¡¸Ó°¡ ÇÁ·Î±×·¥ÀÌ ¼öÇàÇÒ °ÍÀº ÁöÁ¤ÇÏÁö¸¸ ¼öÇàÇÏ´Â ¹æ¹ýÀ» ÁöÁ¤ÇÏÁö ¾Ê´Â ½Ã½ºÅÛÀÌ´Ù. Á¤·ÄÀ» À§ÇØ ÁÖ¾îÁø ¿¹Á¦´Â ¿©±â¿¡ ´Ù½Ã ÀÛ¼ºÇÏ¿´´Ù.

   sort (old_list, new_list) ¡ø permute (old_list, new_list) ¡û sorted (new_list)
   sort (list) ¡ø ¢£j such that 1 ¡Â j < n, list (j) ¡Â list (j + 1)

ÀÌ°ÍÀº Prolog ·Î ½±°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é, sorted ÀÇ ºÎ¸ñÀûÀº ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.

   sorted ([]).
   sorted ([x]).
   sorted ([x, y | list]) :- x < = y, sorted ([y | list]).

À§ÀÇ Á¤·Ä °úÁ¤ÀÌ °¡Áö°í ÀÖ´Â ¹®Á¦´Â ±×°ÍÀÌ Á¤·ÄµÈ ¼ø¼­¸¦ °®´Â ¸®½ºÆ®¸¦ »ý¼º½Ãų ¶§±îÁö ÁÖ¾îÁø ¸®½ºÆ®ÀÇ ¸ðµç ġȯÀ» ¿­°ÅÇÏ´Â °Í ¿Ü¿¡´Â Á¤·Ä½ÃÅ°´Â ¹æ¹ýÀ» ¸ð¸¥´Ù´Â °ÍÀÌ´Ù.

Áö±Ý±îÁö, ¾Æ¹«µµ Á¤·Ä ¸®½ºÆ®ÀÇ Á¤·ÄÀ» À§ÇÑ È¿À²ÀûÀÎ ¾Ë°í¸®ÁòÀ¸·Î º¯È¯½Ãų ¼ö ÀÖ´Â ¹æ¹ýÀ» ¹ß°ßÇÏÁö ¸øÇß´Ù. ÇØ µµÃâÀº ¸¹Àº Èï¹Ì·Î¿î ÀÏÀ» ÇÒ ¼ö ÀÖÁö¸¸, È®½ÇÈ÷ ÀÌ°ÍÀº ¾Æ´Ï´Ù. ±×·¯¹Ç·Î, ¸í·ÉÇü ¾ð¾î³ª ÇÔ¼ö ¾ð¾îó·³, ¸®½ºÆ®¸¦ Á¤·ÄÇÏ´Â Prolog ÇÁ·Î±×·¥Àº Á¤·ÄÀÌ ¼öÇàµÇ´Â ¹æ¹ý¿¡ °üÇÑ ¼¼ºÎ»çÇ×À» ±â¼úÇÏ¿©¾ß ÇÑ´Ù.

ÀÌ·¯ÇÑ ¸ðµç ¹®Á¦µéÀÌ ³í¸® ÇÁ·Î±×·¡¹ÖÀº Æ÷±âÇؾ߸¸ ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇϴ°¡? Àý´ëÀûÀ¸·Î ¾Æ´Ï´Ù. ±×°ÍÀº ¸¹Àº À¯¿ëÇÑ ÀÀ¿ëÀ» ó¸®ÇÏ´Â ´É·ÂÀÌ ÀÖ´Ù. ´õ¿íÀÌ ±×°ÍÀº È£±â½ÉÀ» ÀÚ±ØÇÏ´Â °³³äÀ» ±â¹ÝÀ¸·Î ÇÏ°í ÀÖ°í, ±×·¯¹Ç·Î ±× ÀÚü·Î Èï¹Ì·Ó´Ù. ¸¶Áö¸·À¸·Î, ÇÁ·Î±×·¥ÀÇ ¸í¼¼¿¡¼­ how °¡ ¾Æ´Ï¶ó what ¸¸À» ¿ä±¸ÇÏ´Â ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î ½Ã½ºÅÛÀ» Çã¿ëÇÏ´Â ¾î¶² »õ·Î¿î Ãß·Ð ±â¼úÀÌ °³¹ßµÉ °¡´É¼ºµµ ÀÖ´Ù.

8. ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ÀÀ¿ë

ÀÌ Àý¿¡¼­ ÀϹÝÀûÀ¸·Î ³í¸® ÇÁ·Î±×·¡¹Ö ƯÈ÷ Prolog ÀÇ ÇöÀç ±×¸®°í ÀáÀçÀûÀÎ ÀÀ¿ëÀÇ ¸î °³ ºÎ·ù¸¦ °£´ÜÈ÷ ¼­¼úÇÏ°íÀÚ ÇÑ´Ù.

(1) °ü°èÇü µ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛ

°ü°èÇü µ¥ÀÌÅͺ£À̽º °ü¸® ½Ã½ºÅÛ (RDBMS) Àº µ¥ÀÌÅ͸¦ Å×À̺í Çü½ÄÀ¸·Î ÀúÀåÇÑ´Ù. µ¥ÀÌÅͺ£À̽º¿¡¼­ÀÇ ÁúÀÇ´Â Á¾Á¾ ±âÈ£ ³í¸®ÀÇ Çü½ÄÀ» °®´Â °ü°èÇü °è»ê¹ýÀ¸·Î ³ªÅ¸³½´Ù. ÀÌ·± ½Ã½ºÅÛÀÇ ÁúÀÇ ¾ð¾î´Â ³í¸® ÇÁ·Î±×·¡¹ÖÀÌ ÀýÂ÷ÀûÀÎ °ÍÀ̶ó´Â µ¿ÀÏÇÑ Àǹ̿¡¼­ ºñÀýÂ÷ÀûÀÌ´Ù. »ç¿ëÀÚ´Â ÀÀ´äÀ» ÃßÃâÇÏ´Â ¹æ¹ýÀ» ±â¼úÇÏÁö ¾Ê´Â´Ù. ¿ÀÈ÷·Á »ç¿ëÀÚ´Â ÀÀ´äÀÇ Æ¯¼º¸¸À» ±â¼úÇÒ ¼ö ÀÖ´Ù. ³í¸® ÇÁ·Î±×·¡¹Ö°ú RDBMS »çÀÌÀÇ ¿¬°áÀº ¸í¹éÇÏ´Ù. Á¤º¸ÀÇ °£´ÜÇÑ Å×À̺íÀº Prolog ±¸Á¶¿¡ ÀÇÇØ ±â¼úµÉ ¼ö ÀÖ°í, Å×À̺íÀÇ °ü°è´Â Prolog ±ÔÄ¢¿¡ ÀÇÇØ Æí¸®ÇÏ°í ½±°Ô ±â¼úµÈ´Ù. °Ë»ö °úÁ¤Àº ÇØ µµÃâ¿¡¼­ º»ÁúÀûÀÌ´Ù. Prolog ÀÇ ¸ñÀû¹®Àº RDBMS ¸¦ À§ÇÑ ÁúÀǸ¦ Á¦°øÇÑ´Ù. ±×·¯¹Ç·Î ³í¸® ÇÁ·Î±×·¡¹ÖÀº RDBMS ±¸Çö¿¡ ÀÚ¿¬½º·´°Ô ºÎÇÕÇÑ´Ù.

RDBMS ±¸Çö¿¡ ³í¸® ÇÁ·Î±×·¡¹ÖÀ» »ç¿ëÇÏ´Â ÀåÁ¡ Áß Çϳª´Â ´ÜÁö ´ÜÀÏÇÑ ¾ð¾î¸¸ÀÌ ¿ä±¸µÈ´Ù´Â °ÍÀÌ´Ù. ÀüÅëÀûÀÎ RDBMS ¿¡¼­, µ¥ÀÌÅͺ£À̽º ¾ð¾î´Â µ¥ÀÌÅÍ Á¤ÀÇ, µ¥ÀÌÅÍ Á¶ÀÛ, ÁúÀǸ¦ À§ÇÑ ¹®ÀåÀ» Æ÷ÇÔÇϸç, ÀÌ ¸ðµÎ´Â COBOL °ú °°Àº ¹ü¿ë ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ ³»ÀåµÈ´Ù. ¹ü¿ë ¾ð¾î´Â µ¥ÀÌÅÍ Ã³¸®³ª ÀÔ·Â, Ãâ·Â ÇÔ¼ö¸¦ À§ÇØ »ç¿ëµÇ¾ú´Ù. ÀÌ·± ¸ðµç ÇÔ¼ö´Â ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ¼öÇàµÉ ¼ö ÀÖ´Ù.

RDBMS ±¸Çö¿¡ ³í¸® ÇÁ·Î±×·¡¹ÖÀ» »ç¿ëÇÏ´Â ´Ù¸¥ ÀåÁ¡Àº Ãß·Ð ´É·ÂÀÌ ³»ÀåµÇ¾î ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀüÅëÀûÀÎ RDBMS ´Â ¸í½ÃÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÇ´Â °Í ¿Ü¿¡´Â µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ¾î¶² °Íµµ Ãß·ÐÇÒ ¼ö ¾ø´Ù. ±×µéÀº »ç½Ç°ú Ãß·Ð ±ÔÄ¢À» °¡Áö°í ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó »ç½Ç¸¸À» °¡Áö°í ÀÖ´Ù. ÀüÅëÀûÀÎ RDBMS °ú ºñ±³Çؼ­ RDBMS ±¸Çö¿¡ ³í¸® ÇÁ·Î±×·¡¹ÖÀ» »ç¿ëÇÏ´Â ´ÜÁ¡Àº ³í¸® ÇÁ·Î±×·¡¹Ö ±¸ÇöÀÌ ´À¸®´Ù´Â °ÍÀÌ´Ù. ³í¸®Àû Ãß·ÐÀº ¸í·ÉÇü ÇÁ·Î±×·¡¹Ö ±â¼úÀ» »ç¿ëÇÑ ÀÏ¹Ý Å×À̺í Ž»ö ¹æ¹ýº¸´Ù ½Ã°£ÀÌ ´Ü¼øÈ÷ ´õ °É¸°´Ù.

(2) Àü¹®°¡ ½Ã½ºÅÛ

Àü¹®°¡ ½Ã½ºÅÛÀº ¾î¶² Ưº°ÇÑ ¿µ¿ªÀÇ Àü¹®ÀûÀÎ Áö½ÄÀ» °¡Áø »ç¶÷À» ¸ð¹æÇϱâ À§ÇØ ¼³°èµÈ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÌ´Ù. Àü¹®°¡ ½Ã½ºÅÛÀº »ç½ÇÀÇ µ¥ÀÌÅͺ£À̽º, Ãß·Ð °úÁ¤, ¿µ¿ª¿¡ ´ëÇÑ ¾î¶² °æÇè, ½Ã½ºÅÛÀ» Àü¹® »ó´ãÀÚó·³ º¸ÀÌ°Ô ¸¸µå´Â Ä£¼÷ÇÑ ÀÎÅÍÆäÀ̽º·Î ±¸¼ºµÈ´Ù. »ç¶÷ Àü¹®°¡¿¡ ÀÇÇØ Á¦°øµÈ Ãʱâ Áö½Ä º£À̽º ¿Ü¿¡µµ, Àü¹®°¡ ½Ã½ºÅÛÀº »ç¿ëµÇ´Â °úÁ¤¿¡¼­ Áö½ÄÀ» ÇнÀÇÏ°í, µû¶ó¼­ µ¥ÀÌÅͺ£À̽º´Â ¹Ýµå½Ã µ¿ÀûÀ¸·Î È®ÀåµÇ´Â ´É·ÂÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ¹°·Ð Àü¹®°¡ ½Ã½ºÅÛÀº Á¤º¸°¡ ÇÊ¿äÇÏ´Ù°í °áÁ¤µÉ ¶§ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ ¾ò±â À§ÇØ »ç¿ëÀÚ¿¡°Ô ÁúÀÇÇÏ´Â ´É·ÂÀÌ ÀÖ¾î¾ß ÇÑ´Ù.

Àü¹®°¡ ½Ã½ºÅÛ ¼³°èÀÚ¸¦ À§ÇÑ Áß½ÉÀûÀÎ ¹®Á¦ Áß¿¡ Çϳª´Â µ¥ÀÌÅͺ£À̽ºÀÇ ÇÇÇÒ ¼ö ¾ø´Â ºÒÀÏÄ¡¿Í ºÒ¿ÏÀü¼ºÀ» ´Ù·ç´Â °ÍÀÌ´Ù. ³í¸® ÇÁ·Î±×·¡¹ÖÀº ÀÌ·± ¹®Á¦¸¦ ´Ù·ç´Â µ¥ ¾ÆÁÖ ÀûÇÕÇÑ °Íó·³ º¸ÀδÙ. ¿¹·Î µé¸é, µðÆúÆ® Ãß·Ð ±ÔÄ¢Àº ºÒ¿ÏÀü¼ºÀÇ ¹®Á¦¸¦ ´Ù·ç´Â µ¥ µµ¿òÀ» ÁÙ ¼ö ÀÖ´Ù.

Prolog ´Â Àü¹®°¡ ½Ã½ºÅÛÀ» ¸¸µå´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ°í »ç¿ëµÇ¾î ¿Ô´Ù. Prolog ´Â ÁúÀÇ Ã³¸®ÀÇ ±âº»À¸·Î¼­ ÇØ µµÃâ, ÇнÀ ´É·ÂÀ» Á¦°øÇϱâ À§ÇØ »ç½ÇÀ̳ª ±ÔÄ¢À» ÷°¡ÇÏ´Â ´É·Â, ÁÖ¾îÁø °á°ú¿¡ ´ëÇÑ ÀÌÀ¯¸¦ »ç¿ëÀÚ¿¡°Ô ¾Ë¸®±â À§ÇÏ¿© ÃßÀû ´É·ÂÀ» »ç¿ëÇÏ¿© Àü¹®°¡ ½Ã½ºÅÛÀÇ ±âº» ¿å±¸¸¦ ½±°Ô ¸¸Á·½Ãų ¼ö ÀÖ´Ù. Prolog ¿¡¼­ ºüÁø °ÍÀº ºÎ°¡ÀûÀÎ Á¤º¸°¡ ÇÊ¿äÇÒ ¶§ ½Ã½ºÅÛÀÌ »ç¿ëÀÚ¿¡°Ô ±×·¯ÇÑ Á¤º¸¸¦ ÁúÀÇÇÏ´Â ÀÚµ¿ÀûÀÎ ´É·ÂÀÌ´Ù.

Àü¹®°¡ ½Ã½ºÅÛ¿¡¼­ °¡Àå ³Î¸® »ç¿ëµÇ´Â ³í¸® ÇÁ·Î±×·¥ÀÇ »ç¿ë Áß¿¡ Çϳª´Â Sergot (1983) °ú Hammond (1983) ¿¡ ÀÇÇØ ±â¼úµÈ APES ·Î ¾Ë·ÁÁø Àü¹®°¡ ½Ã½ºÅÛ Á¦ÀÛ ½Ã½ºÅÛÀÌ´Ù. APES ½Ã½ºÅÛÀº Àü¹®°¡ ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â µ¿¾È »ç¿ëÀڷκÎÅÍ Á¤º¸¸¦ ¸ðÀ¸±â À§ÇÑ ¸Å¿ì À¯¿¬ÇÑ ÀåÄ¡¸¦ Æ÷ÇÔÇÑ´Ù. ¶ÇÇÑ ÁúÀÇ¿¡ ´ëÇÑ ÇØ´äÀÇ Ã³¸® °úÁ¤ ¼­¼úÀ» »ý»êÇϱâ À§ÇØ ÀÌÂ÷ÀûÀÎ ÀÎÅÍÇÁ¸®Å͵µ Æ÷ÇÔÇÏ°í ÀÖ´Ù.

APES ´Â Á¤ºÎ »çȸ º¸Àå ÇÁ·Î±×·¥ÀÇ ±ÔÄ¢À» À§ÇÑ Àü¹®°¡ ½Ã½ºÅÛ°ú ¿µ±¹ ½Ã¹Î±ÇÀÇ ±ÔÄ¢ÀÇ ¸í¹éÇÑ ÁÂÇ¥ÀÎ ¿µ±¹ ±¹Àû¹ý (British nationality) À» À§ÇÑ Àü¹®°¡ ½Ã½ºÅÛÀ» Æ÷ÇÔÇÏ¿© ¿©·¯ Àü¹®°¡ ½Ã½ºÅÛÀ» »ý»êÇÏ´Â µ¥ ¼º°øÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù.

(3) ÀÚ¿¬¾î ó¸®

¾î¶² Á¾·ùÀÇ ÀÚ¿¬¾î 󸮴 ³í¸® ÇÁ·Î±×·¡¹ÖÀ¸·Î ¼öÇàµÉ ¼ö ÀÖ´Ù. ƯÈ÷, Áö´É µ¥ÀÌÅͺ£À̽º¿Í ´Ù¸¥ Áö´É Áö½Ä ±â¹Ý ½Ã½ºÅÛ °°Àº ÄÄÇ»ÅÍ ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛ¿¡ ´ëÇÑ ÀÚ¿¬¾î ÀÎÅÍÆäÀ̽º´Â ³í¸® ÇÁ·Î±×·¡¹ÖÀ¸·Î Æí¸®ÇÏ°Ô ¼öÇàµÉ ¼ö ÀÖ´Ù. ¾ð¾î ±¸¹® ±â¼ú¿¡ À־ ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ Çü½ÄÀº ¹®¸Æ ÀÚÀ¯ ¹®¹ý (context-free grammar) °ú µ¿ÀÏÇÏ´Ù´Â °ÍÀÌ ¾Ë·ÁÁ³´Ù. ³í¸® ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ¿¡¼­ÀÇ Áõ¸í ÀýÂ÷´Â ¾î¶² ÆÄ½Ì Àü·«°ú µ¿ÀÏÇÑ °ÍÀ¸·Î ¾Ë·ÁÁ³´Ù. ½ÇÁ¦·Î, ÈÄÇâ üÀÎ (backward chaining) ÇØ µµÃâÀº ¹®¸Æ ÀÚÀ¯ ¹®¹ý¿¡ ÀÇÇØ ±â¼úµÈ ±¸Á¶¸¦ °®´Â ¹®ÀåÀ» ÆĽÌÇÏ´Â µ¥ Á÷Á¢ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ÀÚ¿¬¾îÀÇ ¾î¶² Àǹ̷ÐÀº ±× ¾ð¾î¸¦ ³í¸® ÇÁ·Î±×·¡¹ÖÀ¸·Î ¸ðµ¨¸µÇÔÀ¸·Î½á ¸í¹éÇØÁú ¼ö ÀÖ´Ù´Â °ÍÀÌ º¸¿©Á³´Ù. ƯÈ÷, ³í¸®-±â¹Ý ÀÇ¹Ì ¸ÁÀÇ ¿¬±¸´Â ÀÚ¿¬¾î ¹®ÀåÀÇ ÁýÇÕÀÌ Å¬·ÎÁî Çü½ÄÀ¸·Î Ç¥ÇöµÈ´Ù´Â °ÍÀ» º¸¿´´Ù (Deliyanni and Kowalski, 1979). ¶ÇÇÑ Kowalski (1979) ³í¸® ±â¹Ý ÀÇ¹Ì ¸ÁÀ» ³íÀÇÇß´Ù.

(4) ±³À°

±³À° ¿µ¿ª¿¡¼­ 7 »ìÀÇ ¾î¸° ¾ÆÀ̵鿡°Ô ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î micro-Prolog ¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» °¡¸£Ä¡´Â ±¤¹üÀ§ÇÑ ½ÇÇèÀÌ ÇàÇØÁ³´Ù (Ennals, 1980). ¿¬±¸ÀÚµéÀº ¾î¸° ¾ÆÀ̵鿡°Ô Prolog ¸¦ °¡¸£Ä¡´Â °ÍÀÌ ¿©·¯ °¡Áö ÀåÁ¡ÀÌ ÀÖ´Ù°í ÁÖÀåÇÑ´Ù. ù°, ÀÌ·± Á¢±Ù ¹æ½ÄÀ» »ç¿ëÇؼ­ ÄÄÇ»ÆÃÀ» ¼Ò°³ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¶ÇÇÑ º¸´Ù ¸íÈ®ÇÑ »ç°í¿Í Ç¥ÇöÀ» °¡Á®´ÙÁÖ´Â ³í¸® ±³À°ÀÇ ºÎ¼öÀûÀÎ È¿°ú¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ°ÍÀº ¼öÇÐÀÇ ¹æÁ¤½Ä Ç®ÀÌ, ÀÚ¿¬¾î¸¦ À§ÇÑ ¹®¹ý ´Ù·ç±â, ¹°¸® ¼¼°èÀÇ ±ÔÄ¢°ú Áú¼­¸¦ ÀÌÇØÇÏ´Â °Í°ú °°Àº ´Ù¾çÇÑ ÁÖÁ¦¸¦ ÇлýµéÀÌ ¹è¿ì´Â µ¥ µµ¿òÀ» ÁÙ ¼ö ÀÖ´Ù.

¸Å¿ì ¾î¸° ¾ÆÀ̵鿡°Ô ³í¸® ÇÁ·Î±×·¡¹ÖÀ» °¡¸£Ä¡´Â ½ÇÇèÀº ¸í·ÉÇü ¾ð¾î¿¡ °æÇèÀÌ ¸¹Àº ÇÁ·Î±×·¡¸Óº¸´Ù ÃʽÉÀÚ¿¡°Ô ³í¸® ÇÁ·Î±×·¡¹ÖÀ» °¡¸£Ä¡±â°¡ ½±´Ù´Â Èï¹Ì·Î¿î °á°ú¸¦ µµÃâÇÏ¿´´Ù.

9. °á·Ð

¸¹Àº »ç¶÷µéÀº Prolog °¡, Àû¾îµµ Çö ½ÃÁ¡¿¡¼­´Â ¿©ÀüÈ÷ °Å´ëÇÑ ½ÇÇèÀ̶ó°í ¹Ï°í ÀÖ´Ù. ±×·¯³ª ´Ù¸¥ ¸¹Àº ¾ð¾îó·³ ¸¹Àº ÁöÁöÀÚ°¡ ÀÖ´Ù. ±×µéÀº ÇöÀç »ç¿ëÁßÀÎ ¸í·ÉÇü ¾ð¾î´Â ÄÄÇ»ÅÍ¿¡ ÀÇÇØ ÇØ°áµÇ¾î¾ß ÇÏ´Â ¹®Á¦¸¦ °£´ÜÇÏ°Ô ´ëóÇÒ ¼ö ¾ø´Ù´Â ¼ÒÇÁÆ®¿þ¾î À§±â¿¡ ´ëÇÑ Àû¾îµµ ÇØ°áÃ¥ÀÇ ÀϺκÐÀÌ µÉ ¼ö ÀÖ´Ù°í ¹Ï´Â´Ù (Cuadrado and Cuadrado, 1985).

ÁöÁöÀÚµéÀÌ Prolog °¡ ¸í·ÉÇü ¾ð¾îº¸´Ù ÁÁ´Ù°í ¹Ï´Â ¸î °¡Áö ÀÌÀ¯ - ¿ø·¡ Prolog ÁöÁöÀÚ Áß¿¡ ÇϳªÀÎ Jacques Cohen (1985) ¿¡ ÀÇÇØ ¾ð±ÞµÇ¾ú´ø ÀÌÀ¯ - ´Â ¾Æ·¡¿Í °°Àº °ÍÀÌ´Ù.

¹°·Ð ÀÌ·± °Í¿¡ µ¿ÀÇÇÏÁö ¾Ê´Â »ç¶÷µµ ÀÖ´Ù. ¸¹Àº ÄÄÇ»ÅÍ °úÇÐÀÚµéÀº ¸î °¡Áö ÀÛÀº Àΰø Áö´É ¿µ¿ª ¹Û¿¡¼­´Â Prolog À¯¿ë¼º¿¡ ȸÀÇÀûÀÌ´Ù. ºñ·Ï Çö ½ÃÁ¡¿¡¼­´Â È®½ÇÈ÷ ¸íÈ®ÇÏÁö ¾ÊÁö¸¸, Prolog ´Â ÀΰøÁö´ÉÀÇ ÁÖ¿äÇÑ ¾ð¾îÀÎ LISP ¸¦ ´ëüÇÒ °ÍÀ̶ó°í ÀϺΠ»ç¶÷µéÀº ¹Ï´Â´Ù. Warren et al. (1977) Àº µÎ ¾ð¾î¸¦ ºñ±³ÇÏ¿´´Ù.

¿äÁ¡ Á¤¸®

±âÈ£ ³í¸®´Â ³í¸® ÇÁ·Î±×·¡¹Ö°ú ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ À§ÇÑ ±âÃʸ¦ Á¦°øÇÑ´Ù. ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ Á¢±Ù ¹æ¹ýÀº µ¥ÀÌÅͺ£À̽º·Î¼­ »ç½Ç°ú »ç½Ç »çÀÌÀÇ °ü°è¸¦ ³ªÅ¸³»´Â ±ÔÄ¢ÀÇ ÁýÇÕÀ» »ç¿ëÇÏ°í »õ·Î¿î ¸íÁ¦ÀÇ Å¸´ç¼ºÀ» °Ë»çÇϱâ À§ÇØ, µ¥ÀÌÅͺ£À̽ºÀÇ »ç½Ç°ú ±ÔÄ¢ÀÌ »ç½ÇÀ̶ó°í °¡Á¤ÇÏ¿©, ÀÚµ¿ Ãß·Ð °úÁ¤À» »ç¿ëÇÑ´Ù. ÀÌ·± Á¢±Ù ¹æ¹ýÀº ÀÚµ¿ Á¤¸® Áõ¸íÀ» À§ÇØ °³¹ßµÈ Á¢±Ù ¹æ¹ýÀÌ´Ù. Prolog ´Â °¡Àå ³Î¸® »ç¿ëµÇ´Â ³í¸® ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ±â¿øÀº ³í¸® Ãß·ÐÀ» À§ÇÑ ÇØ µµÃâ ±ÔÄ¢À» °³¹ßÇÑ Robinson ¿¡°Ô ÀÖ´Ù. Prolog ´Â Edinburgh ÀÇ Kowalski ·ÎºÎÅÍ ¾à°£ÀÇ µµ¿òÀ» ¹Þ¾Æ Marseille ÀÇ Roussel °ú Colmeraur ¿¡ ÀÇÇØ Ã³À½À¸·Î °³¹ßµÇ¾ú´Ù.

³í¸® ÇÁ·Î±×·¥Àº ÇØ´äÀÇ Æ¯¼ºÀº ÁÖ¾îÁöÁö¸¸ ÇØ´äÀ» ¾ò´Â °úÁ¤Àº ÁÖ¾îÁöÁö ¾Ê´Â °ÍÀ» ÀǹÌÇÏ´Â ºñÀýÂ÷ÀûÀ̾î¾ß ÇÑ´Ù.

Prolog ¹®ÀåÀº fact, ±ÔÄ¢ ¶Ç´Â ¸ñÀûÀÌ´Ù. ´ëºÎºÐÀÇ ¹®ÀåÀº ±âº» ¸íÁ¦ÀÎ ±¸Á¶¿Í, »ê¼ú Ç¥Çö½ÄÀÌ Çã¿ëµÉÁö¶óµµ, ³í¸® ¿¬»êÀÚ·Î ±¸¼ºµÈ´Ù.

ÇØ µµÃâÀº Prolog ÀÎÅÍÇÁ¸®ÅÍÀÇ ÁÖ¿äÇÑ µ¿ÀÛÀÌ´Ù. ¿ªÇàÀ» ±¤¹üÀ§ÇÏ°Ô »ç¿ëÇÏ´Â ÀÌ °úÁ¤Àº ÁÖ·Î ¸íÁ¦µéÀÇ ÆÐÅÏ ºÎÇÕÀ» Æ÷ÇÔÇÑ´Ù. º¯¼ö°¡ Æ÷ÇԵǾúÀ» ¶§, º¯¼ö´Â ºÎÇÕÀ» Á¦°øÇϱâ À§ÇØ °ªÀ¸·Î »ç·ÊÈ­µÈ´Ù. ÀÌ·± »ç·ÊÈ­ °úÁ¤À» ´ÜÀÏÈ­¶ó°í ºÎ¸¥´Ù.

Çö »óÅÂÀÇ ³í¸® ÇÁ·Î±×·¡¹ÖÀº ¸¹Àº ¹®Á¦Á¡À» °¡Áö°í ÀÖ´Ù. È¿À²¼ºÀÇ ÀÌÀ¯¿Í ¹«ÇÑ ·çÇÁ¸¦ ȸÇÇÇϱâ À§ÇØ, ÇÁ·Î±×·¡¸Ó´Â ¶§¶§·Î ÇÁ·Î±×·¥¿¡¼­ Á¦¾î È帧 Á¤º¸¸¦ ³ªÅ¸³»¾ß ÇÑ´Ù. ¶ÇÇÑ, ´ÝÈù ¼¼°è °¡Á¤°ú ºÎÁ¤ÀÇ ¹®Á¦°¡ ÀÖ´Ù.

³í¸® ÇÁ·Î±×·¡¹ÖÀº ¸¹Àº ´Ù¸¥ ¿µ¿ª - ÁÖ·Î, °ü°èÇü µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ, Àü¹®°¡ ½Ã½ºÅÛ, ±×¸®°í ÀÚ¿¬¾î ó¸® - ¿¡ »ç¿ëµÇ¾ú´Ù.

Âü°í ¹®Çå

Prolog ¾ð¾î´Â ¿©·¯ Ã¥¿¡¼­ ±â¼úµÇ¾ú´Ù. ¾ð¾îÀÇ Edinburgh Çü½ÄÀº Clocksin °ú Mellish (1997) ¿¡ ¼­¼úµÇ¾ú´Ù. ¸¶ÀÌÅ©·Î ÄÄÇ»ÅÍ ±¸ÇöÀº Clark °ú McCabe (1984) ¿¡ ÀÇÇØ ±â¼úµÇ¾îÁ³´Ù.

Hogger (1984) ´Â ÀϹÝÀûÀÎ ³í¸® ÇÁ·Î±×·¡¹ÖÀÇ ¿µ¿ª¿¡ °üÇÑ ÈǸ¢ÇÑ Ã¥ÀÌ´Ù. ±×°ÍÀº ÀÌ Àå¿¡ ÀÖ´Â ³í¸® ÇÁ·Î±×·¡¹Ö ÀÀ¿ë Àý ³»¿ëÀÇ ÃâóÀÌ´Ù.

º¹½À ¹®Á¦

1. Çü½Ä ³í¸®¿¡¼­ ±âÈ£ ³í¸®ÀÇ ¼¼ °¡Áö ÁÖµÈ »ç¿ëÀº ¹«¾ùÀΰ¡?

2. º¹ÇÕ Ç×ÀÇ µÎ ºÎºÐÀº ¹«¾ùÀΰ¡?

3. Ŭ·ÎÁî Çü½Ä¿¡¼­ ¸íÁ¦ÀÇ ÀϹÝÀûÀÎ Çü½ÄÀº ¹«¾ùÀΰ¡?

4. ÇØ µµÃâ°ú ´ÜÀÏÈ­ÀÇ ÀϹÝÀûÀÎ (¾ö°ÝÇÏÁö ¾ÊÀº) Á¤ÀǸ¦ ³ªÅ¸³»½Ã¿À.

5. È¥ Ŭ·ÎÁî Çü½ÄÀº ¹«¾ùÀΰ¡?

6. ¼±¾ðÀû Àǹ̷ÐÀÇ ±âº» °³³äÀº ¹«¾ùÀΰ¡?

7. Prolog Ç×ÀÇ ¼¼ °¡Áö Çü½ÄÀº ¹«¾ùÀΰ¡?

8. Prolog ¿¡¼­ »ç½Ç¹®°ú ±ÔÄ¢¹®ÀÇ ±¸¹®Çü½Ä°ú »ç¿ë¹ýÀº ¹«¾ùÀΰ¡?

9. µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â »ç½Ç°ú ¸ñÀûÀ» ºÎÇÕÇÏ´Â µÎ °¡Áö Á¢±Ù ¹æ¹ýÀ» ¼³¸íÇϽÿÀ.

10. ´ÙÁß ¸ñÀûÀÌ ¸¸Á·µÇ´Â ¹æ¹ýÀ» ³íÀÇÇÒ ¶§, ±íÀÌ ¿ì¼±°ú ³ÐÀÌ ¿ì¼± Ž»öÀÇ Â÷ÀÌÁ¡À» ¼³¸íÇϽÿÀ.

11. Prolog ¿¡¼­ ¿ªÇàÀÌ ¾î¶»°Ô ¼öÇàµÇ´ÂÁö¸¦ ¼³¸íÇϽÿÀ.

12. Prolog ¹®Àå "K is K + 1" ¿¡ À߸øµÈ °ÍÀÌ ¹«¾ùÀÎÁö ¼³¸íÇϽÿÀ.

13. ÇÁ·Î±×·¡¸Ó°¡ ÇØ µµÃâ µ¿¾È ÆÐÅÏ ºÎÇÕÀÇ ¼ø¼­¸¦ Á¦¾îÇÒ ¼ö ÀÖ´Â µÎ °¡Áö ¹æ¹ýÀº ¹«¾ùÀΰ¡?

14. Prolog ¿¡¼­ »ý¼º-°Ë»ç ÇÁ·Î±×·¡¹Ö Àü·«À» ¼³¸íÇϽÿÀ.

15. Prolog ¿¡ ÀÇÇØ »ç¿ëµÇ´Â ´ÝÈù ¼¼°è °¡Á¤À» ¼³¸íÇϽÿÀ. ¿Ö ÀÌ°ÍÀÌ ÇÑ°èÀΰ¡?

16. Prolog ÀÇ ºÎÁ¤ ¹®Á¦¸¦ ¼³¸íÇϽÿÀ. ¿Ö ÀÌ°ÍÀÌ ÇÑ°èÀΰ¡?

17. ÀÚµ¿ Á¤¸® Áõ¸í°ú Prolog Ãß·Ð °ü°èÀÇ ¿¬°áÀ» ¼³¸íÇϽÿÀ.

18. ÀýÂ÷Àû ¾ð¾î¿Í ºñÀýÂ÷Àû ¾ð¾îÀÇ Â÷ÀÌÁ¡À» ¼³¸íÇϽÿÀ.

19. Prolog ½Ã½ºÅÛÀÌ ¿ªÇàÀ» ¼öÇàÇÏ´Â ÀÌÀ¯¸¦ ¼³¸íÇϽÿÀ.

20. Prolog ¿¡¼­ ÇØ µµÃâ°ú ´ÜÀÏÈ­ »çÀÌÀÇ °ü°è´Â ¹«¾ùÀΰ¡?

¿¬½À ¹®Á¦

1. Prolog ¿Í Ada ÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀÇ °³³äÀ» ºñ±³ÇϽÿÀ.

2. ´ÙÁß ÇÁ·Î¼¼¼­ ±â°è°¡ ÇØ µµÃâ ±¸ÇöÀ» À§ÇØ »ç¿ëµÇ´Â ¹æ¹ýÀ» ±â¼úÇϽÿÀ. ÇöÀç Á¤ÀÇµÈ ´ë·Î Prolog ´Â ÀÌ ¹æ¹ýÀ» »ç¿ëÇϴ°¡?

3. ´ç½ÅÀÇ Á¶ºÎ¸ð¿Í ¸ðµç ÀÚ¼ÕÀ» Æ÷ÇÔÇÏ¿© ´ç½Å °¡°èµµ¸¦ Prolog ·Î ÀÛ¼ºÇϽÿÀ. ¹°·Ð ¸ðµç °ü°è¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù.

4. µÎ ¼¼´ë¸¦ ÅëÇÑ Á¶ºÎ¸ð °ü°è¸¦ Æ÷ÇÔÇÏ¿© °¡Á· °ü°è¸¦ À§ÇÑ ±ÔÄ¢ÀÇ ÁýÇÕÀ» ÀÛ¼ºÇϽÿÀ. ÀÌÁ¦ ÀÌ °ü°è¸¦ ¹®Á¦ 3 ÀÇ f »ç½Ç¿¡ ÷°¡ÇÏ°í, °¡´ÉÇÑ ÇÑ ¸¹Àº »ç½ÇÀ» Á¦°ÅÇϽÿÀ.

5. ¸¸¾à ÁÖ¾îÁø µÎ ¸®½ºÆ® ¸Å°³º¯¼öÀÇ ±³ÁýÇÕÀÌ °ø ¸®½ºÆ®ÀÌ¸é ¼º°øÇÏ´Â Prolog ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽÿÀ.

6. ÁÖ¾îÁø µÎ ¸®½ºÆ®ÀÇ ¿ø¼ÒÀÇ ÇÕÁýÇÕÀ» °®´Â ¸®½ºÆ®¸¦ ¹ÝȯÇÏ´Â Prolog ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽÿÀ.

7. ÁÖ¾îÁø ¸®½ºÆ®ÀÇ ¸¶Áö¸· ¿ø¼Ò¸¦ ¹ÝȯÇÏ´Â Prolog ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽÿÀ.

8. Scheme °ú Prolog ÀÇ ¸®½ºÆ® ó¸® ´É·ÂÀÇ À¯»çÇÑ µÎ °¡Áö ¹æ¹ýÀ» ¼³¸íÇϽÿÀ.

9. Scheme °ú Prolog ÀÇ ¸®½ºÆ® ó¸® ´É·ÂÀÌ ¾î¶² ¸é¿¡¼­ ´Ù¸¥°¡?