সুসিনেক্ট ডেটা স্ট্রাকচার অ্যালগরিদমের জন্য একটি ভাল ওভারভিউ দরকার


14

( মূল সাইটে ইতিমধ্যে জিজ্ঞাসা করা হয়েছে, তবে আরও ভাল কভারেজের জন্য এখানে জিজ্ঞাসা করছেন, দুঃখিত)

যেহেতু আমি সুসিনেক্ট ডেটা স্ট্রাকচার সম্পর্কে জানতাম আমি সেই অঞ্চলে সর্বাধিক সাম্প্রতিক ঘটনাবলির একটি ভাল ওভারভিউয়ের প্রয়োজন des

আমি গুগল করেছি এবং প্রচুর নিবন্ধগুলি পড়তে পেরেছি যা আমার মাথার উপরে থেকে অনুরোধে গুগল ফলাফলের শীর্ষে দেখতে পেলাম। আমি এখনও সন্দেহ করি যে এখানে আমি গুরুত্বপূর্ণ কিছু মিস করেছি।

এখানে আমার জন্য বিশেষ আগ্রহের বিষয় রয়েছে:

  1. পিতামাতার, বাম / ডান সন্তানের, একটি সাবট্রিতে উপাদানগুলির সংখ্যা অর্জনের দক্ষ ক্রিয়াকলাপ সহ বাইনারি গাছগুলির সুসিনেক্ট এনকোডিং।

    এখানে মূল প্রশ্নটি নিম্নরূপ: সমস্ত পন্থাগুলি আমি জানি শ্বাস-প্রশ্বাসের প্রথম ক্রমে গণিত গাছের নোডগুলি ধরে নেওয়া (যেমন এই অঞ্চলের অগ্রণী কাজের মতো জ্যাকবসন, জি জে (1988)। সুসংহত স্থির তথ্য কাঠামো), যা না আমার কাজের জন্য উপযুক্ত বলে মনে হচ্ছে আমি গভীরতা-প্রথম বিন্যাসে প্রদত্ত বিশাল বাইনারি গাছগুলির সাথে ডিল করি এবং গভীরতা-প্রথম নোড সূচকগুলি অন্যান্য নোডের বৈশিষ্ট্যগুলির চাবি, তাই বৃক্ষ বিন্যাসটি পরিবর্তন করা আমার জন্য কিছু ব্যয় হয় যা আমি হ্রাস করতে চাই। সুতরাং অন্যান্য তত্কালীন বিএফ গাছের লেআউট বিবেচনা করে কাজগুলিতে রেফারেন্স পাওয়ার আগ্রহ।

  2. বাহ্যিক স্মৃতিতে বড় আকারের পরিবর্তনশীল-দৈর্ঘ্যের আইটেমগুলি। অ্যারেগুলি অপরিবর্তনীয়: আমার আইটেমগুলি যুক্ত / মুছতে / সম্পাদনা করতে হবে না। কেবলমাত্র প্রয়োজন হ'ল (1) উপাদান অ্যাক্সেসের সময় এবং যতটা সম্ভব কম ওভারহেড, ভাল তবে সোজা সরল অফসেট এবং আকারের পদ্ধতির। আমার কাজের জন্য টিপিক্যাল ডেটা সম্পর্কে আমি এখানে কিছু পরিসংখ্যান সংগ্রহ করেছি:

    বৈশিষ্ট্যযুক্ত আইটেমের সংখ্যা - কয়েক মিলিয়ন, মিলিয়র্ড পর্যন্ত;

    প্রায় 30% আইটেমের দৈর্ঘ্য 1 বিট এর বেশি হয় না ;

    40% -60% আইটেমের দৈর্ঘ্য কম তবে 8 বিট;

    আইটেমের মাত্র কয়েকটি পার্সেন্টের দৈর্ঘ্য 32 থেকে 255 বিটের মধ্যে থাকে (255 বিট সীমা হয়)

    গড় আইটেম দৈর্ঘ্য ~ 4 বিট +/- 1 বিট।

    আইটেম দৈর্ঘ্যের অন্য কোনও বিতরণ তাত্ত্বিকভাবে সম্ভব তবে সমস্ত ব্যবহারিকভাবে আকর্ষণীয় ক্ষেত্রে উপরে বর্ণিত সংখ্যার কাছাকাছি পরিসংখ্যান রয়েছে।

যে কোনও জটিলতার নিবন্ধগুলির লিঙ্কগুলি, যে কোনও অস্পষ্টতার টিউটোরিয়াল, কম / বেশি ডকুমেন্টেড সি / সি ++ গ্রন্থাগারগুলি - অনুরূপ কার্যগুলিতে আপনার পক্ষে যা কার্যকর বা আপনার শিক্ষিত অনুমান অনুসারে যা দেখতে দেখতে এমন কিছু রয়েছে - এই জাতীয় সমস্ত জিনিস কৃতজ্ঞতার সাথে প্রশংসা করা হয়েছে।

হালনাগাদ : আমি 1 টি প্রশ্নের সাথে যুক্ত করতে ভুলে গিয়েছি: বাইনারি গাছগুলি যেগুলি আমি পরিচালনা করছি তা অদল্য। এগুলি পরিবর্তনের জন্য আমার কোনও প্রয়োজনীয়তা নেই, কেবলমাত্র নুড থেকে বাচ্চাদের বা অভিভাবকদের দিকে নড়াচড়া করার জন্য কেবল আমার বিভিন্ন প্রয়োজন, যাতে এই ধরনের অপারেশনের গড় ব্যয় ও (1) হত।

এছাড়াও, সাধারণ গাছে মিলিয়ার্ড নোড থাকে এবং এটি পুরোপুরি র‍্যামে সংরক্ষণ করা উচিত নয়।

উত্তর:


12

আমি ধরে নিলাম যে আপনি বাহ্যিক মেমরি ডেটা স্ট্রাকচারগুলিকে অনুশীলনে দক্ষ বলে সেকিঙ্ক্ট করতে আগ্রহী। সেক্ষেত্রে কয়েকটি বুনিয়াদি কৌশল এবং কিছু প্রকৌশল দিয়ে আপনি যা চান তা পেতে পারেন।

গাছের জন্য, আমি অ্যারোয়্যালো এবং এট আল পড়া শুরু করব: অনুশীলনে সুচিনেক্ট ট্রি । কাগজটি মূল স্মৃতিতে গাছ নিয়ে কাজ করে তবে বেশিরভাগ কৌশলগুলি নীচের মত একই পছন্দগুলির সাথে বাইরের স্মৃতিতে ব্যবহার করা যেতে পারে।

γδবিবি

এনএসএনএস[আমি]=1আমিRএকটিএন()

আপনি যদি র‌্যাঙ্ক সূচককে ছোট রাখতে চান তবে উপরের বেসিক সমাধানটি সিপিইউ-নিবিড় তৈরি করে আপনাকে ব্লকের আকারটি বেশ বড় (সম্ভবত কিলোবাইট বা দশ কিলোবাইট) করতে হবে। এটি ডিস্কে সঞ্চিত ব্লকে কিছুটা ওভারহেড যুক্ত করে সমাধান করা যেতে পারে। মূলত আপনি একই সমাধানটি পুনরাবৃত্তভাবে প্রয়োগ করেন, যাতে প্রতিটি ডিস্ক ব্লক বিভিন্ন ছোট ছোট ব্লকের পাশাপাশি অন্য একটি র‌্যাঙ্ক সূচক সংরক্ষণ করে। আপনি যখন সঠিক ডিস্ক ব্লকটি পুনরুদ্ধার করেছেন, আপনি সম্পূর্ণ ব্লক ডিকোডিংয়ের পরিবর্তে ডিকোড করতে ডান ছোট ব্লকটি খুঁজে পেতে এর মধ্যে র‌্যাঙ্ক সূচকটি ব্যবহার করেন। এই গৌণ সূচকটির সাথে, এলোমেলো অ্যাক্সেসগুলি সম্ভবত সবচেয়ে দ্রুত সলিড-স্টেট ড্রাইভ উপলব্ধ থাকলেও I / O- আবদ্ধ হয়ে যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.