এমোরিটাইজড ধ্রুবক সময়ে অ্যারে শুরু করুন - এই কৌশলটি কী বলা হয়?


13

এই ডেটা স্ট্রাকচারটি এমন রয়েছে যা এটিকে সাফ করার সময় পুনরাবৃত্তি করার প্রয়োজনের বিরুদ্ধে অ্যারে অ্যাক্সেসের কার্য সম্পাদন করে। আপনি প্রতিটি প্রবেশের সাথে একটি প্রজন্মের কাউন্টার রাখেন, এবং একটি বৈশ্বিক প্রজন্মের কাউন্টারও রাখুন। "ক্লিয়ার" অপারেশন প্রজন্মের কাউন্টারকে বাড়িয়ে তোলে। প্রতিটি অ্যাক্সেসে, আপনি স্থানীয় বনাম গ্লোবাল প্রজন্মের কাউন্টারগুলির সাথে তুলনা করুন; যদি তারা পৃথক হয়, মানটিকে "পরিষ্কার" হিসাবে বিবেচনা করা হয়।

এটি সম্প্রতি স্ট্যাক ওভারফ্লোতে এই উত্তরে উঠে এসেছিল , তবে এই কৌশলটির কোনও অফিসিয়াল নাম আছে কিনা তা আমার মনে নেই। এটা কি পারে?

একটি ব্যবহারের ক্ষেত্রে হ'ল ডিজকস্ট্রার অ্যালগরিদম যদি নোডের কেবল একটি ক্ষুদ্র উপসেটটি শিথিল করতে হয়, এবং যদি এটি বারবার করতে হয়।


2
আকর্ষণীয় কৌশল, তবে এটির বেশ ওভারহেড রয়েছে। তাই আমি অবাক হই যে কোন ব্যবহারগুলি অ্যারে ক্লিয়ারিংকে এমন একটি সাধারণ অপারেশন হিসাবে মূল্য প্রদান করে? (আন্তরিক প্রশ্ন!)
জোচিম সৌর

@ জোয়াচিমসৌয়ার: সম্পাদিত।
krlMLr

মেমরির ব্যবহার এবং অ্যাক্সেসের ব্যয়ের জন্য উভয়ই সাধারণ ক্ষেত্রে খুব ব্যয়বহুল মনে হচ্ছে। এই কৌশলটির ব্যবহারের ক্ষেত্রে অবশ্যই খুব সুনির্দিষ্ট হতে হবে।
মার্টিন ইয়র্ক

3
@ জোয়াচিম: মোটামুটিভাবে রেন্ডারিংয়ের জন্য এটি পরিষ্কার সাফ করার জন্য ব্যবহৃত হয়। তাদের কেবল 64 কেবি প্রতি একটি "স্পষ্ট বিট" বা এরকম কিছু রয়েছে।
ডেডএমজি

3
@ user946850 "amorised" এর অর্থ আপনি প্রমাণ করতে পারবেন যে একটি ব্যয়বহুল ক্রিয়াকলাপ সামগ্রিক ছবিতে খুব কমই ঘটে যা উদাহরণস্বরূপ ও (1) এর চেয়ে বেশি অবদান রাখে না

উত্তর:


2

পূর্বোক্ত পদ্ধতির প্রয়োজন হয় যে প্রতিটি কক্ষ যথেষ্ট পরিমাণে ধরে রাখতে সক্ষম হতে হবে যাতে অ্যারের পুনরায় পুনর্নির্মাণের প্রয়োজন হতে পারে তার পরিমাণটি ধরে রাখতে, যা একটি যথেষ্ট স্থান দণ্ড। একটি স্লট অন্তত একটি মান যা বৈধভাবে কখনো লেখা হবে অধিষ্ঠিত করতে সক্ষম হয়, তাহলে এক অন্য কোন (অ-ধ্রুবক) স্থান একটি যোগ করার খরচে শাস্তি থাকার এড়াতে পারে O(Wlg(N))যখন কোন আযাব, যেখানে Wসংখ্যা স্বতন্ত্র মধ্যে লিখিত অ্যারের স্লট ক্লিয়ারিং অপারেশন এবং Nঅ্যারের আকার হয়। উদাহরণস্বরূপ, ধরুন যে কেউ -2,147,483,647 থেকে 2,147,483,647 (তবে কখনও -2,147,483,648) থেকে পূর্ণসংখ্যা সংরক্ষণ করবে এবং কেউ শূন্য হিসাবে পড়তে ফাঁকা অ্যারে আইটেম চায়। -2,147,483,648 দিয়ে অ্যারে পূরণ করে শুরু করুন (এই মানটি কল করুন)B)। অ্যাপ্লিকেশনটির জন্য একটি অ্যারে স্লট পড়ার সময় Bশূন্য হিসাবে একটি মান রিপোর্ট করুন । অ্যারে স্লট লেখার আগে I, চেক কিনা এটি অনুষ্ঠিত Bএবং তাই যদি এবং Iএক তার চেয়ে অনেক বেশী, স্লট করার জন্য একটি শূন্য সংরক্ষণ I/4(এবং যদি এটি অনুষ্ঠিত যে অবস্থানের জন্য একটি অনুরূপ পরীক্ষা করার পর B, I/16ইত্যাদি)।

অ্যারে সাফ করার Iজন্য, অ্যারে বেসের উপর নির্ভর করে 0 বা 1 এর সমান দিয়ে শুরু করুন (বর্ণিত অ্যালগরিদম উভয়ের জন্য কাজ করবে)। তারপরে নিম্নলিখিত পদ্ধতির পুনরাবৃত্তি করুন: আইটেমটি যদি Iহয় B, বৃদ্ধি হয় Iএবং যদি তা করে চারটির একাধিক ফলন হয় তবে চারটি দিয়ে ভাগ করুন (বিভাজনের মান 1 প্রদান করে যদি সমাপ্ত হবে); যদি আইটেমটি Iনা থাকে তবে সেখানে Bসঞ্চয় করুন Bএবং Iচারটি দিয়ে গুণ করুন (যদি Iশূন্য থেকে শুরু হয়, চারটি দিয়ে গুণ করলে এটি শূন্য থেকে যায় তবে যেহেতু আইটেম 0 ফাঁকা Iহবে , বৃদ্ধি পাবে)।

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


সমস্ত কক্ষকে নতুন মান সহ আপডেট করার আগে পর্যাপ্ত ক্রমিক পুনরায় সেট করতে সক্ষম একটি সংস্করণ কাউন্টার থাকা যথেষ্ট। অনুশীলনে একটি বাইট পর্যাপ্ত হতে পারে, বা আরও কঠোর লুপগুলিতেও কম।
9000

@ 9000: এই জাতীয় আচরণের উপর নির্ভর করে এমন কোডটি ভঙ্গুর হতে পারে, বিশেষত এই ধরণের 'সিউডো-ক্লিয়ার' পদ্ধতির (কেবল অ্যারে সাফ করার বিপরীতে) ব্যবহারের একমাত্র কারণটি যদি প্রয়োজন আইটেমগুলির সেট হয় সাফ করার বিষয়টি সাধারণত ছোট এবং পরিবর্তনশীল ছিল - এমন এক শর্ত যা কোনও আইটেম ব্যবহারের সম্ভাবনা বাড়িয়ে দেওয়ার, "ক্লিয়ার করা", এবং তারপরে নির্বিচারে দীর্ঘসময় ধরে অচ্ছুত থাকার চেষ্টা করে। কাউন্টারটি মোড়ানোর সময় কোনও অ্যারে স্ক্যান করা এবং শারীরিকভাবে কোনও পুরানো স্লট সাফ করার কথা বিবেচনা করা যেতে পারে, তবে ...
সুপারক্যাট

1
... যদি কাউন্টারটির মোড়কের মান স্থির থাকে, তবে প্রতিটি অ্যারে ক্লিয়ার অপারেশনের কাজের গড় পরিমাণ হ'ল (এন) হবে, এন অ্যারের আকার হিসাবে। এ জাতীয় জিনিস অনুশীলনে কার্যকর নাও হতে পারে, যেহেতু 5৫,5 of of ফ্যাক্টর দ্বারা চালিত ও (এন) বাস্তবায়ন এখনও ও (এন) হতে পারে, তবে উন্নত না হওয়া হিসাবে তত দ্রুত গতিতে 65,536 গুণ হবে । ঘটনাক্রমে, এই পদ্ধতিগুলি যে ক্ষেত্রে সহায়ক হবে সেগুলি স্পার-অ্যারে ডেটা স্ট্রাকচার ব্যবহার করেও উপকৃত হতে পারে, যা একটি ফাঁকা উপাদানগুলির সাথে এন সাইজের এন এর অ্যারে ধরে রাখতে O (AlgN) স্পেস ব্যবহার করতে পারে।
সুপারক্যাট

1

আমি এটিকে "অলস অ্যারে সেল পুনর্নির্মাণ" বলব, তবে এটির কোনও প্রতিষ্ঠিত নাম (এটি নামটি ব্যাপকভাবে ব্যবহৃত হচ্ছে) বলে মনে হয় না।

অ্যালগরিদম চতুর, তবে খুব সংকীর্ণ অঞ্চলে খুব বিশেষায়িত এবং প্রযোজ্য।


1

আমি বিশ্বাস করি এটি স্মৃতিচারণের একটি বিশেষ মামলা, এই ক্ষেত্রে বাদে, "মেমোস" গ্লোবাল কাউন্টারের প্রতিটি বৃদ্ধি সহ স্পষ্টভাবে "বয়স"। আমি এক ধরণের "পিছনের স্মৃতি" অনুমান করি।

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