2008-08-28 15 views
6

अतीत में मुझे एक ऐसा प्रोग्राम विकसित करना पड़ा जो नियम मूल्यांकनकर्ता के रूप में कार्य करता था। आपके पास पूर्ववर्ती और कुछ पवित्र (क्रियाएं) थीं, यदि पूर्ववर्ती कार्यवाही करने के लिए पूर्ववर्ती कार्यवाही की गई थी।पैटर्न पहचान एल्गोरिदम

उस समय मैंने पूर्ववर्ती पैटर्न मिलान के लिए RETE algorithm (आरईटीई के केवल तीन संस्करण सार्वजनिक हैं) के एक संशोधित संस्करण का उपयोग किया था। हम यहां एक बड़ी प्रणाली के बारे में बात कर रहे हैं जिसमें प्रति नियम लाखों ऑपरेशन हैं और कुछ ऑपरेटर कई नियमों में "दोहराए गए" हैं।

यह संभव है कि मुझे इसे फिर से अन्य भाषा में लागू करना होगा और भले ही मुझे आरईटीई में अनुभव हो, क्या किसी को अन्य पैटर्न मिलान करने वाले एल्गोरिदम के बारे में पता है? कोई सुझाव या मुझे रीट का उपयोग करना चाहिए?

उत्तर

4

ट्रेट एल्गोरिदम आरईटीई के समान है, लेकिन आंशिक मिलान रिकॉर्ड नहीं करता है। नतीजतन, यह कुछ स्थितियों में आरईटीई की तुलना में कम स्मृति का उपयोग कर सकता है। साथ ही, यदि आप ज्ञात तथ्यों की एक बड़ी संख्या को संशोधित करते हैं, तो TREAT बहुत तेज हो सकता है क्योंकि आपको पीछे हटने पर समय बिताना नहीं है।

RETE* भी है जो कि आप कितनी मेमोरी का उपयोग करना चाहते हैं, इस पर निर्भर करता है कि कुछ शामिल नोड स्थिति को सहेजकर रेट और ट्रेट के बीच संतुलन है। तो आप अभी भी कुछ दावा समय बचाते हैं, लेकिन आप अपने सिस्टम को कैसे ट्यून करते हैं इसके आधार पर स्मृति और पीछे हटने की समय बचत भी प्राप्त करते हैं।

आप LEAPS को भी देखना चाहते हैं, जो आलसी मूल्यांकन योजना का उपयोग करता है और दोनों RETE और TREAT के तत्वों को शामिल करता है।

मुझे केवल आरईटीई के साथ व्यक्तिगत अनुभव है, लेकिन ऐसा लगता है कि रीट * या LEAPS बेहतर, अधिक लचीला विकल्प हैं।

+1

LEAPS लिंक: ftp://ftp.cs.utexas.edu/pub/predator/tr-94-28.pdf – biziclop

संबंधित मुद्दे