এড়িয়ে যাওয়ার তালিকা কীভাবে কাজ করে?


14

একটি হোমওয়ার্ক অ্যাসাইনমেন্টের জন্য, আমার বোঝা দরকার যে কীভাবে স্কিপ তালিকা কাজ করে।

আমি এখন 2 বছরেরও বেশি সময় ধরে প্রোগ্রামিং করছি (আমি জানি এটি বাস্তবে এত দীর্ঘ নয়), এবং আমি কখনও এড়িয়ে যাওয়ার তালিকাও শুনিনি।

আমি যে সমস্ত গাইড খুঁজে পেতে পারি তার উপরে নজর রেখেছি এবং তারা কীভাবে কাজ করে তা আমি এখনও সবেমাত্র বুঝতে পারি। এমনকি আমি উদাহরণ বাস্তবায়নের জন্য কোড পর্যালোচনাও অনুসন্ধান করেছি এবং কেবলমাত্র একটি পর্যালোচনা পেয়েছি; এবং এটি সম্পূর্ণ বাস্তবায়নও নয়। আমি কোর্সের দ্বারা সরবরাহিত নমুনা বাস্তবায়নের দিকে নজর রেখেছিলাম এবং এটি একেবারেই নৃশংস। সঠিক পদ্ধতির অভাব এবং একক-বর্ণের পরিবর্তনশীল নামের মধ্যে, এটি কীভাবে কাজ করে তা সম্পর্কে আমার কোনও ধারণা নেই।

এড়িয়ে যাওয়ার তালিকা কীভাবে কাজ করে? আরও উন্নত ডেটা কাঠামো বোঝার জন্য কি এড়িয়ে যাওয়ার তালিকার জ্ঞানের প্রয়োজন?



1
শিক্ষার পরামর্শ স্পষ্টতই অফ-টপিক । এটি ডেটা স্ট্রাকচার সম্পর্কিত এবং শিক্ষার বিষয়ে নয়, এই অংশগুলি সরাতে আমি আপনার প্রশ্ন সম্পাদনা করেছি। আমি সম্পাদিত উইকিপিডিয়া লিঙ্কটি পড়ার পরামর্শ দিচ্ছি এবং আপনি এখনও বুঝতে পারেন না সে সম্পর্কে আরও নির্দিষ্ট বিশদ সহ আপনার প্রশ্নটি আপডেট করুন।

@ সুমন ধন্যবাদ আমি কেবল যুক্ত করেছি যে "আপনার শিক্ষককে জিজ্ঞাসা করুন" এর মত মন্তব্যগুলি প্রতিরোধ করতে। আমি পরের বারের জন্য এটি মনে রাখব। এবং আপনি একটি সম্পাদনা যুক্ত করেছেন যা প্রশ্ন পরিবর্তন করে। শেষ অবধি, আমি লোকেরা কীভাবে কাজ করে তা ব্যাখ্যা করতে বলছি না যেহেতু আমি এটি অফটোপিক ধরে নিচ্ছি (যদিও আমি ভাল ব্যাখ্যাটির বিপক্ষে হব না)। আমি শিখতে চাই যে তারা কতটা গুরুত্বপূর্ণ।
কারসিজেনিকেট

1
ব্যাখ্যা কিভাবে তারা কাজ আসলে @Carcigenicate আরো আপনি যদি তাদের বাস্তব জগতে দেখতে হবে জিজ্ঞাসা চেয়ে বিষয়ে। আপনি কী করছেন এবং বিভিন্ন অঞ্চলগুলি কেবল তা আমরা অনুমান করতে পারি। আমরা যদি সত্যিকারের বিশ্বে তাদের দেখতে পাই তা জিজ্ঞাসা করা হচ্ছে "হ্যাঁ, আমি সেগুলি দেখি এবং তাদের ব্যবহার করি" বা "না, এটি কখনও শুনেনি" - যা অন্যান্য লোকদের পড়ার জন্য ভাল বা দরকারী জবাব দেয় না।

উত্তর:


29

পুরানো দিনগুলিতে, ডেটা স্ট্রাকচার ক্লাসে আমরা শিখেছি কীভাবে এভিএল গাছগুলি কাজ করে । আমার এই ক্লাসগুলির একটিতে আমার এটি হত, তবে প্রশিক্ষক বলেছিলেন "আপনি আসলে এটি কখনই ব্যবহার করবেন না" এবং এর পরিবর্তে আমাদের ২-৩ টি গাছ এবং বি * গাছ শিখিয়েছিলেন। সেই দিনগুলি ছিল যখন স্মৃতি শক্ত ছিল এবং প্রক্রিয়াগুলি এককভাবে থ্রেড করা হত। আপনি যখন কোনও একক লিঙ্কযুক্ত তালিকাগুলি ঠিক তেমন কাজ করবে তখন আপনি কোনও প্রবক্তা ব্যবহার করেন নি।

স্কিপ লিস্টটি আজ আরও বেশি সাধারণ এবং আরও উপলভ্য মেমরি এবং একমত হওয়ার সাথে একমত হয়ে উঠেছে (কোনও এভিএল গাছের সাথে সমস্ত কিছুর তুলনায় কোনও স্কিপ তালিকায় লেখক হিসাবে অভিনয় করার সময় আপনাকে খুব বেশি লক করতে হবে না)।

সত্যই, এটি এখন আমার প্রিয় ডেটা কাঠামো যা এটির নীচে কীভাবে কাজ করে এবং কোথায় এটি সুবিধাজনক বা অসুবিধাগুলি ব্যবহার করবে সে সম্পর্কে আমি সহজেই যুক্তি করতে পারি।

আপনাকে স্ক্র্যাচ থেকে একটি লেখার দরকার নেই (যদি না আপনি এটি একটি সাক্ষাত্কারের প্রশ্ন হিসাবে না পেয়ে থাকেন - তবে তারপরে আপনি কেবল একটি এভিএল ট্রি বাস্তবায়নের সম্ভাবনা পাবেন)।

আপনি জাভাতে কোনও বা অন্য কোনও মানচিত্রের প্রয়োগের চেয়ে কেন নির্বাচন করতে চান তা বোঝার দরকার রয়েছে areConcurrentSkipListMapHashMapTreeMap


এটি কীভাবে কাজ করে তা বুঝতে, আপনার বাইনারি গাছ কীভাবে কাজ করে তা বুঝতে হবে। অপেক্ষা করুন, আমাকে এটি সংশোধন করা যাক। আপনার ভারসাম্য বাইনারি গাছ কীভাবে কাজ করে তা বুঝতে হবে । বাইনারি গাছের ভারসাম্য না রেখে আপনি এর সন্ধানের সাথে কোনও আসল সুবিধা পাবেন না।

আসুন আমরা এই গাছটি পেয়েছি:

একটি বাইনারি গাছ

এবং আমরা এটিতে একটি '8' োকান। এখন আমরা পেয়েছি:

ভারসাম্যহীন বাইনারি গাছ

এবং এটি ভারসাম্যপূর্ণ নয়। সুতরাং, আমরা গিয়ে কিছু প্রয়োগের মাধ্যমে এটি ভারসাম্য করার যাদু করি ...

সুষম গাছ

এবং আপনি আবার ভারসাম্যযুক্ত গাছ পেয়েছেন। তবে সেটা ছিল অনেক ম্যাজিক আমি হাতটি দুলালাম।

একটি এড়িয়ে যাওয়ার তালিকা নিতে দেয়।

আদর্শ বাদ দেওয়া তালিকা

এটি একটি আদর্শ হয়ে ওঠে। কয়েক জন হ'ল তবে এটি সুষম বাইনারি গাছের প্রকৃতিটি দেখায় যা স্কিপলিস্ট আদর্শের কাছাকাছি।

এখন, আমরা সেখানে একটি 6 sertোকাতে চাই। এটি এটি কোনও লিঙ্কযুক্ত তালিকার মতো সন্নিবেশ করছে। যাইহোক, আমরা শীর্ষে শুরু এবং নীচে যেতে। শীর্ষস্থানীয় পয়েন্ট 5। 6> 5 হয়? হ্যাঁ. ঠিক আছে, এখন শীর্ষে পয়েন্টগুলি বন্ধ করুন, সুতরাং আমরা স্ট্যাকটি নীচে চলে যাই (আমরা 5 এর উপরে আছি)। পরেরটি 7. 6> 7 হয়? নাঃ। সুতরাং আমরা একটি স্তর নীচে যান এবং আমরা বেস স্তর হয় তাই আমরা 5 টি ডান 6 সন্নিবেশ করান।

আমরা একটি মুদ্রা ফ্লিপ করি - মাথাগুলি আমরা তৈরি করি, লেজগুলি আমরা থাকি। মুদ্রার উলটা পিঠ। আর কিছু করার দরকার নেই।

একটি সন্নিবেশের পরে তালিকা ছেড়ে যান

এখন 8 প্রবেশ করান। 8> 5? হাঁ। 8> 7? হাঁ। এবং এখন আমরা তীরগুলি অনুসরণ করে এবং চারপাশের স্ট্যাকটি অনুসরণ করার পরে আবার নীচে স্তরে আছি এবং আমরা 8> 11 পরীক্ষা করছি? নাঃ। সুতরাং আমরা 8 টি 7 এর ডানদিকে sertোকান।

আমরা একটি মুদ্রা ফ্লিপ করি - মাথাগুলি আমরা তৈরি করি, লেজগুলি আমরা থাকি। মুদ্রার উলটা পিঠ। আর কিছু করার দরকার নেই।

অন্য সন্নিবেশের পরে তালিকা ছেড়ে যান

ভারসাম্যযুক্ত গাছে, গাছটি এখন ভারসাম্যহীন না হওয়ার বিষয়ে আমরা সবাই কাজ করে যাব। তবে এটি গাছ নয় - এটি এড়িয়ে যাওয়ার তালিকা। আমরা আনুমানিক ভারসাম্যযুক্ত গাছ।

এবার একটি 10 ​​প্রবেশ করানো যাক আমি সমস্ত তুলনা এড়াতে চাই।

আমরা একটি মুদ্রা ফ্লিপ করি - মাথাগুলি আমরা তৈরি করি, লেজগুলি আমরা থাকি। সাবধান! এবং এটি আবার ফ্লিপ, হেডস আবার! এটি আবার ফ্লিপ করুন, ঠিক আছে, একটি লেজ আছে। বেস লিঙ্কযুক্ত তালিকার উপরে দুটি স্তর।

আরও একটি সন্নিবেশের পরে তালিকা এড়িয়ে যান

এখানে সুবিধাটি হ'ল এখন যদি আমরা একটি 12 sertোকাতে যাচ্ছি তবে আমরা অন্যান্য সমস্ত তুলনা না করে 5 থেকে 10 এড়িয়ে যেতে পারি । এড়িয়ে যাওয়া তালিকা সহ আমরা সেগুলি এড়িয়ে যেতে পারি। এবং আমাদের ভারসাম্যযুক্ত গাছ সম্পর্কে চিন্তা করার দরকার নেই - স্ট্যাকিংয়ের সম্ভাব্য প্রকৃতি আমাদের জন্য তা করে।

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

আপনি এটি সম্মুখীন হবে? আপনি সম্ভবত এটি জায়গাগুলিতে ব্যবহারে দেখতে পাবেন। এবং তারপর কেন জানো লেখক বেছে নেওয়া হয়েছে করব যে বরং একটি তুলনায় বাস্তবায়ন TreeMapবা HashMapকাঠামো জন্য।

এর বেশিরভাগ আমার ব্লগ পোস্ট থেকে নেওয়া হয়েছে: এড়িয়ে যান তালিকা


ধন্যবাদ. এটি এমন সাধারণ বাস্তবায়নও নয় যা আমি বুঝতে পারি না; আমি বিএসটিগুলির সাথে তাদের সাদৃশ্য পাই। আমি কীভাবে এটি বাস্তবায়ন করব তা ভেবে দেখার চেষ্টা করেছি এবং সমস্ত পয়েন্টার / রেফারেন্স পরিচালনা করার চিন্তা আমাকে ক্রমাগত বিভ্রান্ত করেছিল। আমি নিজেকে খুব হতাশ হতে দিতে পারে। ধন্যবাদ। আমি কাল আপনার উত্তরটি একটি প্রাথমিক পয়েন্ট হিসাবে ব্যবহার করে চেষ্টা করব king
কারসিজিনিট

2
@ কারসিজেনিকেট আপনি মূল কাগজটি তাদের কার্যকর উপস্থাপন করতে পারেন - তালিকাগুলি বাদ দিন : ভারসাম্যযুক্ত গাছের সম্ভাব্য বিকল্প । এটি বেশিরভাগ একাডেমিক গবেষণাপত্রের তুলনায় একটি বোধগম্য কাগজ যা মানুষের মাথা ধরে যেতে পারে over সারণী 2 আপনি এগুলিকে ব্যবহারের জন্য দেখতে পাবেন। সন্নিবেশ বা মোছার জন্য সেই সময়ের কারণটি অন্যান্য সমাধানগুলির জটিলতা যুক্ত করা হয় ।

2
যে কোন লিঙ্ক করা তালিকা "শুধু একটি অধ: পতিত হয় খুব ভারসাম্যহীন গাছ"। একটি এড়িয়ে যাওয়া তালিকা আংশিকভাবে তালিকার শীর্ষে কিছু ধরণের গাছের কাঠামো যুক্ত করে দেওয়া। ব্যক্তিগতভাবে, আমি ধ্রুবক ডেটা স্ট্রাকচারের একটি বড় অনুরাগী এবং গাছগুলি সেই নির্দিষ্ট প্রসঙ্গে তর্ক করতে আরও সহজ বলে মনে হয়। আমি মনে করি না এটি একটি কাকতালীয় ঘটনা যা ক্লোজুর, স্কালা, ইত্যাদি। মনে হচ্ছে কোনও একরকম ব্যাগওয়েল-স্টাইলের হ্যাশ তাদের বুনিয়াদি ডেটা স্ট্রাকচার হিসাবে রূপান্তরিত হচ্ছে। (ফিল ব্যাগওয়েল এমনকি স্কেল ২.৮-এর জন্য স্কালার সংগ্রহ কাঠামোর পুনরায় নকশার সাথে জড়িত ছিল)) স্কিপ লিস্টগুলি এখনও দুর্দান্ত।
Jörg ডব্লু মিটাগ

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