কী অনুসারে অপ্রচলিত সাফল্য অভিধান অভিধান পরিসীমা গণনা


11

আমি 'সম্পর্কে সি # পড়া ছিল গুলি ImmutableSortedDictionaryমধ্যে System.Collections.Immutableআমার প্রোগ্রামে এটি প্রয়োগ সম্পর্কে চিন্তা ও। আমি সি ++ এর lower_boundএবং upper_bound( এখানে দেখুন ) বেশ পছন্দ করি এবং আমি বরং পরিসীমা দেখার জন্য বাছাইয়ের কিছু দেখার আশা করছিলাম। তবে অনুরূপ পদ্ধতিগুলি ডকুমেন্টেশন থেকে অদ্ভুতভাবে অনুপস্থিত বলে মনে হয় । আমি কিছু অনুপস্থিত করছি? অথবা এমএস কি বাছাই করা রেঞ্জগুলিতে দক্ষ অ্যাক্সেস ছাড়াই বাছাই করা একটি অভিধান সরবরাহ করে? এটি কোনও IEnumerableএক্সটেনশন পদ্ধতি বলার মতো কীগুলিতে কেউ কিছু করতে পারে বলে ঠিক মনে হচ্ছে না , তাই আমি কিছুটা আশ্চর্য হয়েছি যে আমি সরাসরি সংগ্রহ দ্বারা সরবরাহ করা কিছু দেখছি না।


২০০৮ সালে এরিক লিপার্ট একটি অপরিবর্তনীয় এভিএল ট্রি বাস্তবায়ন ভাগ করে নিয়েছিল the মন্তব্যগুলি থেকে, আমি মনে করি না এটি এখনও গতি বা দক্ষতার জন্য বিশেষত অনুকূলিত হয়েছে, তবে IBinarySearchTree<K,V>এটি প্রয়োগকারীরা আমার প্রত্যাশার আরও নিকটতম দেখাচ্ছে। আমি অবাক হয়ে দেখি সে যদি এর উপর আর টিনকি করে?
জে

ImmutableList<T>বর্গ এছাড়াও একটি AVL গাছ হিসাবে প্রয়োগ করা হয়। থেকে সোর্স কোড :/// The root node of the AVL tree that stores this set.
থিওডর Zoulias

আপনি কি জানেন যে তাদের যদি এই তালিকাটি অপরিবর্তনযোগ্যতা বাস্তবায়নের জন্য কোনও এভিএল সত্য ব্যবহার করে বা যদি এভিএল গাছটি নিজেই পরিবর্তনযোগ্য? (তারা যেভাবে যাইহোক গাছটিকে উন্মোচন করে না বলে কিছু যায় আসে না)।
জে ট্রানা

এখান থেকে সুবিধা আছে ImmutableList<T>উপর (একটি AVL গাছ দ্বারা সমর্থিত) ImmutableArray<T>(একটি অ্যারের দ্বারা সমর্থিত) অনুযায়ী, ডকুমেন্টেশনঅপরিবর্তনীয় তালিকা ব্যবহারের কারণগুলি: ১) ডেটা আপডেট করা সাধারণ বা উপাদানগুলির সংখ্যা কম হবে বলে আশা করা যায় না। 2) সংগ্রহ আপডেট করা বিষয়বস্তু পুনরুক্তি করার চেয়ে সমালোচনামূলক।
থিওডর জৌলিয়াস

এটি কারণ একটি বড় এভিএল গাছ থেকে কোনও উপাদান যুক্ত বা মুছার সময়, আপনি বেশিরভাগ নোড ভাগ করে এবং কয়েকটি নতুন নোড তৈরি করে আসলটি ধ্বংস না করেই একটি নতুন গাছ পেতে পারেন। ( ক্রমাগত ডেটা কাঠামো - গাছগুলি )
থিওডর জোউলিয়াস

উত্তর:


9

এটি বিরক্তিকর হয় যে উপলভ্য অন্তর্নির্মিত সংগ্রহগুলি বৈশিষ্ট্যের পুরো সেটটি সরবরাহ করছে না (যেমন SortedDictionaryকোনও BinarySearchপদ্ধতির অভাব রয়েছে ), আমাদের তৃতীয় পক্ষের সমাধানগুলি অনুসন্ধান করতে বাধ্য করে ( সি 5 লাইব্রেরির মতো )।

আপনার ক্ষেত্রে ImmutableSortedDictionaryআপনি সম্ভবত একটি ব্যবহার করতে পারেন ImmutableSortedSet, কীগুলিতে মানগুলি এম্বেড করে এবং একটি উপযুক্ত তুলনামূলক ব্যবহার করতে পারেন। কমপক্ষে এই শ্রেণীর এপিআইতে বৈশিষ্ট্যগুলি রয়েছে Minএবং Max


2
পার্শ্ব নোট হিসাবে, অপর একটি অপরিবর্তনীয় শ্রেণি, দী গাছ হিসাবেImmutableList<T> অভ্যন্তরীণভাবে প্রয়োগ করা হয় । সুতরাং এটি 10 ​​গুণ ধীর এবং এ এর ​​চেয়ে 12 গুণ বেশি মেমরি বরাদ্দ করে । পরিবর্তে ব্যবহার করুন। List<T>ImmutableArray<T>
থিওডর জৌলিয়াস

1
হেই, আমি ইতিমধ্যে সি 5 ব্যবহার করেছি তবে অপরিবর্তনীয় সংগ্রহের জন্য কী উপলব্ধ ছিল তা সন্ধান করছি (স্ন্যাপশটের বাইরে)। ধন্যবাদ! আমি আশাবাদী হতে চলেছি যে অন্য কেউ এটি কোনওভাবে কোনও আকার বা আকারে সমাধান করেছে, তবে আমি মনে রাখবImmutableSortedSet
জে ট্রানা

@ থিওডোরজৌলিয়াস যখন সাফল্যযুক্ত অভিধানে বাইনারি অনুসন্ধান পদ্ধতি রাখার অর্থ কী, যখন ট্রিগেটভ্যালু পদ্ধতি লগ (এন) এ কাজ করে? এখানে দেখুন
জিওরগি চিখিকভাদজে

2
@ জিওরগিচিকভিকজেড বাইনারি অনুসন্ধান আপনাকে সন্ধান করতে থাকা আইটেমটির চেয়ে বড় পরবর্তী উপাদানটি দিতে পারে, যদি কোনও সঠিক মিল খুঁজে পাওয়া যায় না।
থিওডর জৌলিয়াস

1
@ জিওরগিচিকভাদজে সম্ভবত এখানে সবচেয়ে বড় পার্থক্য হ'ল রিটার্নের মানটি সংগ্রহে কেবল একটি মানই নয়, বরং দক্ষতার সাথে সংগ্রহের সূচকের উপায়। বাইনারি অনুসন্ধান পদ্ধতিটি কেবল বিশেষ কারণ এটি কার্যকরভাবে কার্যকরভাবে মূল্য খুঁজে পায় তবে থিয়োডারের নির্দেশ অনুসারে এটি মিসের ক্ষেত্রেও একটি সূচক খুঁজে পায় কারণ এটি উদাহরণস্বরূপ একটি অ্যারেতে দ্রুত প্রবেশের অনুমতি দেয়। গাছের ক্ষেত্রে যদিও কোনও পূর্ণসংখ্যার সূচক কাঠামো অ্যাক্সেসের কার্যকর উপায় নাও হতে পারে; সি ++ এটির পুনরাবৃত্তিকারী বস্তুর ব্যবহারের মাধ্যমে সমাধান করে (তার নিজস্ব জটিলতা থাকা সত্ত্বেও)।
জে ট্রানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.