पेड़ों के संग्रह की खोज के लिए कुशल एल्गोरिदम


9

मेरे पास पेड़ों का एक बड़ा डेटासेट है और मैं इसे एक ट्रीलेट (जुड़ा हुआ उपसमूह ) निर्दिष्ट करके खोज करना चाहता हूं । क्वेरी को डेटासेट में ट्रीलेट के सभी सुधारों को वापस करना चाहिए।

क्या ऐसा करने के लिए कुशल एल्गोरिदम हैं?

मैं प्रत्यय सरणियों की तरह कुछ सोच रहा था, हालांकि, भोलेपन से पेड़ों को तार के रूप में एन्कोडिंग (उनके नोड्स के एक निश्चित ट्रावल ऑर्डर करके) काम नहीं करेगा, क्योंकि खोज ट्रीलेट किसी भी मनमाने आकार का हो सकता है।

अपडेट करें:

कुछ विशिष्ट उदाहरणों के बारे में जो मुझे उम्मीद है:

डेटासेट में कम से कम दसियों हजार पेड़ होंगे, जिनमें से प्रत्येक में लगभग बीस से तीस नोड्स होंगे। पेड़ बाइनरी नहीं होंगे, लेकिन प्रति नोड्स ठेठ बच्चे छोटे होंगे (आमतौर पर चार या पांच से अधिक नहीं, हालांकि कुछ पतित मामलों में यह लगभग तीस तक पहुंच सकता है)। लेबल की संख्या हजारों की संख्या में होगी।

मुझे इसकी आवश्यकता है कि एनएलपी अनुप्रयोगों के लिए: प्रत्येक पेड़ एक वाक्य की निर्भरता प्रतिमान होगा, प्रत्येक नोड एक शब्द के शब्द का प्रतिनिधित्व करता है और प्रत्येक एक शब्दकोष (कुछ सजावट के साथ) एक शब्द लेबल।


1
इस खंड में समरूपता समरूपतावाद के लिए समानांतर एल्गोरिदम की चर्चा है।
एंथोनी लबेर्रे

1
क्षमा करें, मुझे लगा कि आप एक जुड़े हुए सबग्राफ की तलाश कर रहे हैं, जो आवश्यक रूप से एक पेड़ होगा, पेड़ों के एक सेट में दिखाई देगा। क्या आप स्पष्ट कर सकते हैं कि आपकी समस्या इस विवरण से किन पहलुओं में भिन्न है?
एंथोनी लैबार

1
क्या आप पेड़ों के बारे में पहले से कुछ जानते हैं? बाइनरी? आप कितने अलग-अलग नोड लेबल की उम्मीद करते हैं? अंतरिक्ष दक्षता पर कोई सीमाएं? मैं पूछता हूं क्योंकि यदि आप एक ही डेटासेट पर एक टन क्वेरी चला रहे हैं, तो एक समाधान में कुछ प्रकार के आक्रामक अनुक्रमण शामिल हो सकते हैं।
एली

1
क्या आप XML टहनी मिलान से परिचित हैं? आपकी समस्या एक विशेष मामला है, इसलिए आप किसी भी मौजूदा एल्गोरिदम और सॉफ़्टवेयर का उपयोग कर सकते हैं।
मारेक चोबक

2
मुझे लगता है कि ग्राफ़ संरचना को अनदेखा करना सबसे अच्छा हो सकता है। एक विशिष्ट क्वेरी को देखते हुए, यदि आप संरचना को त्यागते हैं, तो आप इन सभी शब्दों के कितने पेड़ होने का अनुमान लगाते हैं? क्या आपके प्रश्नों में कोई वाइल्डकार्ड है या वे सटीक हैं? यदि किसी प्रश्न में शब्द "बिल्ली ने टोपी खाया है" जैसे हैं, तो वास्तव में कितने ग्राफ़ में "बिल्ली" और "टोपी" दोनों शब्द होंगे? यदि आप प्रत्येक शब्द को पेड़ों के एक सेट पर अनुक्रमित करते हैं, तो सभी सेटों को काट दें, संभवतः आप परिणाम को बहुत अधिक लागत के बिना भोलेपन से खोज सकते हैं।
एली

जवाबों:


3

हालाँकि, विशेष रूप से (जड़ वाले) पेड़ों को निशाना नहीं बनाया गया है, लेकिन मुझे लगता है कि आपकी सेटिंग में G-trie डेटा संरचना काफी अच्छा प्रदर्शन कर सकती है। यह रेखांकन के लिए त्रि (तारों के सेट की खोज के लिए) का एक अनुकूलन है।


1

कुछ समय पहले मैंने लिखा था कि रोनाल्ड रीड का ट्री कैनोनेज़ेशन एल्गोरिथ्म है और इसे विकिपीडिया पर डाल दिया है

मैं प्रत्येक आंतरिक नोड हस्ताक्षर के लिए एक हैशटेबल बनाऊंगा, और उन्हें पॉइंटर्स की एक सूची के साथ लेबल करूँगा जो वे आए थे। हालांकि, यह केवल सच्चे पत्तों वाले ट्रीलेट्स के लिए काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.