2009-12-30 22 views
7

मुझे अपने आप को अलग-अलग डेटा संरचनाओं को पढ़ाने में दिलचस्पी है, जो मुझे वर्तमान में बहुत कम पता है। मेरी योजना कुछ प्रमुख संरचनाओं को लागू करना है, इसलिए मैं समझता हूं कि वे कैसे काम करते हैं। मैं शुरू करने के लिए महत्वपूर्ण डेटा संरचनाओं पर सुझावों की तलाश में हूं।खोज में महत्वपूर्ण डेटा संरचना

मुझे मुख्य रूप से डेटा संरचनाओं में दिलचस्पी है जो खोज अनुप्रयोगों (जैसे Google/लुसीन) और देरी गणना और प्रीकंप्यूशन के बीच सामान्य व्यापार-बंद के लिए प्रासंगिक हैं। मुझे वितरित डेटा संरचनाओं में भी रूचि है - डेटा संरचनाएं जो सैकड़ों/हजारों सर्वरों में फैल सकती हैं - और संभाव्य डेटा संरचनाएं - डेटा संरचनाएं जो अनुमानित उत्तर खोजने में मदद करती हैं लेकिन हमेशा सही होने की आवश्यकता नहीं होती है।

विकिपीडिया में list of data structures है। मैं वर्तमान पर विचार कर रहा हूँ:

  • हैश तालिका
  • बी + पेड़
  • आर-ट्री
  • केडी-ट्री
  • मूलांक-ट्री
  • ब्लूम को फ़िल्टर

वहाँ बेहतर विकल्प?

अंत में, क्या इन संरचनाओं को एफ # जैसी भाषा में कार्यान्वित करने में कोई बड़ी (बड़ी) समस्या है?

+0

एक आदेशित शब्दकोश को भी कार्यान्वित करें। मैं व्यक्तिगत रूप से जावा या पायथन या नेट या सी ++ का उपयोग करता हूं ... –

+1

@lpthnc: .NET एक भाषा नहीं है। – missingfaktor

उत्तर

5

बहुत महत्वाकांक्षी। मैंने सिर्फ आपके दायरे के लिए अपना प्रश्न उठाया।

एमआईटी में on-line algorithms and data structures course है। companion book एक क्लासिक है। मुझे यकीन नहीं है कि यह वितरित और संभाव्य सुविधाओं को संबोधित करता है, लेकिन वे आपको मौलिक सिद्धांतों में उत्कृष्ट ग्राउंडिंग देंगे।

मैं लाल-काले पेड़, हैश टेबल, पेट्रीसिया ट्राई, और अपने एजेंडे में सूचियों को छोड़ दूंगा।

शुभकामनाएं।

2

चूंकि आपके पास डीएस पर बहुत कम ज्ञान है, मुझे लगता है कि आपको सूचियों (एकल और दोगुनी लिंक्ड सूचियों) से शुरू करना चाहिए।

फिर आप विभिन्न पेड़ डेटा संरचनाओं का अध्ययन कर सकते हैं।

चूंकि आप खोज से संबंधित डीएस पर रूचि रखते हैं, मुझे लगता है कि आपको बी-पेड़ + पेड़ और हैश टेबल का अध्ययन करना चाहिए।

The Algorithm Design Manual एल्गोरिदम के बारे में अधिक जानने के लिए एक अच्छी किताब है।

3

खोज के लिए, डेटा संरचनाओं से एल्गोरिदम अधिक महत्वपूर्ण हैं। एक बड़ी खोज स्थान खोजते समय आपको अक्सर खोज स्थान को छंटनी के लिए परिष्कृत तरीकों का होना पड़ता है।

आप अल्फा-बीटा, ए *, एओ * जैसे क्लासिक खोज एल्गोरिदम देख सकते हैं।

फिर खोज को गहराई से गहराई से कुछ देखें।

खोज एल्गोरिदम में, स्टैक्स और लिंक्ड सूचियों (जो वास्तव में एक ढेर का एक रूप है) और पेड़ हैश टेबल, बी-पेड़ आदि से अधिक महत्वपूर्ण हैं। बेशक, आप निस्संदेह वहां हैश टेबल रखेंगे, लेकिन यह एल्गोरिदम का दिल नहीं होगा।

  1. बी * खोज
  2. उलटे पांव लौटने
  3. बीम खोज
  4. सबसे पहले खोज
  5. द्विदिश खोज
  6. पहाड़ी चढ़ाई खोज
  7. :

    यहाँ कुछ अधिक महत्वपूर्ण खोज algorithsm है

  8. नकली एनीलिंग
  9. आईडीए *
  10. पुनरावृत्ति मजबूत बनाने गहराई-पहले खोज
  11. मिनी अधिकतम खोज
  12. निकटतम पड़ोसी खोज
  13. राज्य अंतरिक्ष खोज (नहीं एक तकनीक है, बस एक समस्या conceptualizing का एक तरीका) प्रसार सक्रियण ।

जहां तक ​​खोज के लिए विशिष्ट डेटा संरचनाएं जाती हैं, आपको वास्तव में किसी की आवश्यकता नहीं होती है। असल में, आपको केवल डेटा संरचनाओं - पेड़ों, हैंश, सूचियों की नियमित उपकरण किट की आवश्यकता होती है।

+2

मैं असहमत हूं कि खोज एल्गोरिदम के लिए डेटा संरचनाएं अधिक महत्वपूर्ण हैं। दोनों वास्तव में हाथ में हाथ जाओ। – jason

+0

मुझे लगता है कि वह पहले सूचना पुनर्प्राप्ति एल्गोरिदम की तलाश में है, आपके पास पहले से ही मूलभूत कार्य करने के बाद संख्यात्मक अनुकूलन अधिक उपयोगी है। –

+0

"अधिक महत्वपूर्ण" शायद एक गलत बयान है। मुझे यह कहना चाहिए था कि डेटा संरचनाओं की तुलना में एल्गोरिदम साहित्य में सीखने के लिए और अधिक खोज-विशिष्ट सामग्री है, क्योंकि अपेक्षाकृत कम संख्या में डेटा संरचनाओं का उपयोग आमतौर पर अन्य उद्देश्यों के लिए किया जाता है, लेकिन अधिकांश भाग पर्याप्त होते हैं, लेकिन वहां एक विभिन्न खोज एल्गोरिदम पर साहित्य का विशाल शरीर। –

3

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

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