मैं अभ्यास के लिए एक प्रोग्रामिंग चुनौती पर काम कर रहा हूं और समाधान को लागू करने के लिए उपयोग करने के लिए एक अच्छी डेटा संरचना/एल्गोरिदम खोजने में परेशानी हो रही है।दो शब्दों के बीच आसन्न शब्दों की एक सूची ढूँढना
पृष्ठभूमि:
कॉल दो शब्दों "आसन्न" अगर आप बताया हटाने, या एक भी पत्र बदलकर दूसरे में एक शब्द बदल सकते हैं।
एक "शब्द सूची" अद्वितीय शब्दों की एक आदेशित सूची है जहां लगातार शब्द निकट हैं।
समस्या:
एक प्रोग्राम है जो इनपुट के रूप में दो शब्दों लेता है और शब्दकोश के माध्यम से चलता है और उन दोनों के बीच शब्दों की एक सूची बनाता है लिखें।
उदाहरण:
hate → love: hate, have, hove, love
dogs → wolves: dogs, does, doles, soles, solves, wolves
man → woman: man, ran, roan, roman, woman
flour → flower: flour, lour, dour, doer, dower, lower, flower
मैं काफी यकीन है कि कैसे इस समस्या दृष्टिकोण नहीं हूँ, मेरा पहला प्रयास तो पहला शब्द के क्रमपरिवर्तन बनाने में पत्र बदलने का प्रयास करने शामिल किया गया। मेरा दूसरा विचार शायद suffix tree
कम से कम समस्या को तोड़ने के लिए कोई विचार या विचारों की सराहना की जाएगी। ध्यान रखें कि यह होमवर्क नहीं है, लेकिन एक प्रोग्रामिंग चुनौती मैं अपने आप पर काम कर रहा हूं।
कूल समस्या। यह केवल परिधीय रूप से संबंधित है, लेकिन कुछ प्रेरणा के लिए लेवेनशेटिन दूरी (http://en.wikipedia.org/wiki/Levenshtein_distance) देखें। आपके मामले में, आप ऐसे ग्राफ के माध्यम से पथ ढूंढ रहे हैं जिनके नोड्स शब्द हैं और किनारों को लेवेनशेटिन दूरी 1 के साथ शब्दों को जोड़ते हैं। शायद उस डेटा संरचना को नहीं जिसे आप ढूंढ रहे हैं, लेकिन यह अंतर्दृष्टि प्रदान कर सकता है। –
@ChrisSchmich मैंने वास्तव में पहले ही इसमें देखा था, मैंने परियोजना में बाद में उपयोग करने के लिए दूरी समारोह का कार्यान्वयन किया था। एकमात्र समस्या यह है कि यह एल्गोरिदम बहुत कुशल नहीं है। –
एक ही नोट पर, यदि आप एक ठोस उदाहरण देखना चाहते हैं तो यह एक उदाहरण कार्यान्वयन है: https://github.com/dbalatero/levenshtein-ffi – fmendez