ÀÚ¿¬¾î ó¸®

 

ÀΰøÁö´ÉÀÇ ¿ø¸®¿Í ½Ç¹«»ç·Ê : À̱¤Çü. È«À¯½Ä. ±èÀÎÅÃ. ÁøÇö¼ö. ¹ÎÁØ¿µ. ÁÖ¿µÈÆ °øÀú, µ¿¿µÃâÆÇ»ç, 1998, page 97~124

1. ÀÚ¿¬¾î ÀÌÇØ ½Ã½ºÅÛÀÇ °³¿ä

     1-1. ÀÚ¿¬¾î ÀÌÇØ °úÁ¤

     1-2. ÀÚ¿¬¾î¿Í Àΰø¾ð¾î

     1-3. È®Àå¹®¸ÆÀÚÀ¯Çü ¹®¹ý

2. °£´ÜÇÑ ÀÚ¿¬¾ð¾î ó¸®ÇÁ·Î±×·¥

3. ELIZA Á¤½Åº´È¯ÀÚ Áø´Ü ÇÁ·Î±×·¥

 

 

 

Áö´ÉÀ» °¡Áø Robot °¡ ¿ì¸®Àΰ£ÀÇ ¸»À» ¾î¶»°Ô ÀÌÇØÇÏ°í ±¸¹® Çؼ®ÇÏ¿© ¿ì¸®°¡ ³»¸° ¸í·É¿¡ ´ë´äÀ» ÇÏ°í ÇൿÇϴµ¥ °¡Àå ±âº»ÀÌ µÇ´Â Turbo Prolog ÀÇ List ±¸Á¶¸¦ ÀÌÇØÇÏ°í °£´ÜÇÑ ¹®Àå º¯È¯ ÇÁ·Î±×·¥°ú ELIZA Á¤½Åº´È¯ÀÚ ÇÁ·Î±×·¥¿¡ °üÇؼ­ ¾Ë¾Æº»´Ù.

1. ÀÚ¿¬¾î ÀÌÇØ ½Ã½ºÅÛÀÇ °³¿ä

¾î¶°ÇÑ °ÍÀ» ÀÌÇØÇÑ´Ù´Â °ÍÀº À̸¦ ÇÑ Ç¥ÇöÀ¸·ÎºÎÅÍ ´Ù¸¥ Ç¥ÇöÀ¸·Î º¯È¯½ÃÅ°´Â °ÍÀ» ¶æÇÑ´Ù.  COMPUTER °¡ ¾ð¾î¸¦ ÀÌÇØÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ÀԷ¹® (ÀÚ¿¬¾î) À» ÀÀ¿ë½Ã½ºÅÛÀÌ Á¶ÀÛ °¡´ÉÇÑ Ç¥ÇöÇü (ÀǹÌÇ¥Çö) À¸·Î ÄÄÇ»ÅÍ°¡ º¯È¯ÇÒ ¼ö ÀÖÀ½À» ¸»ÇÑ´Ù.  ÀÌ·¯ÇÑ ÀÚ¿¬¾îÀÌÇØ´Â [±×¸² 1] ·Î ¼³¸íµÈ´Ù.

[±×¸² 1]  ÀÚ¿¬¾î Çؼ® ½Ã½ºÅÛÀÇ ÀϹÝÀû ±¸¼º

1-1. ÀÚ¿¬¾î ÀÌÇØ °úÁ¤

ÀÚ¿¬¾î ÀÌÇØ °úÁ¤¿¡¼­ ´ÙÀ½¿¡ ¼³¸íµÇ´Â 5 °¡ÁöÀÇ ÀÚ¿¬¾î 󸮱â¼ú·Î ºÐ·ùÇÒ ¼ö ÀÖ´Ù.

(1) ÇüÅÂ¼Ò Çؼ®

ÀÚ¿¬¾î 󸮸¦ À§ÇÑ ´Ü¾îÀÇ ÃÖ¼Ò´ÜÀ§ÀÎ ÇüżҷΠºÐ¸®ÇÏ´Â ÇüÅÂ¼Ò Çؼ®¿¡¼­´Â ÀÔ·ÂµÈ ¹®ÀåÀ» ±¸¼ºÇÏ´Â ´Ü¾î¸¦ ¹®ÀåÀÇ ELEMENT ·Î ºÐ¼®ÇÏ´Â °ÍÀε¥ ÇüÅÂ¼Ò »çÀüÀÌ ÁغñµÇ´Â °ÍÀ¸·Î¼­ ¹®Á¦°¡ ¾ø¾îÁö´Â °ÍÀÌ ¾Æ´Ï°í ¸¹Àº °æ¿ì¿¡¼­´Â Çѱ¹¾î³ª ÀϺ»¾îÀÇ ¾îÇüº¯È­ ¹× ÷°¡¿¡¼­ ¹ß»ýÇÏ´Â ¾îÀýºÐ¸®°¡ ¾Ö¸Å¸ðÈ£ÇÑ ºÎºÐÀ̶óµç°¡ ¿µ¾î¿¡ À־ÀÇ ½ÃÁ¦º¯È­ µ¿»çÀÇ È°¿ë µî¿¡¼­ ±ÔÄ¢º¯È­°¡ ¾Æ´Ñ ÇÑ¿¡´Â »çÀüÀÇ ENTRYWORD ·Î¼­´Â ÇØ°áµÇÁö ¾Ê´Â´Ù. µû¶ó¼­ ÀÔ·ÂµÈ ¹®ÀåÀ» ÇüÅÂ¼Ò Çؼ®ÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇØÁö´Âµ¥ ÀÌ·¯ÇÑ ¾îÇü º¯È­ ±ÔÄ¢Àº ºñ±³Àû ´Ü¼øÇÏ¿© COMPUTER °¡ Çؼ®ÇÏ´Â °ÍÀº ±×¸® ¾î·ÆÁö´Â ¾Ê´Ù. ´Ù¸¸ Çѱ¹¾îÀÇ °æ¿ì¿¡´Â ¶ç¾î ¾²±â°¡ È®¸³µÇ¾î ÀÖ´Ù ÇÏ´õ¶óµµ ÀÛ¹®ÀÚÀÇ ÆÇ´ÜÀÌ Á¤È®ÇÏÁö ¸øÇÑ Ã¶ÀÚ¹ýÀÌ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î À¯ÀÇÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÇöÀç´Â ÇüÅÂ¼Ò Çؼ®ÀÌ ºÒ°¡´ÉÇÑ °æ¿ì¿¡ ´ëÇؼ­ ±¸¹®Çؼ® ±â¹ýÀ» º´Çà ó¸®ÇÔÀ¸·Î½á ÇüÅÂ¼Ò Çؼ®ÀÇ Á¤µµ(ïñÓø)¸¦ Çâ»ó½ÃÅ°´Â ¿¬±¸°¡ ÁøÇàÁßÀÌ´Ù.

(2) ±¸¹®Çؼ®

ÇüÅÂ¼Ò Çؼ® °á°ú´Â ±¸¹®Çؼ®¿¡ ÀÇÇØ ¹®¹ýÀûÀ¸·Î Ÿ´çÇÑ ´Ü¾îÀÇ ³ª¿­Àΰ¡°¡ ºÐ¼®µÈ´Ù. ±¸¹®Çؼ®¿¡ »ç¿ëµÇ´Â ¹®¹ý±ÔÄ¢ÀÌ CONTEXT FREE GRAMMER ±ÔÄ¢ÀÎ °æ¿ì´Â °í¼ÓÀÇ ±¸¹®Çؼ® ALGORITHM ÀÌ °³¹ßµÇ¾î Àִµ¥ ±¸¹®Çؼ®¿¡¼­ Áß¿äÇÑ ¹®Á¦´Â ±¸¹®Çؼ®¿¡ »ç¿ëÇÏ´Â ´ë±Ô¸ðÀûÀÎ ¹®¹ý±ÔÄ¢ÀÌ ÀÛ¼ºµÇ¾î ÀÖÁö ¾Ê°í ÀÖ´Ù´Â °ÍÀÌ´Ù. ¹®¹ý ±ÔÄ¢ÀÇ ÀÛ¼º¿¡´Â ¾ð¾îÇÐÀÚµéÀÇ Çù·ÂÀ» ÇÊ¿ä·Î Çϸç ÀÛ¼ºµÈ ¹®¹ý±ÔÄ¢À» »ç¿ëÇÏ¿© ±â°è »ó¿¡¼­ ½ÇÁ¦ÀÇ ¹®ÀåÀ» ÀÔ·ÂÇÏ¿© ¹Ýº¹ÀûÀ¸·Î ½ÇÇèÇØ¾ß ÇÑ´Ù. ±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ¹®¹ý±ÔÄ¢¿¡ ºÒÇÊ¿äÇÑ ¾Ö¸ÅÇÔÀÌ ºÎ°¡µÇ±â ¶§¹®¿¡ ¹Ù¶÷Á÷ÇÏÁö ¸øÇÑ ±¸¹®Çؼ®ÀÇ °á°ú°¡ ´Ù¼ö ¹ß»ýÇÏ¿© ÀÌÈÄÀÇ Ã³¸®¿¡ ¾î·Á¿òÀ¸·Î ³²°Ô µÇ´Â °æ¿ì°¡ ¶§¶§·Î »ý±ä´Ù. ¶ÇÇÑ ±¸¹® ÀûÀÎ ´ÙÁß¼º (ambiguity) À̳ª ºÒÈ®½Ç¼º (Vagueness) ÀÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ­ ÇöÀç ÀǹÌÇؼ®ÀÇ ±â¼úÀ» º´ÇàÇÏ´Â ¿¬±¸µµ ÁøÇàµÇ°í ÀÖ´Ù.

(3) ÀǹÌÇؼ®

ÀǹÌÇؼ®ÀÇ ÀÚ¿¬¾î 󸮱â¼úÀº ÇöÀç ¹ÌÇØ°áµÈ ¹®Á¦°¡ ¸Å¿ì ¸¹´Ù. ƯÈ÷ COMPUTER ³»ºÎ¿¡¼­ Àǹ̸¦ ¾î¶² Çü½ÄÀ¸·Î Ç¥ÇöÇÏ¿© ¾î¶»°Ô Á¶ÀÛÇϴ°¡¿¡ ´ëÇÑ ¹®Á¦°¡ ¸¹ÀÌ ³²¾Æ Àִµ¥ ºñ·Ï ÀǹÌÀÇ Çü½ÄÀ» Á¤Çß´Ù ÇÏ´õ¶óµµ ±¸¹®Çؼ® °á°ú¿¡¼­ ¾î¶»°Ô ±× Çü½ÄÀÇ Àǹ̸¦ ÃßÃâÇØ¾ß Çϴ°¡°¡ ¹®Á¦ÀÌ´Ù. ¶ÇÇÑ ±¸¹®Çؼ®¿¡¼­ ¹ß»ýÇÑ ¹®Á¦¸¦ Á¦ÇѽÃÅ°±â À§ÇÏ¿© ÀǹÌÇؼ® ±â¼úÀÌ »ç¿ëµÇ±âµµ ÇÑ´Ù. ¿¹¸¦ º¸ÀÚ.

À§ÀÇ ¹®Àå¿¡¼­ '³Á°¡¿¡¼­' ¿Í '´Ù¸® À§¿¡¼­' °¡ ¾î¶°ÇÑ ±¸¹®±¸Á¶·Î Çؼ®µÇ¾î¾ß ÇÒ °ÍÀΰ¡´Â ±¸¹® ÀûÀ¸·Î´Â ÇØ°áÀÌ µÇÁö ¸øÇÏ°í Àǹ̰ü°è¸¦ ºÐ¼®ÇÏ´Â ÀǹÌÇؼ® ´Ü°è¿¡¼­ ºñ·Î¼Ò °áÁ¤µÉ ¼ö ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. ÀÌ¿Ü¿¡ µ¿À½ÀÌÀÇ¾î ¹× ¹®¹ýÀû ´Ù±â´É ¾î°¡ Àִµ¥ ÀǹÌÇؼ® ±â¼ú¿¡¼­µµ ÇöÀç ÇØ°áÀÌ ¾î·Á¿î °æ¿ì°¡ ¸¹ÀÌ ¹ß»ýÇÑ´Ù. µû¶ó¼­ ÇöÀçÀÇ Ã³¸®±â¼ú·Î¼­´Â ¹®¸Æ Çؼ® ±â¼ú·Î ó¸®Çϰųª ´ë»ó¿¡ ¹ÐÂøµÈ Ç¥ÇöÀ» »ç¿ëÇÔÀ¸·Î½á Àΰ£ÀÌ ¿ÀÈ÷·Á ¹®Á¦¸¦ ÁÙÀÌ´Â ¹æ¹ýÀ» »ç¿ëÇÏ°í ÀÖ´Ù.

(4) ¹®¸ÆÇؼ®

ÀÌ ¹®¸ÆÇؼ®À» À§Çؼ­´Â ÁÖ¾îÁø ¹®ÀåÀ» ÀÌÇØÇϰųª »óȲÀ» ÀνÄÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» ÄÄÇ»ÅÍ°¡ º¸À¯ÇÏ°í¼­ ´ëÈ­ÀÇ È帧À» ÆľÇÇϵµ·Ï Áö½ÄÀÇ »óÈ£°ü°è¸¦ ¸ðµâÈ­ ÇØ ÁÙ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.

(5) ¾ð¾î»ý¼º

¹®ÀåÀÇ ±¸Á¶¿Í ÀǹÌÇ¥ÇöÀÇ ´ëÀÀÀÌ "ÀÌÇØ"ÀÇ Á߽ɰúÁ¦

ÀÌ¿Í °°ÀÌ ÀÚ¿¬¾î ÀÌÇØÀÇ ¹®Á¦´Â ¹®ÀåÀ̶ó´Â Ç¥¸é»óÀÇ Ç¥ÇöÇü½Ä°ú ÀǹÌÇ¥Çö »çÀÌÀÇ ´ëÀÀ°ü°è¸¦ ÃëÇÏ´Â ¹®Á¦·Î µÈ´Ù.

[±×¸² 2]  ÀÚ¿¬¾î ÀÌÇØÀÇ °úÁ¤

(1) ÀÏ ´ë ÀÏ º¯È¯

°¢°¢ ¹®ÀåÀÌ ±×¿¡ °ü·ÃµÈ À¯ÀÏÇÑ ¸ñÀû Ç¥ÇöÀ¸·Î º¯È¯µÈ´Ù. ¿¹·Î½á ¸¹Àº ÇÁ·Î±×·¡¹Ö ¾ð¾îµé¿¡¼­ Á¸ÀçÇÏ´Â »ê¼úÀû Ç¥Çö ¾ð¾îµéÀ» »ý°¢ÇØ º¸ÀÚ. ´ÙÀ½°ú °°Àº º¯È¯ÀÌ ÀϾ ¼ö ÀÖ´Ù.

                                       :=
                                       ¡ü
                                              A   +
                                          ¡ü
                      A := B+C*D  ¡æ  B    *
                                             ¡ü
                                                       C   D 

(2) ´Ù¼ö ´ë ÀÏ º¯È¯

dzºÎÇÑ ¾îÈÖ·ÂÀ» °¡Áø ¾ð¾î·ÎºÎÅÍ ÀÛ°í ´Ü¼øÇÑ ¸ñÀû Ç¥ÇöÀ¸·Î º¯È¯µÈ´Ù. ´Ù¼ö ´ë ÀϺ¯È¯Àº ÀÌÇØ ½Ã½ºÅÛÀÌ ¸ñÀû Ç¥ÇöÀÌ ±Ù¿ø ¾ð¾î¿¡¼­ Ç¥ÇöµÇ¾îÁú ¼ö ÀÖ´Â ¿©·¯ ¹æ¹ýµé¿¡ ´ëÇØ ¾Ë¾Æ¾ß µÈ´Ù´Â °ÍÀ» ÇÊ¿ä·Î ÇÑ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°ÀÌ ÇÙ½É ´Ü¾î »öÃ⠽ýºÅÛ¿¡ ´ëÇÑ ¿µ¾î ¹®Àå¿¡¼­ ÀϾ ¼ö ÀÖ´Â ´Ù¼ö ´ë ÀÏ º¯È¯À» ¹ß°ßÇÒ ¼ö ÀÖ´Ù.

        Tell me all about the last.
        presidential election.                    ¡æ

        I'd like to see all the stories                       (SEARCH KEYWORDS
        on the last presidential election.    ¡æ
                                                                     
...      =ELECTION ^ PRESIDENT) 

        I am interested in the last
        presidential election.                    ¡æ

(3) ÀÏ ´ë ´Ù¼ö º¯È¯

»ý°¢µÇ¾îÁú ¼ö ÀÖ´Â ¿©·¯ º¹Àû Ç¥Çöµé Áß¿¡¼­ Á¤È®ÇÑ ¼±ÅÃÀ» Çϱâ À§ÇØ ¸¹Àº ¾çÀÇ ºñ¾ð¾î Áö½ÄÀ» ¿ä±¸ÇÑ´Ù.

1-2. ÀÚ¿¬¾î¿Í Àΰø¾ð¾î

ÀÚ¿¬¾î ±¸¹®Çؼ®ÀÇ ¸ñÀûµµ Àΰø¾ð¾îÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î ºÎºÐ Ç¥Çö³¢¸®ÀÇ »óÈ£°ü°è¸¦ ³ªÅ¸³»´Â ±¸Á¶¸¦ ¸¸µé¾î ³»´Â °ÍÀÌ´Ù. Àΰø¾ð¾îÀÇ °æ¿ì´Â ¾ð¾î¼³°èÀÚ°¡ ó¸® »óȲ¿¡ ¾Ë¸ÂÀº ¹®¹ýÀ» ÀÚÀ¯·ÎÀÌ ¼³Á¤ÇÒ ¼ö Àִµ¥ ¹ÝÇØ ÀÚ¿¬¾îÀÇ °æ¿ì´Â ó¸®ÇØ¾Æ ÇÒ ¹®ÀåÀÇ ÁýÇÕÀÌ ¿ì¼± ¾Õ¼­ Á¸ÀçÇÑ´Ù. ±×¶§ Á¸ÀçÇÏ´Â ¹®ÀåÀÇ ÁýÇÕÀ» ±ÔÁ¤ÇÏ´Â ¹®¹ýÀ» ¼³Á¤ÇÏ´Â °ÍÀÌÁö ±¸¹®Çؼ®ÀÇ »óȲ¿¡ ¾Ë¸ÂÀº ¹®¹ýÀ» °¡Áø ¾ð¾î¸¦ ¼³°èÇÏ´Â °ÍÀº ¾Æ´Ï±â ¶§¹®¿¡ ÀÚ¿¬¾îÀÇ ±¸¹®Çؼ®Àº ±× ¸¸Å­ ¾î·Á¿öÁö´Â °ÍÀÌ´Ù.

(1) ÀÚ¿¬¾î ±¸¹®Çؼ®ÀÇ ¾î·Á¿ò

1-3. È®Àå¹®¸ÆÀÚÀ¯Çü ¹®¹ý

(1) ¹®¸ÆÀÚÀ¯Çü ¹®¹ý( Context Free Grammer : CFG )

ÀÌ Çü½ÄÀ¸·Î ¹®¹ýÀ» Ç¥ÇöÇÒ °æ¿ì¿¡´Â ¾î¶°ÇÑ ¼ºÁúÀ» °¡Áø ºÎºÐ Ç¥ÇöÀÌ ¸ð¿©¼­ º¸´Ù ³ÐÀº ¹üÀ§ÀÇ ¸ðÀÓÀÌ µÉ °ÍÀÎÁö¸¦ ´ÙÀ½°ú °°Àº µÇ¾²±â (rewrite) ±ÔÄ¢ÀÇ ÁýÇÕÀ¸·Î ³ªÅ¸³½´Ù.

          1.     S    ¡æ     NP . VP . PP
          2.    VP   ¡æ    V . NP
          3.    NP   ¡æ    DET . N
          4.    NP   ¡æ    N
          5.    PP   ¡æ    PREP . NP
          6.     N    ¡æ    boy, letter, pen
          7.   DET  ¡æ    a, the
          8.     V    ¡æ    write, writes
          9.  PREP ¡æ    with

´Ü¼øÇÑ CFG ·Î´Â ÀÚ¿¬¾î°¡ °®°í ÀÖ´Â ±ÔÄ¢¼ºÀÇ ÀüºÎ¸¦ ÀÚ¿¬ÀûÀÎ ÇüÅ·Π´Ù·ç±â¿¡´Â ¾î·Á¿òÀÌ ÀÖ´Ù .¿¹¸¦ µé¸é À§ÀÇ ¹®¹ýÀ» Á¤¹ÐÈ÷ ÇÏ¿© ¿µ¾î¿¡¼­ÀÇ <ÁÖ¾î¿Í ¼ú¾îÀÇ ¼öÀÇ ÀÏÄ¡>¸¦ Á¶»çÇϵµ·Ï º¯°æÇϱâ À§Çؼ­´Â ¸í»ç±¸ µ¿»ç±¸¸¦ ³ªÅ¸³»´Â ±âÈ£ NP, VP¸¦ ´Ü¼ö º¹¼öÀÇ ±¸º°À» Áö¿ì±â À§ÇØ °¢°¢ NPS (´Ü¼ö ¸í»ç±¸), NPP (º¹¼ö ¸í»ç±¸), VPS, VPP ¿Í °°ÀÌ ¼¼ºÐÈ­ÇÏ¿© ±ÔÄ¢1 ÀÌ ³ª´µ¾î Áö°í ´Ù¸¥ ±ÔÄ¢µéµµ ±×¿¡ µû¶ó ¼¼ºÐÈ­ ½ÃÄÑ¾ß ÇÑ´Ù. ±ÔÄ¢À» Á¤¹ÐÈ­ÇÔ¿¡ µû¶ó ÇÊ¿ä ±âÈ£ ¼ö¿Í ±ÔÄ¢ÀÌ Á¶ÇÕÀûÀ¸·Î Áõ´ëÇÏ°í ÀÚ¿¬¾î¿Í °°Àº º¹ÀâÇÑ ¹®¹ýÀ» ¾²´Â °ÍÀº °ÅÀÇ ºÒ°¡´É¿¡ °¡±î¿ö Áø´Ù.

 

±×·¯¸é ÀÌÁ¦ ¸®½ºÆ® ±¸Á¶ÀÇ ÀÏÄ¡¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.

       (a) [ a ]                         ¡Ö     [ a ]
       (b) [ a, b ]                     ¡Ö     [ a, b ]
       (c) [ A, a]                      ¡Ö     [ c, D ], À̶§ A=c, D=a °¡ µÈ´Ù.
       (d) [ A, [a, B], d ]         ¡Ö     [ p, [a, q], d] À̶§ A=p, B=q °¡ µÈ´Ù.
       (e) [ a1, a2, ......a999]    ¡Ö     [A1, A2, ......A999] À̶§ Ai=ai °¡ µÈ´Ù. 

2. °£´ÜÇÑ ÀÚ¿¬¾ð¾î ó¸®ÇÁ·Î±×·¥

¿ì¸®°¡ ÇÑ ¿µ¾î ¹®ÀåÀ» ÀÔ·ÂÇßÀ» ¶§, ÀÔ·ÂµÈ ¹®ÀåÀ» º¯È¯ÇÏ¿© ´Ù¸¥ ¹®ÀåÀ¸·Î ÀÀ´äÇÏ´Â PROLOG ÇÁ·Î±×·¥À» »ý°¢ÇØ º¸ÀÚ. ÀÔ·ÂµÈ ¸»¿¡ ´ëÇØ ÇÁ·Î±×·¡¸Ó¿¡°Ô ´Ù½Ã À̾߱âÇØ ÁÖ´Â ÀÌ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ´ëÈ­¸¦ ¸¸µé ¼ö ÀÖ´Ù.

       ÇÁ·Î±×·¡¸Ó :       you are a computer
       PROLOG ½Ã½ºÅÛ :  I am not a computer
       ÇÁ·Î±×·¡¸Ó :       do you speak french
       PROLOG ½Ã½ºÅÛ :  no I speak german

ÀÌ ´ëÈ­´Â ¾î´À Á¤µµ ¹«¸®ÇÑ ¸éÀÌ ÀÖÁö¸¸ ¾ç½ÄÀ» °®Ãá ´ëȭó·³ º¸ÀδÙ. ´ÙÀ½ÀÇ ´Ü°è¸¦ µû¶ó°¡¸é ÀÌ ´ëÈ­ ºÎºÐÀ» »ý¼ºÇÏ´Â ÄÄÇ»ÅÍÇÁ·Î±×·¥À» ½±°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

¾ÕÀÇ ´ëÈ­¿¡¼­ ó·³ ÁÖÀÇ ±í°Ô ¼±ÅÃÇÑ ¹®Àåµé¿¡ ÀÌ ¹æ¹ýÀ» Àû¿ëÇϸé ÀÌ ¹æ¹ýÀº ¹®ÀåÀ» º¯È¯ÇÏ¿© ¾î´À Á¤µµ ¾ç½ÄÀ» °®Ãá ¹®ÀåÀ» »ý¼ºÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ´ÙÀ½ÀÇ ¿¹Ã³·³ ¸ðµç ¹®Àå¿¡ ÀÌ ¹æ¹ýÀ» Àû¿ëÇÒ ¼ö´Â ¾ø´Ù.

       ÇÁ·Î±×·¡¸Ó :         I do like you
       PROLOG ½Ã½ºÅÛ :  I no like

ÇÏÁö¸¸ ¿ì¼± ´Ü¼øÇÑ ¹®Àå¿¡ ´ëÇÑ º¯È¯ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ°í ³­ ÈÄ ¿¹Ã³·³ ¼­Åõ¸¥ Ãâ·ÂÀ» ³»º¸³»´Â ¹®ÀåÀ» ´Ù·ç±â À§ÇØ ³ªÁß¿¡ ÇÁ·Î±×·¥À» ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù. ÇÑ ¹®ÀåÀ» ´Ù¸¥ ¹®ÀåÀ¸·Î º¯È¯ÇÏ´Â PROLOG ÇÁ·Î±×·¥Àº ¾Õ¿¡¼­ ¼³¸íÇÑ ¹æ¹ýÀ» ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ù° ¿ì¸®´Â ¿ø·¡ÀÇ ¹®Àå°ú º¯È¯µÈ ¹®Àå »çÀÌÀÇ °ü°è¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. ÀÌ °ü°è¸¦ ³ªÅ¸³»±â À§ÇØ alter ¶ó´Â PROLOG ¼ú¾î¸¦ Á¤ÀÇÇÏ¿© alter(X, Y) ´Â ¹®Àå X ¸¦ º¯È¯ÇÏ¿© ¹®Àå Y ·Î ¸¸µå´Â °ÍÀ» ÀǹÌÇϵµ·Ï ÇÑ´Ù.  X ¿Í Y ´Â ¹®ÀåÀÇ °¢ ´Ü¾îµéÀ» ¿ø¼Ò·Î °®´Â ¸®½ºÆ®·Î »ý°¢ÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù. ÀÌ·¸°Ô ÇÏ¸é ¹®ÀåÀ» [this, is, a, scntrnce] ó·³ Ç¥½ÃÇÒ ¼ö ÀÖ´Ù.  alter¸¦ Á¤ÀÇÇÑ ÈÄ ¿ì¸®´Â PROLOG ½Ã½ºÅÛ¿¡ ´ÙÀ½°ú °°Àº ÇüÅÂÀÇ Áú¹®À» ÇÒ ¼ö ÀÖ´Ù.

          ¢¡ ?¤Ñalter([do, you, know, french], X).

          ¢¡ X=[no, I, know, german]

¿©±â¼­ ÀÔ·Â ¹®Àå°ú Ãâ·Â ¹®ÀåÀ» ÀÏ»óÀûÀÎ ¹®Àå Ç¥Çö ¹æ½ÄÀ¸·Î ³ªÅ¸³»´Â °Í¿¡ ´ëÇØ ¾ÆÁ÷Àº »ý°¢ÇÏÁö ¸»ÀÚ. ÀÌ ±³ÀçÀÇ µÚ¿¡¼­ ¿ì¸®´Â ±¸Á¶¸¦ Æǵ¶Çϱ⠽¬¿î ÇüÅ·ΠÀÔ·ÂÇϰųª ÀμâÇÏ´Â ¹æ¹ýµé¿¡ ´ëÇØ ´Ù·ê °ÍÀÌ´Ù. ÇöÀç´Â ´ÜÁö ÇÑ ¸®½ºÆ®¸¦ ´Ù¸¥ ¸®½ºÆ®·Î º¯È¯ÇÏ´Â °Í¸¸ »ý°¢Çϱâ·Î ÇÑ´Ù.  alter°¡ ¸®½ºÆ®¸¦ Ãë±ÞÇÏ°í ÀÖÀ¸¹Ç·Î alter ¼ú¾îÀÇ Ã¹ ¹ø° »ç½ÇÀº ¼ú¾îÀÇ Àμö°¡ ºó ¸®½ºÆ®ÀÎ °æ¿ì¸¦ Ç¥ÇöÇÏ¿©¾ß ÇÑ´Ù.

       Alter([  ], [  ]).

Áï, alter ¼ú¾î´Â À§ÀÇ »ç½Ç¿¡ ÀÇÇØ ºó ¸®½ºÆ®¸¦ ºó ¸®½ºÆ®·Î º¯È¯ÇÒ °ÍÀÌ´Ù. ÀÌó·³ alter ¼ú¾î°¡ ºó ¸®½ºÆ®¸¦ À§±ÞÇØ¾ß ÇÏ´Â ÀÌÀ¯´Â µÚ¿¡ ¼³¸íÇÏ°Ú´Ù. ´ÙÀ½À¸·Î alter ¼ú¾îÀÇ ÁÖÀÛ¾÷À» ¾Ë¾Æº¸¸é ´ÙÀ½°ú °°´Ù.

       1. ÀÔ·Â ¸®½ºÆ®ÀÇ ¸Ó¸®¸¦ ´Ù¸¥ ´Ü¾î·Î º¯È¯ÇÏ°í Ãâ·Â ¸®½ºÆ®ÀÇ ¸Ó¸®°¡ º¯È¯µÈ ´Ü¾î¸¦ ³ªÅ¸³»µµ·Ï ÇÑ´Ù.
       2. ÀÔ·Â ¸®½ºÆ®ÀÇ ²¿¸®¸¦ alter¸¦ Àû¿ëÇÏ¿© º¯È¯ÇÏ°í º¯È¯µÈ ²¿¸®¸¦ Ãâ·Â ¸®½ºÆ®ÀÇ ²¿¸®·Î ÇÑ´Ù.
       3. ¸¸ÀÏ ÀÔ·Â ¸®½ºÆ®ÀÇ ¸¶Áö¸·¿¡ µµ´ÞÇÏ¸é ´õ ÀÌ»ó Ãâ·ÂÇÒ °ÍÀÌ ¾øÀ¸¹Ç·Î ºó ¸®½ºÆ® ([  ])·Î Ãâ·Â ¸®½ºÆ®¸¦ ³¡³½´Ù.

ÀÌ°ÍÀ» PROLOG ¾ð¾î¿Í À¯»çÇÑ ¾ð¾î·Î ¹Ù²Ù¸é ¾Æ·¡¿Í °°´Ù.
¸Ó¸® H ¿Í ²¿¸® T ¸¦ °¡Áø ¸®½ºÆ®¸¦ º¯È¯ÇÏ¸é ¸Ó¸® X ¿Í ²¿¸® Y ¸¦ °¡Áø ¸®½ºÆ®¸¦ »ý¼ºÇϴµ¥ ¿©±â¼­ X ´Â ´Ü¾î H ¸¦ º¯È¯ÇÑ °ÍÀÌ°í ¸®½ºÆ® Y ´Â ¸®½ºÆ® T ¸¦ º¯È¯ÇÑ °ÍÀÌ´Ù.
ÀÌÁ¦ ¿ì¸®´Â ÇÑ ´Ü¾î¸¦ ´Ù¸¥ ´Ü¾î·Î º¯È¯ÇÏ´Â °ÍÀÌ ¹«¾ùÀ» ÀǹÌÇϴ°¡¸¦ ¸»ÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ´Ü¾î X ¸¦ ´Ü¾î Y ·Î º¯È¯ÇÏ´Â °ÍÀ» Ç¥ÇöÇÏ´Â change(X, Y) »ç½ÇµéÀ» ÀúÀåÇÏ°í ÀÖ´Â µ¥ÀÌÅͺ£À̽º¸¦ À¯ÁöÇÏ¸é µÈ´Ù. µ¥ÀÌÅͺ£À̽ºÀÇ ¸¶Áö¸·¿¡´Â ÇÑ ´Ü¾î¸¦ ´Ù¸¥ ´Ü¾î·Î º¯È¯ÇÒ ¼ö ¾øÀ» °æ¿ì ±× ÀÚ½ÅÀ¸·Î º¯È¯ÇÏ´Â »ç½ÇÀ» ³ªÅ¸³»´Â À⳶ (catch_all) »ç½ÇÀÌ ÇÊ¿äÇÏ´Ù. À⳶ »ç½ÇÀ» µÎ´Â ÀÌÀ¯´Â ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô µ¿ÀÛÇϴ°¡¸¦ ¾Ë°í ³­ ÈÄ¿¡´Â ¸íÈ®ÇØÁú °ÅÀÌ´Ù. À⳶ »ç½ÇÀº change(X, Y) ·Î ´Ü¾î X °¡ ±× ÀÚ½ÅÀ¸·Î º¯È¯µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. À§¿¡¼­ ¿­°ÅÇÑ ´Ü¾îµéÀÇ º¯È¯À» ´Ù·ç´Â µ¥ÀÌÅͺ£À̽º´Â ´ÙÀ½°ú °°´Ù.

          change(you, I)
          change(are, [am, not]).
          change(french, german).
          change(do, no).
          change(X, X).             /* À⳶ »ç½Ç */

¿©±â¼­ "am not" ±¸¸¦ change »ç½ÇÀÇ ÇÑ Àμö¸¸À» Â÷ÁöÇϵµ·Ï ¸®½ºÆ®·Î Ãë±ÞÇßÀ½À» ÁÖÀÇÇ϶ó.
ÀÌÁ¦ ¸Ó¸® A ¿Í ²¿¸® B ¸¦ °¡Áø ¸®½ºÆ®¸¦ [A|B] ·Î Ç¥ÇöÇÏ´Â °ÍÀ» ¿°µÎ¿¡ µÎ°í À§¿¡¼­ ±â¼úÇÑ alter ¼ú¾î¸¦ ´ÙÀ½°ú °°ÀÌ PROLOG ¾ð¾î·Î ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

       alter([  ], [  ]).
       alter([H|T], [X|Y] : - change(H, X), alter(T, Y).

ÀÌ ÇÁ·Î½ÃÁê¾îÀÇ Ã¹ ¹ø° ³í¸® ÀýÀº ÀÔ·Â ¸®½ºÆ®°¡ ºó ¸®½ºÆ®Àΰ¡¸¦ °Ë»çÇÏ´Â °ÍÀº ¹°·Ð ÀÔ·Â ¸®½ºÆ®ÀÇ ³¡¿¡ µµ´ÞÇß´ÂÁöÀÇ ¿©ºÎµµ °Ë»çÇÑ´Ù. ±× ÀÌÀ¯¸¦ ´ÙÀ½ÀÇ ¿¹·Î ¾Ë¾Æº¸ÀÚ.

        ?- alter([you, are, a, computer], Z).

ÀÌ Áú¹®Àº alter ÀÇ µÎ ¹ø° ³í¸® Àý°ú ºÎÇÕµÇ¾î º¯¼ö H ´Â you ¸¦ ³ªÅ¸³»°í T ´Â ¸®½ºÆ® [are, a, compute] ¸¦ ³ªÅ¸³½´Ù. ´ÙÀ½ changeP(you, ¼öÇàÀº º¯¼ö X °¡ ´Ü¾î 'I' ¸¦ ³ªÅ¸³»µµ·Ï ¸¸µç´Ù. µû¶ó¼­ º¯¼ö X °¡ alter °í¿ïÀÇ Ãâ·Â ¸®½ºÆ®ÀÇ Ã¹ ¹ø° ´Ü¾î´Â 'I' °¡ µÈ´Ù.  ´ÙÀ½ alter([are, a, computer], Y) °í¿ïÀÌ °°Àº ±ÔÄ¢À» »ç¿ëÇÏ¿© ´Ü¾î are ¸¦ ¸®½ºÆ® [am, not] À¸·Î ¹Ù²Ù°í alter([a, computer], Y) °í¿ïÀ» »ý¼ºÇÑ´Ù. ÀÌ °í¿ïÀ» ¼öÇàÇϸé change(a, X) ¿Í ºÎÇÕÀÌ µÇ´Â »ç½ÇµéÀ» µ¥ÀÌÅÍ º£À̽º¿¡¼­ ã±â¸¸ 'a' ·Î ¹Ù²ï´Ù. ´ÙÀ½ °í¿ïÀº alter([computer], Y) ·Î ´Ù½Ã µÎ ¹ø° ³í¸® Àý°ú ºÎÇյǾî change(computer, X) °í¿ïÀ» ¼öÇàÇÑ´Ù. ÀÌ °í¿ïÀº Àü°ú ¸¶Âù°¡Áö·Î À⳶ »ç½Ç°ú ºÎÇյǾî computer´Â ±× ÀÚ½ÅÀ¸·Î º¯È¯µÈ´Ù. ¸¶Ä§³» ¿©±â¼­ alter([  ], Y) °í¿ïÀ» ¼öÇàÇϸé ù¹ø° ³í¸® Àý°ú ºÎÇյǾî Ãâ·Â ¸®½ºÆ®·Î ³»º¸³¾ ¹®ÀåÀÌ ³¡³µÀ½À» ¾Ë¸°´Ù. µû¶ó¼­ PROLOG ½Ã½ºÅÛÀº ¿ø·¡ Áú¹®¿¡ ´ÙÀ½°ú °°ÀÌ ÀÀ´äÇÒ °ÍÀÌ´Ù.

        Z=[I, [am, not], a, computer]

¿©±â¼­ [am, not] ±¸´Â ¸®½ºÆ®¿¡ »ðÀÔµÈ ´ë·Î ³ªÅ¸³ª´Â °Í¿¡ ÁÖÀÇÇ϶ó.
alter([  ], [  ]) »ç½Ç°ú À⳶ »ç½Ç change(X, X) ¸¦ ÷°¡ÇÏ´Â ÀÌÀ¯°¡ ÀÌÁ¦´Â ¸íÈ®ÇØÁú °ÍÀÌ´Ù. º¸Åë °æ°è Á¶°ÇÀ» °Ë»çÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ ÀÌ¿Í °°Àº »ç½ÇµéÀ» ÇÁ·Î±×·¥¿¡ ÷°¡ÇÑ´Ù. À§ÀÇ ¼³¸í¿¡¼­ ÀԷ¸®½ºÆ®°¡ ºó ¸®½ºÆ®°¡ µÇ°Å³ª CHANGE »ç½ÇµéÀ» ¸ðµÎ ã¾Æº¸¾ÒÀ» ¶§ °æ°è Á¶°ÇÀÌ ¹ß»ýÇÑ´Ù´Â °ÍÀÌ ºÐ¸íÇÏ´Ù. ÀÌ µÎ °¡Áö °æ°è Á¶°ÇÀÌ ¹ß»ýÇßÀ» ¶§ ¾î¶² ÇൿÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ¿¹¿¡¼­ ÀÔ·Â ¸®½ºÆ®°¡ ³¡³ª°Ô ÇÏ°í CHANGE »ç½ÇµéÀ» ¸ðµÎ ã°í ³­ ÈÄ ¾î¶² ´Ü¾î°¡ ´Ù¸¥ ´Ü¾î·Î º¯È¯µÇÁö ¾ÊÀ¸¸é ´Ü¾î¸¦ ±× ÀÚ½ÅÀ¸·Î º¯È¯ÇÑ´Ù.
³»ÀåµÈ Ç¥ÁØ ¼ú¾î´Â Turbo PROLOG system ÀÚü¿¡ ³»ÀåµÇ¾î ÀÖ´Â ¼ú¾îµéÀÌ´Ù. ÀϹÝÀûÀ¸·Î À̵é Ç¥ÁØ ¼ú¾î´Â Åë»óÀÇ Turbo PROLOG ÀÇ Àý·Î Ç¥ÇöÇÒ ¼ö ¾ø´Â ÇÔ¼öµé·Î ±¸¼ºµÈ´Ù. ±×¸®°í À̵éÀº ture ³ª false ¸¦ ´äÇÏ´Â ´ë½Å keyboard ÀÔ·ÂÀ̳ª È­¸é Ç¥½Ã¸¦ À§ÇØ »ç¿ëµÇ´Â °æ¿ì°¡ ÈçÈ÷ ÀÖ´Ù.

3. ELIZA Á¤½Åº´È¯ÀÚ Áø´Ü ÇÁ·Î±×·¥

ÀÌ ÇÁ·Î±×·¥Àº Á¤½Åº´È¯ÀÚ°¡ Àǻ簡 ¾øÀ̵µ COMPUTER CRT ¸¦ ÀÌ¿ëÇؼ­ ¼­·Î °£´ÜÇÑ ´ëÈ­¸¦ ÁÖ°í¹ÞÀ» ¼ö ÀÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÄÄÇ»ÅÍ¿¡¼­ HOW ARE YOU THIS BEAUTIFUL DAY? ÀÇ ³»¿ëÀ» Àǻ簡 ¹°¾î º¸µíÀÌ ÇÁ·Î±×·¥¿¡¼­ ¾ð¾î°¡ ÀÚµ¿ »ý¼ºµÇ°í ȯÀÚ°¡ ÀÌ ³»¿ë¿¡ ÇØ´çÇÏ´Â ´ë´ä :  I DON'T KNOW, I FEEL BAD.À» COMPUTER KEYBOARD ·Î TYPING Çϸé ÇÁ·Î±×·¥¿¡¼­ TRANSE ¿Í FRONT TOKEN ÀÇ ±â´ÉÀ¸·Î ´ÙÀ½°ú °°Àº ¾ð¾î°¡ ÀÚµ¿ »ý¼ºµÇ¾î CRT¿¡ DISPLAY µÉ °ÍÀÌ´Ù. HOW DO YOU KNOW THAT? ±×·¯¸é ÀÌ¿Í °°Àº ±â´ÉÀÌ ¾î¶»°Ô µÇ´ÂÁö¸¦ ¾Ë¾Æº¸ÀÚ. ¿ì¼± ¿ì¸®°¡ »ç¿ëÇÏ´Â ¾ð¾îµµ ¾Ë°í º¸¸é DO YOU HAVE A BOOK? ÀÇ ´ë´äÀ¸·Î´Â YES, I HAVE A BOOK. ARE YOU A BOY? ÀÇ ´ë´äÀ¸·Î´Â YES, I AM A BOY. ¿Í °°ÀÌ µÉ °ÍÀÌ´Ù. Áï ¿ì¸®´Â Àǹ®¹®ÀÇ ÁÖ¾î¿Í µ¿»ç´Â ±àÁ¤¹®À¸·Î ´ë´äµÉ ¶§¿¡ YOU ¸¦ I ·Î ¹Ù²Ù°í µ¿»ç ARE ¸¦ AM À¸·Î ¹Ù²Û´Ù. ÀÌ·¯ÇÑ °ÍÀº TRANS ÀÇ ±â´ÉÀ» ÀÌ¿ëÇؼ­ ÀûÀýÇÑ ´Ü¾î¿¡ ´ëÀÀÇÏ°Ô²û ¹Ù²Ü ¼ö ÀÖ´Ù.

        char *trans[ ] = {
                "you", "Let's not talk about me.",
                "think", "Why do you think that?",
                "hate", "So you hate something - tell me more.",

±×¸®°í ¸ñÀû¾î´Â ±×´ë·Î ¹Ýº¹µÇ¾î ±àÁ¤¹®À¸·Î »ç¿ëµÈ´Ù. ÀÌ·± ¿ø¸®¸¦ ÄÄǪÅÍ¿¡ ÀÌ¿ëÇϱâ À§Çؼ­ ÇÑ ¹®ÀåÀ» HEAD ¿Í TAIL ·Î ³ª´« ÈÄ¿¡ int head=0;/* head of topics queue*/ int tail=0;
 /* tail of topics queue */ ÇÁ·Î±×·¥Àº ȯÀÚ°¡ ÀÔ·ÂÇÑ ÀÀ´äÀ» ´Ü¼øÈ÷ RETURN À» Ä¡°Å³ª ±æÀÌ°¡ VERYSHORT °³ÀÇ #define SHORT 10 #define VERYSHORT 3 ¹®ÀÚº¸´Ù ªÀº ¹ÝÀÀÀ» ³ÖÀ¸¸é RESPOND( ) ÀÇ È£ÃâÇÔÀ¸·Î½á ÀÌÀüÀÇ ÁÖÁ¦·Î µ¹¾Æ°¡·Á°í ÇÑ´Ù.

        if (strlen(s)<VERYSHORT && strcmp(s, "bye")) {
          else{
             if (!*response[res]) res=0;/* start over again */
             printf("%s\n", response[res++]);
          }
          return;
        }

TOPICS Å¥¿¡ ÁÖÁ¦°¡ ÀÖÀ¸¸é FIND_TOPIC( ) ´Â ÂüÀ» ¸®ÅÏÇÏ°í ÁÖÁ¦¸¦ ¹è¿­ T¿¡ ³ÖÀ» °ÍÀÌ´Ù.  ¸¸¾à ÀÌÀüÀÇ ÁÖÁ¦°¡ ¾øÀ¸¸é RESPOND( ) ´Â RESPONSE µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ Àü¿¡ ÀÖ´ø ¹ÝÀÀ (STOCK RESPONSE) À» ¼±ÅÃÇÑ´Ù. ȯÀÚ°¡ SHORT ¹®ÀÚ¼öº¸´Ù ´õ ±ä ¹ÝÀÀÀ» ³ÖÀ¸¸é RESPOND( ) ´Â ´ë´äÀ» TOPICS Å¥¿¡ ³õ´Â´Ù.

          if (strlen(s)<VERYSHORT && strcmp(s, "bye")) {
                  if (find_topic(t))  {
                    printf("You just said : ");
                    printf("%s \n", t);
                    printf("tell me more.\n");
                    }

ÀÌ Ã¼Å©´Â Àǻ簡 ¸Å¿ì ªÀº ´ë´äÀ» ÁÖÁ¦·Î À߸øÇÏ´Â °ÍÀ» ¸·±â À§Çؼ­ ÇÊ¿äÇϸç RESPOND( ) ´Â TRANS µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â ¾î¶² ´Ü¾î¿¡ ´ëÇؼ­µµ ȯÀÚÀÇ ¹ÝÀÀÀ» ÀÚ¼¼È÷ Á¶»çÇÑ ÈÄ¿¡ RESPOND( ) °¡ Çϳª¸¦ ¹ß°ßÇϸé Àû´çÇÑ ¹ÝÀÀÀ» ¸¸µé°í ¹®ÀåÀÇ ³¡¿¡¼­ ¾î¶² ´Ü¾îµµ µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â °Í°ú ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é ÀÇ»ç´Â ´Ü¼øÈ÷ TELL ME MORE ¶ó°í ¸»ÇÑ´Ù. ÇÔ¼ö respond( ) ´Â "my" ¸¦ "you" ÇÏ´Â °Íó·³ ¸î ´Ü¾îÀÇ ³»¿ëÀ» ¹Ù²Ù±â À§Çؼ­ trans µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÑ´Ù. ÇÁ·Î±×·¥ÀÌ trans µ¥ÀÌÅͺ£À̽º¿¡¼­ ´Ü¾î¸¦ ãÁö ¸øÇϸé ÇöÀçÀÇ ´Ü¾î¸¦ ´Ü¼øÈ÷ ´Ù½Ã ÇÁ¸°Æ®ÇÑ´Ù. ȯÀÚ°¡ return À» Ä¡¸é respond( ) ´Â ¹ÝÀÀ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ÀÌ¹Ì ÀÖ´Â ¹ÝÀÀ (stock response) À» »ç¿ëÇÒ °ÍÀÌ´Ù. ÇÁ·Î±×·¥Àº get_token( ) ÇÔ¼öÀÇ ¾à°£ º¯ÇüµÈ ¹öÀüÀ» »ç¿ëÇÏ¿© ȯÀÚÀÇ ¹ÝÀÀÀ» ºÐ¼®ÇÑ´Ù.

        get_token( );
          loc=lookup(token);
          if (loc!=-1) {
             printf("%s\n", trans[loc+1]);
             return;
          }
        }  while(*token);

Áï ȯÀÚÀÇ ¹ÝÀÀÀ» ÀúÀåÇÒ Å¥¸¦ ¸¸µé°í TRANS µ¥ÀÌÅͺ£À̽º´Â Å°¿öµå¿Í ¹ÝÀÀÀ» °£Á÷ÇÒ °ÍÀÌ´Ù. Áï ÇÁ·Î±×·¥ÀÌ Å°¿öµå¸¦ ÀνÄÇÒ ¶§¸¶´Ù Àû´çÇÑ ¹ÝÀÀÀ» ³ªÅ¸³¾ °ÍÀÌ´Ù. 2Â÷¿ø ¹®Àڹ迭 TOPICS ´Â ȯÀÚÀÇ ¹ÝÀÀ¿¡ ´ëÇÑ È¯ÇüÅ¥¸¦ À¯ÁöÇÏ°í ÇÁ·Î±×·¥Àº TOPICS ¸¦ À妽º·Î ÇÏ°í Å¥¸¦ ¸¸µé±â À§Çؼ­ HEAD ¿Í TAIL º¯¼öµéÀ» »ç¿ëÇÑ´Ù. MAX ´Â Å¥¸¦ ¼³Á¤ÇÑ ÀÓÀÇÀÇ °ªÀ̸ç ÇÁ·Î±×·¥Àº ȯÀÚ°¡ ´äÀ» ³ÖÀ¸¸é ³ªÁß¿¡ ÇàÀ§ÀÇ ¾î¶² °úÁ¤ÀÌ ÃëÇØÁú °ÍÀÎÁö¸¦ °áÁ¤Çϱâ À§Çؼ­ SHORT ¿Í VERYSHORT ¸¦ »ç¿ëÇÑ´Ù. ÇÁ·Î±×·¥Àº ȯÀÚ°¡ ÀÔ·ÂÇÑ ÀÀ´äÀ» ´Ü¼øÈ÷ RETURN À» Ä¡°Å³ª ±æÀÌ°¡ VERYSHORT °³ÀÇ ¹®ÀÚº¸´Ù ªÀº ¹ÝÀÀÀ» ³ÖÀ¸¸é REPOND( ) ÀÇ È£ÃâÇÔÀ¸·Î½á ÀÌÀüÀÇ ÁÖÁ¦·Î µ¹¾Æ°¡·Á°í ÇÑ´Ù. TOPICS Å¥¿¡ ÁÖÁ¦°¡ ÀÖÀ¸¸é FIND_TOPIC( ) ´Â ÂüÀ» ¸®ÅÏÇÏ°í ÁÖÁ¦¸¦ ¹è¿­ T ¿¡ ³ÖÀ» °ÍÀÌ´Ù. ¸¸¾à ÀÌÀüÀÇ ÁÖÁ¦°¡ ¾øÀ¸¸é RESPOND( ) ´Â RESPONSE µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ Àü¿¡ ÀÖ´ø ¹ÝÀÀ(STOCK RESPONSE) À» ¼±ÅÃÇÑ´Ù.
ȯÀÚ°¡ SHORT ¹®ÀÚ¼öº¸´Ù ´õ ±ä ¹ÝÀÀÀ» ³ÖÀ¸¸é RESPOND( ) ´Â ´ë´äÀ» TOPICS Å¥¿¡ ³õ´Â´Ù. ÀÌ Ã¼Å©´Â Àǻ簡 ¸Å¿ì ªÀº ´ë´äÀ» ÁÖÁ¦·Î À߸øÇÏ´Â °ÍÀ» ¸·±â À§Çؼ­ ÇÊ¿äÇϸç, RESPOND( ) ´Â TRANS µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â ¾î¶² ´Ü¾î¿¡ ´ëÇؼ­µµ ȯÀÚÀÇ ¹ÝÀÀÀ» ÀÚ¼¼È÷ Á¶»çÇÑ ÈÄ¿¡ RESPOND( ) °¡ Çϳª¸¦ ¹ß°ßÇϸé Àû´çÇÑ ¹ÝÀÀÀ» ¸¸µé°í ¹®ÀåÀÇ ³¡¿¡¼­ ¾î¶² ´Ü¾îµµ µ¥ÀÌÅͺ£À̽º¿¡ ÀÖ´Â °Í°ú ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é ÀÇ»ç´Â ´Ü¼øÈ÷ TELL ME MORE ¶ó°í ¸»ÇÑ´Ù. ÇÔ¼ö respond( ) ´Â "my" ¸¦ "your" ÇÏ´Â °Íó·³ ¸î ´Ü¾îÀÇ ³»¿ëÀ» ¹Ù²Ù±â À§Çؼ­ trans µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÑ´Ù.
ÇÁ·Î±×·¥ÀÌ trans µ¥ÀÌÅͺ£À̽º¿¡¼­ ´Ü¾î¸¦ ãÁö ¸øÇϸé ÇöÀçÀÇ ´Ü¾î¸¦ ´Ü¼øÈ÷ ´Ù½Ã ÇÁ¸°Æ® ÇÑ´Ù. ȯÀÚ°¡ return À» Ä¡¸é respond( )´Â ¹ÝÀÀ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ ÀÌ¹Ì ÀÖ´Â ¹ÝÀÀ (stock response) À» »ç¿ëÇÒ °ÍÀÌ´Ù. ÇÁ·Î±×·¥Àº get_token( ) ÇÔ¼öÀÇ ¾à°£ º¯ÇüµÈ ¹öÀüÀ» »ç¿ëÇÏ¿© ȯÀÚÀÇ ¹ÝÀÀÀ» ºÐ¼®ÇÑ´Ù. Áï ȯÀÚÀÇ ¹ÝÀÀÀ» ÀúÀåÇÒ Å¥¸¦ ¸¸µé°í, TRANS µ¥ÀÌÅͺ£À̽º´Â Å°¿öµå¿Í ¹ÝÀÀÀ» °£Á÷ÇÒ °ÍÀÌ´Ù. Áï ÇÁ·Î±×·¥ÀÌ Å°¿öµå¸¦ ÀνÄÇÒ ¶§¸¶´Ù Àû´çÇÑ ¹ÝÀÀÀ» ³ªÅ¸³¾ °ÍÀÌ´Ù.  2Â÷¿ø ¹®Àڹ迭 TOPICS ´Â ȯÀÚÀÇ ¹ÝÀÀ¿¡ ´ëÇÑ È¯ÇüÅ¥¸¦ À¯ÁöÇÏ°í ÇÁ·Î±×·¥Àº TOPICS ¸¦ À妽º·Î ÇÏ°í Å¥¸¦ ¸¸µé±â À§Çؼ­ HEAD ¿Í TAIL º¯¼öµéÀ» »ç¿ëÇÑ´Ù. MAX ´Â Å¥¸¦ ¼³Á¤ÇÑ ÀÓÀÇÀÇ °ªÀ̸ç ÇÁ·Î±×·¥Àº ȯÀÚ°¡ ´äÀ» ³ÖÀ¸¸é ³ªÁß¿¡ ÇàÀ§ÀÇ ¾î¶² °úÁ¤ÀÌ ÃëÇØÁú °ÍÀÎÁö¸¦ °áÁ¤Çϱâ À§Çؼ­ SHORT ¿Í VERYSHORT ¸¦ »ç¿ëÇÑ´Ù.  

¸¸ÀÏ RESPOND °¡ TRANSE µ¥ÀÌÅͺ£À̽º¿¡¼­ ´Ü¾î¸¦ ¹ß°ßÇÏÁö ¸øÇϸé DOCTOR ´Â RESPONSE µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ ÀÀ´äÀ» ÀÌ¿ëÇÏ¿© ȯÀÚ°¡ ÀÔ·ÂÇÑ ÀÀ´ä¿¡  ASSERT ÀÇ ±â´ÉÀ» ÀÌ¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽ºÀÇ ¾ÕÀ̳ª µÚ¿¡ ÀýÀ» Ãß°¡½ÃŲ´Ù.

ASSERTA(X) ¿Í ASSERTZ(X) ´Â ¶È°°ÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ÀýÀ» Ãß°¡ÇÏÁö¸¸ ASSERTA(X)..... µ¥ÀÌÅͺ£À̽ºÀÇ Á¦ÀÏ ¾Õ¿¡ ÀýÀ» Ãß°¡ÇÏ°í ASSERTZ(X)...... µ¥ÀÌÅͺ£À̽ºÀÇ Á¦ÀÏ µÚ¿¡ ÀýÀ» Ãß°¡ÇÏ°í RETRACT(X)..... µ¥ÀÌÅͺ£À̽º¿¡¼­ ºÒÇÊ¿äÇÑ ÀýµéÀ» Ãß°¡ÇÑ´Ù. ¶Ç ÇÁ·Î±×·¥Àº DOCTOR °¡ ȯÀÚÀÇ ÀÀ´äÀ» ó¸®ÇÒ ¼ö ÀÖÀ» ¶§±îÁö TEMP µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÑ´Ù.

ȯÀÚ°¡ ´ÜÁö RETURN Å°¸¦ Ä£´Ù¸é DOCTOR ÀÇ Ã¹ ¹ø° ¶óÀÎÀº ¾ÕÀÇ ÁÖÁ¦¿¡ °üÇÑ ³»¿ëÀ¸·Î µ¹¾Æ°¡·Á°í ÇÑ´Ù. TOPICS µ¥ÀÌÅͺ£À̽º¿¡ ¾ÕÀÇ ÁÖÁ¦¿¡ °üÇÑ ³»¿ëÀÌ ¾ø´Ù¸é ÇÁ·Î±×·¥Àº RESPONSES µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÈ ÀÀ´ä Áß¿¡¼­ ÀûÇÕÇÑ °ÍÀ» ȯÀÚ°¡ ÇÑ ¹®ÀåÀ» ¼±ÅÃÇϸé RESPOND °¡ ½ÇÇàµÇ¸ç ½ÇÇà¿¡ ¼º°øÇϱâ À§Çؼ­´Â ȯÀÚ°¡ ÀÔ·ÂÇÑ ¹®Àå¿¡¼­ Å°¿öµå¸¦ ¹ß°ßÇØ¾ß ÇÑ´Ù. Å°¿öµå¸¦ ¹ß°ßÇϸé ÇÁ·Î±×·¥Àº Å°¿öµå¿Í ¿¬°áµÈ ÀÀ´äÀ» ÇÏ°í ¹ß°ßÇÏÁö ¸øÇϸé DOCTOR ÀÇ ¼¼ ¹ø° ÀýÀ» ÀÌ¿ëÇؼ­ ¹®Àå¿¡¼­ ´ÙÀ½ Å°¿öµå¸¦ ãÀ¸·Á°í ÇÑ´Ù.

¹®Àå ³¡¿¡ µµ´ÞÇÏ°íµµ Å°¿öµå¸¦ ãÁö ¸øÇÏ¸é ¼ú¾îÀüü´Â ½ÇÇà¿¡ ½ÇÆÐÇÑ´Ù. À̶§¿¡´Â DOCTOR ÀÇ ¸¶Áö¸· ÀýÀÌ ¼öÇàµÇ¸ç ¸¶Áö¸· ÀýÀº ù ¹ø° Àý°ú µ¿ÀÏÇÏ´Ù.