THE RETE MATCHING ALGORITHM

 

ÀΰøÁö´É °³·Ð : Dan W. Patterson Àú¼­, ±è¿µ·Ä.±è¿ì¼º.±èÁ¤±Ô.¹Ú¿ë¹ý.Á¤¸ñµ¿ ¿Å±è, Áö¼ºÃâÆÇ»ç, 1995  (¿ø¼­ : Introduction to Artificial Intelligence and Expert Systems, 1990), Page 258~262

 

»ý¼º ½Ã½ºÅÛ (production system) µéÀº 15Àå¿¡¼­ ±â¼úµÈ´Ù. ±× ½Ã½ºÅÛµéÀº Àü¹®°¡ ½Ã½ºÅÛÀÇ ÀϹÝÀûÀÎ ±¸Á¶ÀÌ´Ù. ÀüÇüÀûÀÎ ½Ã½ºÅÛÀº »ý¼º ȤÀº ±ÔÄ¢ÀÇ ÇüÅ·Π¿µ¿ª (domain) Àü¹®°¡ÀÇ Áö½ÄÀ» ³ªÅ¸³»´Â ±¸Á¶¸¦ Æ÷ÇÔÇÑ Áö½Ä º£À̽º¿Í ÇöÀç ¹®Á¦ÀÇ ÆĶó¸ÞÅ͸¦ °®´Â ÀÛ¾÷ ¸Þ¸ð¸® (working memory) ¿Í ¾î¶² ±ÔÄ¢ÀÌ ÇöÀç ¹®Á¦¿¡ ÀûÀýÇÑ°¡¸¦ °áÁ¤ÇÏ´Â Ã߷п£Áø (inference engine) À» Æ÷ÇÔÇÑ´Ù.

 

±×¸² 1 »ý¼º½Ã½ºÅÛÀÇ ¼ººÐ°ú ±âº» »çÀÌŬ

»ý¼º ½Ã½ºÅÛÀÇ ±âº»ÀûÀÎ ÀÎÅÍÆäÀ̽º »çÀÌŬÀº ±×¸² 1¿¡¼­ Ç¥½ÃÇÑ ºñ±³(match), ¼±ÅÃ(select) ±×¸®°í ¼öÇà(excute)ÀÌ´Ù. ÀÌ·¯ÇÑ ¿¬»êÀº ´ÙÀ½°ú °°ÀÌ ¼öÇàµÈ´Ù.

ÀÌ»óÀÇ ¼øȯÀº ´õ ÷°¡µÉ ±ÔÄ¢ÀÌ ¾ø°Å³ª Á¾°á Á¶°Ç¿¡ µµ´ÞµÉ ¶§±îÁö µÇÇ®À̵ȴÙ. ÀüÇüÀûÀÎ Áö½Ä º£À̽º´Â ¼ö¹é ¶Ç´Â ¼öõ°¡Áö ÀÌ»óÀÇ ±ÔÄ¢À» Æ÷ÇÔÇϴµ¥ °¢ ±ÔÄ¢Àº ¸î°¡Áö(¾Æ¸¶µµ 10¿©°¡Áö ÀÌ»óÀÇ) ±ÔÄ¢µéÀ» Æ÷ÇÔÇÑ´Ù. ÀÛ¾÷ ¸Þ¸ð¸® ¿ª½Ã ÀüÇüÀûÀ¸·Î ¼ö¹é °¡Áö ÀÌ»óÀÇ Á¶Ç×µéÀ» Æ÷ÇÔÇÑ´Ù. °á°úÀûÀ¸·Î ÀÛ¾÷¸Þ¸ð¸® (working memory) ¿¡ ´ëÇÑ ¸ðµç ±ÔÄ¢°ú LHS Á¶°ÇµéÀ» ¼Ò¸ðÀûÀ¸·Î ¸ÅĪÇÏ´Â µ¥ ¼ö¸¸¹øÀÇ ºñ±³°¡ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ ÁÖÀå¿¡ ´ëÇÑ ¼³¸íÀº ¼­¹®¿¡ Àß ³ªÅ¸³ª Àִµ¥ ÀÌ·¯ÇÑ ½Ã½ºÅÛÀº °è»ê ½Ã°£ÀÇ 90% Á¤µµ°¡ ¸ÅĪ¿¬»ê°ú °ü·ÃµÇ¾îÁú ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î °¢ »çÀÌŬ¸¶´Ù ¸ÅĪ¿¬»êÀÌ ¼ö õ¹ø ¼öÇàµÇ¾îÁö´Â °ÍÀ» Á¦°ÅÇÒ ¼ö ÀÖ´Ù. ÀÌ¿¡ È¿°úÀûÀÎ ¸ÅÄ¡ ¾Ë°í¸®ÁòÀ» °³¹ßÇÏ°Ô µÇ¾ú´Âµ¥ À̸¦ RETE¶ó°í ºÎ¸¥´Ù. (Forgy, 1982)

RETE´Â Ãʱ⿡ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ OPS °è¿­ÀÇ ÀϺκÐÀ¸·Î °³¹ßµÇ¾ú´Ù.(Brownston, et al 1985) ÀÌ·¯ÇÑ ¾Ë°í¸®Áò¿¡´Â ¿¬¼ÓÀûÀÎ »çÀÌŬ¿¡¼­ ºñ±³°¡ ¹Ýº¹µÇ´Â °ÍÀ» ÇÇÇÒ ¹æ¹ýÀ» Æ÷ÇÔÇÑ ¸î °¡Áö »õ·Î¿î Ư¼ºÀ» ³ªÅ¸³½´Ù.

RETEÀÇ ÁÖ¿ä ½Ã°£ Àý¾à Ư¼ºÀº ´ÙÀ½°ú °°´Ù.

´ëºÎºÐÀÇ Àü¹®°¡ ½Ã½ºÅÛ¿¡¼­ ÀÛ¾÷ ¸Þ¸ð¸®(working memory)ÀÇ ³»¿ëÀº »çÀÌŬ°ú »çÀÌŬ »çÀÌ¿¡¼­´Â °ÅÀÇ º¯È­°¡ ¾ø´Ù. µ¥ÀÌŸ¿¡´Â Àӽà Áߺ¹(temporal redundancy)À̶ó°í ¾Ë·ÁÁø Áö¼Ó¼ºÀÌ Á¸ÀçÇÑ´Ù. ÀÌ°ÍÀº ¸Å »çÀÌŬ¸¶´Ù ¼Ò¸ðÀû ¸ÅĪÀ» ºÒ ÇÊ¿äÇÏ°Ô ¸¸µç´Ù. ´ë½Å, ¸ÅĪ Á¤º¸¸¦ ÀúÀåÇÔÀ¸·Î½á ÀÛ¾÷ ¸Þ¸ð¸®¿¡ÀÇ º¯È­¸¦ »çÀÌŬ¸¶´Ù ºñ±³ÇÏ´Â °Í¸¸ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù.

°Ô´Ù°¡ RETE ¿¡¼­´Â ÀÛ¾÷ ¸Þ¸ð¸®ÀÇ ´ëÇÑ º¯È­°¡ Á÷Á¢ Ãæµ¹ ÁýÇÕÀ¸·Î Àü¼Ûº¯È¯(mapping)µÇ´Â °ÍÀ» ¸·´Â´Ù. (±×¸² 2) ±× ÈÄ Ãæµ¹ ÁýÇÕ(conflict set)À¸·ÎºÎÅÍ ÇÑ ±ÔÄ¢À» ¼±Åà ½ÇÇàÇÒ ¶§ ±×°ÍÀº ÁýÇÕ¿¡¼­ Á¦°ÅµÇ°í ³²¾ÆÀÖ´Â ¿£Æ®¸®µéÀº ´ÙÀ½ »çÀÌŬÀ» À§Çؼ­ ÀúÀåµÈ´Ù. Áï, ÀÛ¾÷ ¸Þ¸ð¸®¿¡ ´ëÇÑ ±ÔÄ¢µéÀÌ ¹Ýº¹ÀûÀ¸·Î ºñ±³µÇ´Â °ÍÀ» ÇÇÇÏ°Ô µÈ´Ù. ´õ ³ª¾Æ°¡ ±×µéÀÇ LHS¿¡ ³ªÅ¸³ª´Â Á¶°Ç Á¶Ç×(term)À» °¡Áö´Â ±ÔÄ¢À» »öÀÎÈ­ÇÏ¿©(indexing) ÀÛ¾÷ ¸Þ¸ð¸® ±³Ã¼¿¡ ¸ÅÄ¡µÇ´Â ´ÜÁö ±×·¯ÇÑ ±ÔÄ¢µé ¸¸ Á¶»çÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ°ÍÀº °¢ »çÀÌŬ¿¡ ¿ä±¸µÇ´Â ºñ±³ÀÇ È½¼ö¸¦ »ó´çÈ÷ °¨¼Ò ½ÃŲ´Ù.

±×¸² 2 ÀÛ¾÷ ¸Þ¸ð¸®¿¡ ´ëÇÑ º¯È­°¡ Ãæµ¹ÁýÇÕÀ¸·Î »ç»ó(mapping)

Áö½Äº£À̽ºÀÇ ´ëºÎºÐÀÇ ±ÔÄ¢µéÀº ±×°ÍÀÇ LHS ¿¡¼­ ¹ß»ýÇÏ´Â °Í°ú °°Àº Á¶°ÇµéÀ» °¡Áú °ÍÀÌ´Ù. ÀÌ´Â ºÒ ÇÊ¿äÇÑ ¸ÅĪÀÌ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀÌ µÇ°í ÀÖ´Ù. ±×·¯ÇÑ ±ÔÄ¢µéÀ» ¹­À½À¸·Î¼­(grouping), ¶ÇÇÑ µ¿ÀÏ Á¶°ÇµéÀ» °øÅëÇ×À¸·Î ¿¬°áÇÏ¿© ÇÇÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ´Â ¸ðµç Àû¿ë °¡´ÉÇÑ ±ÔÄ¢µé¿¡ ´ëÇØ ÇѹøÀÇ Å×½ºÆ®¸¦ ½ÇÇàÇÔÀ¸·Î½á °¡´ÉÇÏ°Ô µÉ °ÍÀÌ´Ù. ¿¬°áÈ­(linking) ÀýÂ÷´Â ´ÙÀ½°ú °°´Ù.

±ÔÄ¢ÀÌ Ã³À½À¸·Î Áö½Ä º£À̽º¿¡ ÀûÀçµÉ ¶§ ÀÌ°ÍÀº ±ÔÄ¢ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ °Ë»çµÇ°í 󸮵ȴÙ. ÄÄÆÄÀÏ·¯´Â LHSÁ¶°ÇÀ» üũÇÏ°í ±ÔÄ¢ À̸§°ú LHS Á¶°Ç Á¶Ç×»çÀÌÀÇ °áÇÕÀ» Çü¼ºÇÑ´Ù. ¶ÇÇÑ ÄÄÆÄÀÏ·¯´Â LHS¿¡¼­ °øÅë Á¶°ÇÀ» °¡Áö´Â ¸ðµç ±ÔÄ¢°ú ¿¬°áµÇ´Â ³×Æ®¿öÅ© ±¸Á¶¸¦ ±¸ÃàÇÑ´Ù. ÀÌ ³×Æ®¿öÅ©´Â »õ·Î¿î ÀÛ¾÷ ¸Þ¸ð¸® Á¶Ç׿¡ ÀÏÄ¡µÇ´Â ¹ÙÀεù(binding)¿¡ ¸¸Á·µÇ´Â ±ÔÄ¢ Á¶°ÇÀ» ã¾Æ³»¼­ ½ÇÇà½Ã°£ µ¿¾È °Ë»çÇÏ°í À§Ä¡È­(locate)½ÃÅ°´Â µ¥ »ç¿ëµÈ´Ù. ±×¸² 3Àº °øÅë LHS Á¶Ç×À» °øÀ¯ÇÏ´Â ±ÔÄ¢µéÀÌ ¾î¶»°Ô ±×·ìÈ­µÇ°í (grouping) °øÅëÁ¶°Ç Á¶Ç×À¸·Î »öÀÎÈ­(indexing)µÉ ¼ö ÀÖ´Â Áö¸¦ ¼³¸íÇØ ÁÖ°í ÀÖ´Ù.

LISP¸¦ »ç¿ëÇÏ¿© °áÇÕ½ÃÅ°°í »öÀÎ(indexing)È­¸¦ Çü¼ºÇÏ´Â ÇÑ ¹æ¹ýÀº Ư¼º LISP¸¦ »ç¿ëÇÏ¿© °áÇÕ½ÃÅ°°í »öÀÎ(indexing)È­¸¦ Çü¼ºÇÏ´Â ÇÑ ¹æ¹ýÀº Ư¼º¸®½ºÆ® (property list)·Î °¡´ÉÇÏ´Ù. ¿¹¸¦ µé¸é,

(putprop 'R6 'father 'cond-1)

(putprop 'R6 'father 'cond-2)

(putprop 'R12 'father 'cond-1)

  

±×¸² 3 ÀüÇüÀûÀÎ ±ÔÄ¢°ú ÄÄÆÄÀÏµÈ ³×Æ®¿öÅ© ÀϺÎ

 ±ÔÄ¢µé°ú LHS Á¶°Ç »çÀÌÀÇ ¿¬°á(link)À» ¸¸µé¾î ÁÖ°í, ´ÙÀ½°ú °°Àº ¹®Àº

(putprop 'father (cons R6 (get 'father 'cond-1) 'cond-1))

µ¿ÀÏÇÑ LHS À§Ä¡¿¡ Á¶Ç×(term)À» Æ÷ÇÔÇÏ´Â ¸ðµç ±ÔÄ¢µé¿¡ ±¸Ã¼È­µÈ LHS Á¶Ç×À» ¿¬°áÇØ ÁØ´Ù. Àý(clause)ÀÇ Ã·°¡¿Í °°ÀÌ ÀÛ¾÷ ¸Þ¸ð¸®ÀÇ ±³Ã¼°¡ ÀϾ ¶§(father bill joe) LHS Á¶°ÇÀ¸·Î¼­  father¸¦ Æ÷ÇÔÇÏ´Â ¸ðµç ±ÔÄ¢Àº ½±°Ô È®Àεǰí(identify) °Ë»öµÉ(retrieved) ¼ö ÀÖ´Ù.

RETE¿¡¼­ÀÇ °Ë»ö(retrieved)°ú ±ÔÄ¢ Á¶°ÇÀÇ ¿¬¼ÓÀûÀÎ °Ë»ç´Â ÅäÅ«(token)À» ¸¸µå´Â °ÍÀ¸·Î ½ÃÀ۵Ǵµ¥ ÀÌ·¯ÇÑ ÅäÅ«(token)Àº ±ÔÄ¢ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ±¸ÃàµÈ ³×Æ®¿öÅ©¸¦ Åë°úÇÏ°Ô µÈ´Ù.

³×Æ®¿öÅ©´Â ÀûÀýÇÑ °Ë»ç °æ·Î¸¦ Á¦°øÇϴµ¥ ÀÌ °Ë»ç´Â µ¿ÀÏÇÑ ¹ÙÀεù(binding)À» À̲ø¾î ³»°í LHS ±ÔÄ¢À» ¿ÏÀüÈ÷ ¸¸Á·½ÃŲ´Ù. ¸ÅÄ¡ ºñ±³±â(matcher)´Â »õ·Î¿î ¸ÅÄ¡³ª, ´õ ÀÌ»ó ÀÛ¾÷ ¸Þ¸ð¸® ¿ä¼Ò¿¡ ¸ÅÄ¡µÇÁö ¾Ê´Â ±ÔÄ¢À» ã¾Æ³»´Â ³×Æ®¿öÅ©¸¦ µ¹¾Æ´Ù´Ñ´Ù. ¸ÅÄ¡ ºñ±³±â(matcher)·ÎºÎÅÍ Ãâ·ÂµÇ´Â °ÍÀº ½Ö(pair)À¸·Î µÈ ¿ä¼Ò·Î ±¸¼ºµÈ ÀڷᱸÁ¶ÀÌ´Ù. Áï, ±ÔÄ¢ À̸§°ú (R6  ( father bob sam )  (father mike bob))°ú °°Àº LHS¿¡ ¸ÅÄ¡µÈ ÀÛ¾÷ ¸Þ¸ð¸® ¿ä¼ÒÀÇ ¸®½ºÆ®(list)ÀÌ´Ù.

µ¶ÀÚ´Â ´ÙÀ½ Àå¿¡ Á¦½ÃµÉ »öÀÎÈ­(indexing) ¹æ¹ý°ú À§¿¡¼­ ±â¼úÇÑ »öÀÎÈ­(indexing) ¹æ¹ýÀÌ À¯»çÇÏ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±× ¿Ü ´Ù¸¥ ½Ã°£ Àý¾à ±â¼úµµ RETE¿¡¼­ Àû¿ëµÈ´Ù. ±×·¯³ª À§¿¡¼­ ¾²ÀÎ ¹æ¹ýÀÌ °¡Àå Áß¿äÇÑ ¹æ¹ýÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦·Î ÀÌ°ÍÀº ¼ö¹é ¶Ç´Â ¼ö¸¸ °¡Áö¿¡ À̸£´Â Á¶°ÇÀ» ¿ÏÀüÈ÷ ¸ÅÄ¡ÇÏ´Â °ÍÀ» ÁÙÀÌ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.