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)ÀÌ´Ù. ÀÌ·¯ÇÑ ¿¬»êÀº ´ÙÀ½°ú °°ÀÌ ¼öÇàµÈ´Ù.
ºñ±³ (Match) »çÀÌŬÀÇ
¸ÅÄ¡½Ã°£ µ¿¾È Áö½Äº£À̽º³» ±ÔÄ¢ÀÇ LHS(left hand side) Á¶°ÇÀº ÀÛ¾÷ ¸Þ¸ð¸®(working
memory)¸¦ °è¼Ó °áÇÕ½ÃŰ´Â °ÍÀ» ¸¸Á·ÇÏ´Â LHS Á¶°ÇÀ» °®´Â ±ÔÄ¢ÀÌ ¹«¾ùÀÎÁö¸¦ °áÁ¤Çϱâ
À§ÇØ ÀÛ¾÷ ¸Þ¸ð¸®ÀÇ ³»¿ë°ú ºñ±³µÈ´Ù. ¸ÅÄ¡µÈ °ÍÀ¸·Î ÆÇ¸íµÈ ±ÔÄ¢µéÀº Ãæµ¹ÁýÇÕ(conflict
set) ¿¡ ³Ö´Â´Ù.
¼±Åà (Select) Ãæµ¹
ÁýÇÕ (conflict set) ¿¡¼ ±ÔÄ¢ÁßÀÇ Çϳª°¡ ¼±ÅÃµÇ¾î ½ÇÇàµÈ´Ù. ÀÌ·¯ÇÑ ¼±Åà Á¤Ã¥Àº
ÃֽŠ»ç¿ë¹ý, ƯÁ¤ÇÑ ±ÔÄ¢, ±× ¿ÜÀÇ ±âÁØ¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.
¼öÇà (Execute) Ãæµ¹
ÁýÇÕ¿¡¼ ¼±ÅÃµÈ ±ÔÄ¢Àº ±× ±â´É ¶Ç´Â ±ÔÄ¢ÀÇ °á¸» ºÎºÐ Áï, ±ÔÄ¢ÀÇ RHS (Right Hand
Side) ¸¦ ¼öÇàÇÔÀ¸·Î½á ÀÛ¾÷ ¸Þ¸ð¸® (working memory) ¿¡¼ÀÇ Á¶Ç×À» Á¦°ÅÇϰųª ±³Ã¼ÇÏ´Â
°Í ¶Ç´Â ´Ü¼ø Á¤Áö ¿øÀÎ ¹× ÀÔÃâ·Â ¿¬»ê, µ¡¼À°ú °°Àº °ÍµéÀ» Æ÷ÇÔÇÑ´Ù.
ÀÌ»óÀÇ ¼øÈ¯Àº ´õ ÷°¡µÉ ±ÔÄ¢ÀÌ ¾ø°Å³ª Á¾°á Á¶°Ç¿¡ µµ´ÞµÉ ¶§±îÁö µÇÇ®À̵ȴÙ. ÀüÇüÀûÀÎ Áö½Ä º£À̽º´Â ¼ö¹é ¶Ç´Â ¼öõ°¡Áö ÀÌ»óÀÇ ±ÔÄ¢À» Æ÷ÇÔÇϴµ¥ °¢ ±ÔÄ¢Àº ¸î°¡Áö(¾Æ¸¶µµ 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¿¡¼ Àû¿ëµÈ´Ù. ±×·¯³ª À§¿¡¼ ¾²ÀÎ ¹æ¹ýÀÌ °¡Àå Áß¿äÇÑ ¹æ¹ýÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦·Î À̰ÍÀº ¼ö¹é ¶Ç´Â ¼ö¸¸ °¡Áö¿¡ À̸£´Â Á¶°ÇÀ» ¿ÏÀüÈ÷ ¸ÅÄ¡ÇÏ´Â °ÍÀ» ÁÙÀÌ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.