Àü¹®°¡ ½Ã½ºÅÛ ¿ø¸®¿Í °³¹ß : ÀÌÀç±Ô, ÃÖÇü¸², ±èÇö¼ö, ¼¹Î¼ö, ÁÖ¼®Áø, Áö¿øÃ¶ °øÀú, ¹ý¿µ»ç, 1996, Page 238~249
|
PROLOG´Â 1973³â ¸¶¸£¼¼ÀÌÀ¯ ´ëÇÐ ÀΰøÁö´É ¿¬±¸½Ç¿¡¼ A. Colmerauer¿Í P. Roussel¿¡ ÀÇÇØ °³¹ßµÈ ³í¸®ÁöÇâÀû ¾ð¾îÀÌ´Ù. ƯÈ÷ ¼ú¾î³í¸®(Predicate Logic)¿¡ ±â¹ÝÀ» µÎ°í ÀÖ´Ù. PROLOG´Â LISP º¸´Ù´Â ±Ô¸ð°¡ À۱⠶§¹®¿¡ PC¸¦ ºñ·ÔÇÑ ¿©·¯ Á¾·ùÀÇ ÄÄÇ»ÅÍ¿¡¼ ½ÇÇàÀÌ °¡´ÉÇÏ´Ù. PROLOG´Â Àü¹®°¡½Ã½ºÅÛÀÇ ¿¬±¸¿¡´Â ±â¿©¸¦ ÇØ¿ÔÀ¸³ª ´ëÇüÀü¹®°¡½Ã½ºÅÛ °³¹ß¿¡´Â ÀûÇÕÇÏÁö ¸øÇÏ´Ù. ±×·¯³ª º´·ÄŽ»ö¿¡ ÀûÇÕÇÏ°Ô ¼³°èµÇ¾î Àֱ⠶§¹®¿¡ º´·Ä󸮰¡ ÁÖ¿ä ¿ä¼Ò°¡ µÉ ¹Ì·¡ÀÇ ÄÄÇ»ÅÍ¿¡ ÀûÇÕÇÑ ¾ð¾î·Î ¿©°ÜÁö°í ÀÖ´Ù. ¹Ì·¡ÀÇ ¾ð¾î¿¡´Â ÀÌ·¯ÇÑ ±â´ÉµéÀÌ Ã·°¡µÇ¾î ¹ßÀüÇÏ°Ô µÉ °ÍÀÌ´Ù. PROLOGÀº À¯·´°ú ÀϺ»¿¡¼ ¸¹ÀÌ »ç¿ëµÇ°í ÀÖÀ¸¸ç, À̰ÍÀÇ Æ¯¼º Áß ÀϺδ LISP¿¡¼µµ ±¸ÇöµÇ°í ÀÖ´Ù. ´ÙÀ½ÀÇ <Ç¥ 1>¿¡´Â ÇöÀç »ó¿ëȵǾî ÀÖ´Â PROLOG ÄÄÆÄÀÏ·¯¿¡ ´ëÇÑ ¸ñ·ÏÀÌ ¿°ÅµÇ¾î ÀÖ´Ù.
PROLOG ÄÄÆÄÀÏ·¯ |
ȯ°æ(H/W, OS, ±âŸ) |
°³ ¹ß ȸ »ç |
AAIS Full Control |
Macintosh Plus |
Advanced AI Systems |
Arity |
DOS |
Arity Co. |
ALS |
DOS, UNIX |
Applied Logic Systems |
BIM |
SPARC, 8M RAM |
BIM |
Cogent |
DOS |
Amziod |
Delphia |
SPARC |
Delphia |
IF |
DOS, UNIX, Windows |
American Interface Computer |
LPA |
DOS, Windows, Macintosh |
Logic Programming Associates |
n-parallel |
DOS |
Computer Systems Architects |
PDC |
DOS, OS/2, Windows |
Prolog Development Center |
Quintus |
DOS, UNIX |
Quintus Co. |
PROLOG´Â ´ë»ó(Object)°ú ´ë»ó°£ÀÇ
°ü°è(Relationship)¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ¹®Á¦¸¦ ÇØ°áÇϴµ¥ »ç¿ëµÇ´Â ¾ð¾îÀÌ´Ù. ¿¹¸¦
µé¾î, "JohnÀº Ã¥À» °¡Áö°í ÀÖ´Ù."´Â ¹®ÀåÀº JohnÀ̶ó´Â ´ë»ó°ú Ã¥À̶ó´Â
¶Ç ´Ù¸¥ ´ë»ó°£ÀÇ ¼ÒÀ¯°ü°è¸¦ ¼±¾ðÇϰí ÀÖ´Ù(°ü°è¿¡¼´Â ´ë»ó°£ÀÇ ¼ø¼°¡ Áß¿ä).
PROLOG
ÇÁ·Î±×·¡¹ÖÀº ´ÙÀ½°ú °°Àº »çÇ×µé·Î µÇ¾î ÀÖ´Ù.
1) ´ë»ó°ú
±×µé°£ÀÇ °ü°è¿¡ ´ëÇÑ »ç½Ç(Facts) ¼±¾ð
2) ´ë»ó°ú ±×µé°£ÀÇ
°ü°è¿¡ ´ëÇÑ ±ÔÄ¢(Rules)ÀÇ Á¤ÀÇ
3) ´ë»ó°ú ±×µé°£ÀÇ °ü°è¿¡
´ëÇÑ ¹°À½(Questions)
µû¶ó¼ PROLOG ½Ã½ºÅÛÀº »ç½Çµé°ú ±ÔÄ¢µé·Î ÀÌ·ç¾îÁ® ÀÖ°í, À̰͵é·Î ¹°À½¿¡ ´ëÇÑ ´ë´äÀ» ÇÑ´Ù.
"JohnÀº Mary¸¦ ÁÁ¾ÆÇÑ´Ù"´Â »ç½ÇÀº PROLOG¿¡¼´Â ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.
likes(john, mary).
¿©±â¼ john°ú mary´Â ´ë»óÀ̰í,
likes´Â °ü°èÀÌ´Ù.
»ç½Çµé·Î ´ë»ó°£ÀÇ °ü°è¸¦ Á¤ÀÇÇÒ ¶§¿¡´Â
°ýÈ£ ¾È¿¡ ¿°ÅµÉ ´ë»óµéÀÇ ¼ø¼¿¡ ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. À§ÀÇ ¿¹¿¡¼ likes(mary, john)°ú
°°ÀÌ john°ú maryÀÇ ¼ø¼¸¦ ¹Ù²Ù¸é ÀÌ´Â "Mary´Â JohnÀ» ÁÁ¾ÆÇÑ´Ù"·Î ÇØ¼®µÈ´Ù.
PROLOG¿¡¼´Â
´ÙÀ½°ú °°Àº »çÇ׿¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù.
1) ´ë»ó°ú °ü°èÀÇ ¸íĪÀº
¹Ýµå½Ã ¾ËÆÄºª ¼Ò¹®ÀÚ·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.
2) °ü°è¸¦ ¾´ ÈÄ¿¡
´ë»óµéÀÌ ÄÞ¸Ó·Î ±¸ºÐÇØ¼ ¿°ÅµÇ¸ç, ´ë»óµéÀº ¼Ò°ýÈ£ ¾È¿¡ ¿°ÅµÈ´Ù.
3)
»ç½Ç Ç¥ÇöÀÇ ³¡¿¡´Â ¸¶Ä§Ç¥¸¦ Âï´Â´Ù.
¾Æ·¡ÀÇ »ç½ÇÀÇ ¿¹µé°ú ±×°ÍµéÀÇ ÇØ¼®À» º¸±â·Î ÇÏÀÚ.
(¿¹)
|
valuable(gold).
|
±ÝÀº ±ÍÁßÇÏ´Ù. |
À§ÀÇ ¿¹¿¡¼ ¼Ò°ýÈ£ ¾È¿¡ ¿°ÅµÈ
´ë»óµéÀ» Àμö(Arguments)¶ó Çϰí, °ýÈ£ ¾ÕÀÇ °ü°è´Â ¼ú¾î(Predicate)¶ó ÇÑ´Ù. valuabelÀº
ÇÑ °³, likes´Â µÎ °³ÀÇ Àμö¸¦ °¡Áö°í ÀÖ´Â ¼ú¾îÀÌ´Ù.
°ü°è(Relationship)´Â
ÀÓÀÇÀÇ °³¼öÀÇ ÀμöµéÀ» °¡Áú ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î play¶ó´Â ¼ú¾î¸¦ Á¤ÀÇÇÏ·Á¸é, µÎ
»ç¶÷ ÀÌ»óÀÇ ¼±¼ö¿Í ±×µéÀÌ ÇÏ´Â °ÔÀÓÀÇ ¸íĪÀÌ ÇÊ¿äÇÏ´Ù. µû¶ó¼ ¼¼ °³ ÀÌ»óÀÇ Àμö°¡
ÇÊ¿äÇÏ´Ù. ¿¹¸¦ µé¾î,
play(john,
mary, football).
play(jane,
jim, badminton).
µî°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.
¾î¶² »ç½ÇÀÌ ÀÖ´Ù¸é ±×°Í¿¡
´ëÇÑ ¹°À½À» ÇÒ ¼ö ÀÖ´Ù. PROLOG¿¡¼´Â ¹°À½Àº »ç½Ç(Facts)°ú ºñ½ÁÇÏ°Ô Ç¥ÇöÇÏÁö¸¸,
±× ¾Õ¿¡ Ư¼öÇÑ ½Éº¼À» ºÙ¿©¾ß ÇÑ´Ù. ÀÌ ½Éº¼Àº ¹°À½Ç¥¿Í ÇÏÀÌÇÂÀ¸·Î ±¸¼ºµÈ´Ù.
PROLOG·Î
Ç¥ÇöµÈ ´ÙÀ½°ú °°Àº Áú¹®À» »ý°¢ÇÏ¿© º¸ÀÚ.
?- owns(mary, book).
ÀÌ ¹°À½¿¡¼ mary¸¦ "Mary"¶ó
ºÒ¸®¿ì´Â »ç¶÷À¸·Î ÇØ¼®À» Çϰí, bookÀ» ¾î¶² ƯÁ¤ÀÇ Ã¥À» ÀǹÌÇÑ´Ù°í Çϸé, ÀÌ ¹°À½Àº
"Mary°¡ ±× Ã¥À» °¡Áö°í Àִ°¡?"¶ó´Â ¹°ÀÓÀÌ µÈ´Ù.
ÀÌ
¹°À½¿¡ ´ëÇÏ¿© PROLOG´Â ¾î¶»°Ô ´äÇϴ°¡ º¸±â·Î ÇÏÀÚ.
1)
ÀÌ·¯ÇÑ ¹°À½¿¡ ´ëÇÏ¿© PROLOG´Â »ç½ÇµéÀ» ¸ð¾Æ ³õÀº µ¥ÀÌÅͺ£À̽º¿¡¼ ¹°À½ÀÇ »ç½ÇºÎºÐ°ú
ÀÏÄ¡ÇÏ´Â »ç½ÇµéÀ» ã°Ô µÈ´Ù.
2) ¸¸ÀÏ ÀÏÄ¡µÇ´Â »ç½ÇÀ» ã°Ô
µÇ¸é PROLOG´Â yes¶ó ´äÇϸç, ¸ø ã´Â °æ¿ì¿¡´Â no¶ó ´äÇÑ´Ù. no¶ó´Â °ÍÀº ÀÏÄ¡ÇÏ´Â
»ç½ÇÀÌ ¾øÀ½À» ÀǹÌÇÑ´Ù.
´ÙÀ½°ú °°Àº µ¥ÀÌÅͺ£À̽º¸¦ »ý°¢ÇØ º¸ÀÚ.
likes(joe,
fish).
likes(joe, mary).
likes(mary,
book).
likes(john, book).
À̰͵鿡 ´ëÇÏ¿©
?-
likes(joe, money).
no
?-
likes(mary, joe).
no
?-
likes(mary, book).
yes
?-
king(john, france).
no
¿©±â¼ no¶ó´Â °ÍÀº ¹°À½¿¡ ºÎÇÕÇÏ´Â °ÍÀÌ ¾Æ¹« °Íµµ ¾ø´Ù´Â ¶æÀ̸ç, false¸¦ ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ´ÙÀ½°ú °°Àº ±×¸®½º öÇÐÀÚ¿¡ ´ëÇÑ µ¥ÀÌÅͺ£À̽º¸¦ »ý°¢ÇØ º¸ÀÚ.
human(socrates).
human(aristotle).
athenian(socrates).
À̰Ϳ¡ ´ëÇÏ¿© ´ÙÀ½°ú °°Àº ¹°À½À» ÇÑ´Ù¸é,
?-
athenian(socrates).
yes
?-
athenian(aristotle).
no
?-
greek(socrates).
no
¿ª»çÀûÀ¸·Î º¼ ¶§, ½ÇÁ¦·Î ¾Æ¸®½ºÅäÅÚ·¹½º°¡ ¾ÆÅ׳׿¡¼ »ì¾Ò¾úÀ¸³ª À§ÀÇ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ´Â ±× »ç½ÇÀ» Áõ¸íÇÒ ¼ö ¾ø´Ù. ´õ±¸³ª, µ¥ÀÌÅͺ£À̽º¿¡´Â ¼ÒÅ©¶óÅ×½º°¡ ¾ÆÅ×³× »ç¶÷À̶ó´Â »ç½ÇÀÌ ÀÖÀ¸³ª, À̰ÍÀÌ ±×°¡ ±×¸®½ºÀÎÀ̶ó´Â °ÍÀ» Áõ¸íÇØ ÁÖÁö´Â ¸øÇÑ´Ù. µû¶ó¼ no¶ó´Â ´äº¯Àº "Áõ¸íÇÒ ¼ö ¾ø´Ù"´Â ÀÇ¹Ì·Î ÇØ¼®ÇÒ ¼ö ÀÖ´Ù.
"JohnÀº Mary¸¦ ÁÁ¾ÆÇմϱî?"¶ó°í ¹¯´Â ´ë½Å¿¡ "JohnÀº X¸¦ ÁÁ¾ÆÇմϱî?"¶ó°í ¹¯´Â´Ù¸é X°¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö ¾Ë ¼ö°¡ ¾ø´Ù. ÀÌ °æ¿ì X¸¦ º¯¼ö¶ó ºÎ¸¥´Ù. PROLOG¿¡¼ º¯¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ì, º¯¼ö´Â instantiateµÇ°Å³ª not instantiateµÇ°Å³ª ÇÑ´Ù. instantiate°¡ µÇ¾ú´Ù´Â °ÍÀº º¯¼ö°¡ ¶æÇÏ´Â ´ë»óÀÌ Á¸ÀçÇÑ´Ù´Â ÀǹÌÀÌ´Ù. º¯¼ö´Â ¾ËÆÄºª ´ë¹®ÀÚ·Î ½ÃÀÛÇÔÀ¸·Î½á ´ë»óµéÀÇ ¸íΰú ±¸º°µÈ´Ù.
´ÙÀ½°ú °°Àº »ç½Çµé·Î ±¸¼ºµÈ µ¥ÀÌÅͺ£À̽º°¡ ÀÖ´Ù°í ÇÏÀÚ.
likes(john,
flowers).
likes(john, mary).
likes(paul,
mary).
À̰͵鿡 ´ëÇÏ¿© ´ÙÀ½°ú °°Àº ¹°À½ÀÌ ÀÖ´Ù°í ÇÏÀÚ.
?- likes(john, X).
ÀÌ ¹°À½Àº "JohnÀÌ ÁÁ¾ÆÇÏ´Â
°ÍÀÌ ¹«¾ùÀԴϱî?"¶ó´Â ÀǹÌÀ̸ç, ÀÌ¿¡ ´ëÇÏ¿© PROLOG´Â X=flowers¶ó°í ´äÇÑ´Ù.
ÀÌ °úÁ¤À» º¸¸é,
1) PROLOG´Â µ¥ÀÌÅͺ£À̽ºÀÇ Ã³À½ºÎÅÍ Ã£±â
½ÃÀÛÇÏ¿© likes(john, flowers)¸¦ ã°Ô µÈ´Ù. X´Â flower¸¦ ÀǹÌÇÏ°Ô µÈ´Ù.
2)
¶ÇÇÑ µ¥ÀÌÅͺ£À̽º¿¡´Â ÀÏÄ¡ÇÏ´Â »ç½ÇÀÌ ¹ß°ßµÈ °÷À» Ç¥½ÃÇÑ´Ù. ¸¸ÀÏ Return۸¦
Ä¡¸é PROLOG´Â Ž»öÀ» Áß´ÜÇÑ´Ù. À̶§ ";" Ű¿Í Return۸¦ Ä¡¸é ¹Ù·Î
Àü¿¡ Ç¥½ÃÇØ ³õÀº °÷ºÎÅÍ Å½»öÀ» ´Ù½Ã ½ÃÀÛÇÑ´Ù.
3) ´ÙÀ½¿¡
ÀÏÄ¡ÇÏ´Â »ç½ÇÀº likes(john, mary)ÀÌ´Ù. º¯¼ö X´Â mary·Î instantiate¸ç likes(john,
mary)¿¡ Ç¥½Ã¸¦ ³²±â°í X=mary¶ó°í ´äÇÑ´Ù.
´ÙÀ½ °°Àº Áú¹®¿¡ ´ëÇØ PROLOG´Â ´ÙÀ½°ú °°ÀÌ ´äÇÑ´Ù.
?-
likes(X, mary). Áú¹® "Mary¸¦ ÁÁ¾ÆÇÏ´Â
´ë»óÀÌ ¹«¾ùÀΰ¡?"
X=john; ù¹øÂ°
´ä. ";"¸¦ Ä¡¸é
X=paul; µÎ¹øÂ°
´ä. ´Ù½Ã ";"¸¦ Ä¡¸é
no ´õ
ÀÌ»óÀÇ ´äÀÌ ¾øÀ½
´ÙÀ½°ú °°Àº ¹°À½ÀÌ ÀÖ´Ù°í ÇÏÀÚ.
"John°ú Mary´Â ¼·Î ÁÁ¾ÆÇϴ°¡?"
±×¸®°í ´ÙÀ½°ú °°Àº µ¥ÀÌÅͺ£À̽º°¡ ÀÖ´Ù°í ÇÏÀÚ.
likes(mary,
food).
likes(mary, wine).
likes(john,
wine).
likes(john, mary).
À§ÀÇ Áú¹®Àº "JohnÀº Mary¸¦ ÁÁ¾ÆÇմϱî? ±×¸®°í Mary´Â JohnÀ» ÁÁ¾ÆÇմϱî?"¿Í °°Àº ÀǹÌÀ̹ǷΠµÎ °³ÀÇ ¸ñÇ¥(Goal)¸¦ µ¿½Ã¿¡ ¸¸Á·½ÃÄÑ¾ß ÇÑ´Ù. ÀÌ´Â ¸ñÇ¥ »çÀÌ¿¡ ÄÞ¸Ó¸¦ »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.
?- likes(john, mary), likes(mary, john).
µ¥ÀÌÅͺ£À̽º¿¡´Â JohnÀº Mary¸¦
ÁÁ¾ÆÇÑ´Ù´Â »ç½ÇÀÌ ÀÖÀ¸¹Ç·Î ù¹øÂ° ¸ñÇ¥´Â ÂüÀÌ´Ù. ±×·¯³ª Mary°¡ JohnÀ» ÁÁ¾ÆÇÑ´Ù´Â
»ç½ÇÀº ¾ø±â ¶§¹®¿¡ µÎ¹øÂ° ¸ñÇ¥´Â °ÅÁþÀÌ´Ù. ¿ì¸®´Â µÎ »ç¶÷ÀÌ ¼·Î ÁÁ¾ÆÇϴ°¡¸¦
¾Ë°íÀÚ ÇÏ´Â °ÍÀ̹ǷΠPROLOG´Â ÀÌ ¹°À½¿¡ ´ëÇÏ¿© no·Î ´äÇÑ´Ù.
´ÙÀ½°ú
°°Àº ¹°À½ÀÌ ÀÖ´Ù°í ÇÏÀÚ.
"John°ú Mary°¡ ¸ðµÎ ÁÁ¾ÆÇÏ´Â °ÍÀÌ ¹«¾ùÀԴϱî?"
ÀÌ ¹°À½µµ ´ÙÀ½ µÎ °³ÀÇ ¸ñÇ¥µé·Î µé¾î ÀÖ´Ù. ù°, Mary°¡ ÁÁ¾ÆÇÏ´Â °ÍµéÀ» ã´Â´Ù. µÑ°, ±×°Íµé Áß¿¡¼ JohnÀÌ ÁÁ¾ÆÇÏ´Â °ÍÀ» ã´Â´Ù. À̰ÍÀº PROLOG·Î ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.
?- likes(mary, X), likes(john, X).
PROLOG´Â ´ÙÀ½°ú °°Àº ÀýÂ÷·Î ´äÀ» ã¾Æ³½´Ù.
¢Ñ µÇµ¹¸²ÃßÀûÀ̶õ PROLOG°¡ conjunction¿¡ ÀÖ´Â ¸ñÇ¥¸¦ ¸¸Á·½ÃŰ·Á ÇÒ ¶§, ¸¸ÀÏ ¸¸Á·ÀÌ ¾ÈµÇ¸é ¹Ù·Î Àü¿¡ ¸¸Á·ÇÑ ¸ñÇ¥¿Í °ü·ÃµÈ »ç½ÇÀÌ Ç¥½Ã(¸¶Å©)µÇ¾î ÀÖ´Â °÷À¸·Î ´Ù½Ã µÇµ¹¾Æ¿Í ¸ñÇ¥¸¦ ´Ù½Ã ¸¸Á·½Ã۰íÀÚ ÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù.
´ÙÀ½°ú °°Àº »ç½ÇÀÌ ÀÖ´Ù°í ÇÏÀÚ.
"JohnÀº ¸ðµç »ç¶÷À» ÁÁ¾ÆÇÑ´Ù."
À̰ÍÀº µ¥ÀÌÅͺ£À̽º¿¡ ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ´Ù.
likes(john,
alfred).
likes(john, betrand).
likes(john,
charles).
likes(john, david).
...
±×·¯³ª ÀÌ·¸°Ô ÇϳªÇϳª ¿°ÅÇÏ´Â °Íº¸´Ù´Â JohnÀÌ ÁÁ¾ÆÇÏ´Â °ÍÀ» ±ÔÄ¢ÀÇ ÇüÅ·ΠǥÇöÇÑ´Ù¸é ÈξÀ È¿À²ÀûÀÏ °ÍÀÌ´Ù. ±ÔÄ¢Àº ¾î¶² »ç½ÇÀÌ ´Ù¸¥ »ç½ÇµéÀÇ ÁýÇÕ¿¡ ÀÇÁ¸ÀûÀÏ °æ¿ì¿¡ »ç¿ëµÈ´Ù. À̶§ ±ÔÄ¢À» Ç¥ÇöÇϴµ¥ ¸¸ÀÏ(if)À̶ó´Â ´Ü¾î°¡ »ç¿ëµÈ´Ù.
(¿¹)
³ª´Â
¸¸ÀÏ ºñ°¡ ¿À¸é ¿ì»êÀ» »ç¿ëÇÑ´Ù.
±ÔÄ¢Àº ¶ÇÇÑ ¾î¶² °ÍÀ» Á¤ÀÇÇϴµ¥ »ç¿ëµÈ´Ù.
(¿¡)
¸¸ÀÏ
X°¡ µ¿¹°ÀÌ°í ³¯°³°¡ ÀÖ´Ù¸é X´Â »õÀÌ´Ù. (1)
¸¸ÀÏ
X¿Í Y°¡ ¿©¼ºÀ̰í X¿Í YÀÇ ºÎ¸ð°¡ °°´Ù¸é, X¿Í Y´Â ÀڸŰ£ÀÌ´Ù.(2)
±ÔÄ¢Àº ´ë»ó°ú ±×µé°£ÀÇ °ü°è¿¡ ´ëÇÑ ÀϹÝÀûÀΠǥÇöÀÌ´Ù. ±ÔÄ¢Àº head¿Í body·Î ±¸¼ºµÇ¸ç, ":-"·Î ¿¬°áµÈ´Ù. ¾Æ·¡ÀÇ ¿¹´Â ±ÔÄ¢À¸·Î ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÈ´Ù.
"JohnÀº Æ÷µµÁÖ¸¦ ÁÁ¾ÆÇÏ´Â »ç¶÷À» ÁÁ¾ÆÇÑ´Ù."
¶Ç´Â º¯¼ö¸¦ »ç¿ëÇÏ¿©
"¸¸ÀÏ
X°¡ Æ÷µµÁÖ¸¦ ÁÁ¾ÆÇÑ´Ù¸é JohnÀº X¸¦ ÁÁ¾ÆÇÑ´Ù."
likes(john,
X) :- likes(X, wine).
±ÔÄ¢ÀÇ headºÎºÐÀº likes(john,
X)ÀÌ¸ç ±ÔÄ¢ÀÌ Á¤ÀÇÇÏ°í ½ÍÀº »ç½ÇÀ» ±â¼úÇÑ´Ù.
±ÔÄ¢ÀÇ bodyºÎºÐÀº
likes(X, wine)À̸ç head°¡ ÂüÀ̱â À§Çؼ ¸¸Á·½ÃÄѾßÇÒ ¸ñÇ¥µéÀ» ±â¼úÇÑ´Ù.
ˤ˂
¿¹ (2)¸¦ ´ÙÀ½°ú °°ÀÌ Á¤¸®Çϰí À̸¦ PROLOG±ÔÄ¢À¸·Î Ç¥ÇöÇÏ¸é ´ÙÀ½°ú °°´Ù.
X
is female,
Y is female,
X
has mother M and father F, and
Y
has the same mother and father as X does.
=>
sister_of(X,
Y) :- female(X),
female(Y),
parents(X, M, F),
parents(Y, M, F).
CutÀº ¸¸Á·µÈ ¸ñÇ¥(Goal)¸¦
µû¶ó BacktrackingÀ» ÇÒ ¶§, ÀÌ¹Ì ¼±ÅõǾú´ø °ÍÀº ´Ù½Ã °í·ÁÀÇ ´ë»óÀÌ µÇÁö ¸øÇϵµ·Ï
Çϰí ÀÖ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ÇÁ·Î±×·¥ÀÇ ¼öÇà¼Óµµ¸¦ ³ôÀ̰í È¿À²ÀûÀÎ ¸Þ¸ð¸®ÀÇ »ç¿ëÀÌ
°¡´ÉÇØÁø´Ù. CutÀº ¸ñÇ¥°¡ ÀÖ´Â ±ÔÄ¢¿¡ '!'¸¦ »ç¿ëÇÏ¿© ³ªÅ¸³½´Ù. Backtracking½Ã
'!'°¡ ÀÖ´Â ¸ñÇ¥°¡ ÇÑ ¹ø ¸¸Á·µÇ¸é ÀÌ ¸ñÇ¥´Â ´Ù½Ã ¸¸Á·µÇ¾îÁöÁö ¾Ê´Â´Ù.
CutÀÌ
¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¸¦ ¿¹¸¦ ÅëÇÏ¿© º¸±â·Î ÇÏÀÚ. ´ÙÀ½Àº µµ¼°üÀÇ ½Ã¼³µéÀ» ¾î¶² »ç¶÷µé¿¡°Ô
»ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁÙ °ÍÀΰ¡¶ó´Â ¹®Á¦ÀÌ´Ù. ¿¶÷½Ç°ú °°Àº ±âº»ÀûÀÎ ½Ã¼³Àº ¸ðµç
»ç¶÷µé¿¡°Ô °³¹æµÇ¾î¾ß ÇÑ´Ù. ¹Ý¸é¿¡ ´ëÃâÀº ¼±ÅÃÀûÀ¸·Î ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ
¿¹´Â Ã¥À» ºô·Á°£ »ç¶÷ÀÌ ±âÀÏÀÌ Áö³ªµµ µµ¼¹Ý³³À» ÇÏÁö ¾Ê´Â °æ¿ì, ¿©·¯ ºÎ¼Ó½Ã¼³µéÀ»
ÀÌ¿ëÇÏÁö ¸øÇϵµ·Ï ÇÏ´Â ÇÁ·Î±×·¥ÀÇ ÀϺÎÀÌ´Ù.
facility(Pers,
Fac) :- book_overdue(Pers, Book),!,basic_facility(Fac).
facility(Pers,
Fac) :- general_facility(Fac).
basic_facility(reference).
basic_facility(enquiries).
additional_facility(borrowing).
additional_facility(inter_library_loan).
general_facility(X)
:- basic_facility(X).
general_facility(X)
:- additional_facility(X).
book_overdue('C.
Watzer', book10089).
book_overdue('A.
Jones', book29907).
...
...
client('C.
Watzer').
client('W. Netesk').
ÀÌÁ¦ ¾î¶² »ç¶÷µé¿¡°Ô ¾î¶² ½Ã¼³À» ÀÌ¿äÇÒ ¼ö ÀÖµµ·Ï ÇØÁÙ °ÍÀΰ¡ º¸±â·Î ÇÏÀÚ.
?- client(X), facility(X, Y).
¶ó´Â Áú¹®¿¡ ´ëÇÏ¿© PROLOG´Â ù¹øÂ° »ç¶÷ 'A. Jones'¸¦ ã¾Æ³½´Ù. ÀÌ »ç¶÷ÀÌ Ã¥ ¿©·¯ ±ÇÀÇ ¹Ý³³À» ÁöüÇß´Ù°í ÇÏÀÚ. ¾î¶² ½Ã¼³À» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÒ °ÍÀΰ¡¸¦ ¾Ë±â À§ÇØ PROLOG´Â Facility¿¡ ´ëÇÑ Ã¹¹øÂ° ¹®À» ã´Â´Ù. ¿©±â¿¡´Â ±×°¡ ÁöüÇÑ Ã¥ÀÌ Àִ°¡¿¡ ´ëÇÑ ¸ñÇ¥°¡ ÀÖ´Ù. À̾î A. Jones°¡ ÁöüÇÑ Ã¥ÀÌ ÀÖ´Ù´Â »ç½ÇÀ» ã¾Æ³½´Ù. ´ÙÀ½ÀÇ ¸ñÇ¥´Â CutÀÌ´Ù. ÀÌ ¸ñÇ¥°¡ ¸¸Á·µÇ°í Facility¹®ÀÌ ¼±ÅõǾúÀ¸¹Ç·Î ¸ðµç °áÁ¤À» ¿©±â¼ ³»¸°´Ù. ÀÌ °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³» º¸¸é,
CutÀ» ¸¸³ª¸é Áö±Ý±îÁöÀÇ È帧ÀÌ
²÷±â°í, Facility ¸ñÇ¥¿Í Cut ¸ñÇ¥ »çÀÌÀÇ ¸ðµç °ÍÀ» ÇÇÇϵµ·Ï È帧ÀÇ °æ·Î¸¦ ¹Ù²Û´Ù.
Áï, book_overdue('A. Jones', Book)ÀÇ ¶Ç ´Ù¸¥ ÇØ¸¦ ãÁö ¾Ê´Â´Ù. ¶ÇÇÑ µÎ¹øÂ° Facility¹®µµ
°í·ÁÇÏÁö ¾Ê´Â´Ù. ÀÌ ¿¹¿¡¼ "Cut"ÀÇ ¿µÇâÀº ´ÙÀ½°ú °°ÀÌ ±â¼úµÉ ¼ö ÀÖ´Ù
:
¸¸ÀÏ ¹Ý³³ÀÏÀÌ Áö³ Ã¥À» °¡Áø »ç¿ëÀÚ°¡ ÀÖÀ¸¸é, ±× »ç¶÷Àº
µµ¼°í³ªÀÇ ±âº»½Ã¼³¸¸À» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ±× »ç¶÷ÀÌ ÁöüÇÑ ¸ðµç Ã¥À» ãÀ»
Çʿ䰡 ¾øÀ¸¸ç, ½Ã¼³¿¡ °üÇÑ ´Ù¸¥ ±ÔÄ¢µéµµ °í·ÁÇÏÁö ¾Ê´Â´Ù.
ˤ˂
¿¹¿¡¼ Cut Àº ±×°ÍÀÌ ÀÖ´Â °÷¿¡¼ºÎÅÍ ¼Ò±ÞÇÑ Facility ¸ñÇ¥ ³»¿¡¼ ¸ðµç °á·ÐÀ»
³»µµ·Ï ÇÑ´Ù. À̸¦ Cut GoalÀÇ Parent GoalÀ̶ó ÇÑ´Ù. À̸¦ ¸¸Á·½ÃŰ´Â ¶Ç ´Ù¸¥ ¸ðµç
ÇØµéÀº ¹«½ÃµÇ¸ç Parent Goal°ú Cut Goal »çÀÌÀÇ ¾î¶² Goalµµ ¸¸Á·½ÃŰ·Á´Â ½Ãµµ¸¦
ÇÏÁö ¾Ê´Â´Ù.