লক-ফ্রি, ধ্রুবক আপডেট-সময় সমবর্তী গাছের ডেটা-কাঠামো?


20

আমি ইদানীং কিছুটা সাহিত্য পড়েছি এবং কিছু আকর্ষণীয় তথ্য-কাঠামো পেয়েছি।

আমি সবচেয়ে খারাপ ক্ষেত্রে আপডেটের সময় [1-7] এ আপডেট সময় পাওয়ার বিভিন্ন বিভিন্ন পদ্ধতি নিয়ে গবেষণা করেছি ।হে(1)

সাম্প্রতিক আমি দক্ষ সমবর্তী অ্যাক্সেস সমর্থন করার জন্য লক-মুক্ত ডেটা-স্ট্রাকচারগুলি অনুসন্ধান করতে শুরু করেছি।

লক-ফ্রি ডেটা স্ট্রাকচার বাস্তবায়নে এইগুলির মধ্যে সবচেয়ে খারাপ আপডেট-টাইম কৌশলগুলি ব্যবহার করা হয়েছে?হে(1)

আমি জিজ্ঞাসা করি কারণ; আমার কাছে, তারা এই "তাত্ত্বিক বৃদ্ধি" এর সুস্পষ্ট ব্যবহারিক বর্ধনের মতো বলে মনে হচ্ছে।


  1. টারজান, রবার্ট এন্ড্রে। "হে (1) আবর্তনের মধ্যে ভারসাম্যযুক্ত অনুসন্ধান গাছ আপডেট করা” "তথ্য প্রসেসিং লেটার 16, নং। 5 (1983): 253 - 257।

  2. ড্রিসকল, জেআর, এন সার্নাক, ডিডি স্লিয়েটার এবং আরই টারজন "ডেটা স্ট্রাকচারকে অবিচলিত করে তোলা।" থিওরি অফ থিওরি অন আঠারোতম বার্ষিক এসিএম সিম্পোজিয়ামের কার্যক্রমে, 109–121। স্টক '86। নিউ ইয়র্ক, এনওয়াই, মার্কিন যুক্তরাষ্ট্র: এসিএম, 1986।

  3. লেভাকোপল্লোস, সি। এবং মার্ক এইচ। ওভারমার্স। "ও (1) সবচেয়ে খারাপ কেস আপডেটের সময় সহ একটি ভারসাম্যযুক্ত অনুসন্ধান গাছ।" অ্যাক্টা ইনফ। 26, না। 3 (নভেম্বর 1988): 269–277।

  4. ফ্লিশার, রুডল্ফ ও (1) সবচেয়ে খারাপ-কেস আপডেটের সময় সহ একটি সাধারণ ভারসাম্যযুক্ত অনুসন্ধান গাছ

  5. ডায়েজ, পল এফ, এবং রাজীব রমন। "একটি নিয়মিত আপডেট সময় আঙুলের অনুসন্ধানের গাছ।" তথ্য প্রসেসিং লেটারগুলি 52, নং। 3 (1994): 147 - 154।

  6. লাগোগিয়ানিস, জর্জ, ক্রিস্টোস ম্যাকরিস, ইন্নিস পানাগিস, স্পাইরোস সিউতাস এবং কোস্টাস সিক্লাস। "সবচেয়ে খারাপ ক্ষেত্রে নিয়মিত আপডেট সময় সহ নতুন গতিশীল ভারসাম্যযুক্ত অনুসন্ধান গাছ।" জে। অটোম। ল্যাঙ। ঝুঁটি। 8, না। 4 (জুলাই 2003): 607–632।

  7. ব্রোডাল, জের্ত স্টাল্টিং, জর্জ লাগোগিয়ানিস, ক্রিস্টোস মাকরিস, অ্যাথানাসিয়াস সাকালিদিস এবং কোস্টাস সিক্লাস। "পয়েন্টার মেশিনে অনুকূল আঙুলের অনুসন্ধানের গাছগুলি” "জে.কম্পুট। Syst। সী। 67, না। 2 (সেপ্টেম্বর 2003): 381–418।


2
আপনার সমস্যাটি তদন্ত করতে চান এমন লোকদের সৌজন্য হিসাবে কাগজপত্রগুলিতে লিঙ্কগুলি যুক্ত করার বিষয়টি বিবেচনা করুন।
রাফেল

3
ঠিক আছে, সম্পর্কিত নিবন্ধগুলিতে যুক্ত।
যেমন AT

1
আমি শীঘ্রই কোনও দরকারী প্রতিক্রিয়া না পেয়ে cstheory.SE এ আবার পোস্ট করার পরামর্শ দিই (এখানে একটি লিঙ্ক সহ)।
জেফই

1
পরামর্শের জন্য ধন্যবাদ. আমি পোস্ট করেছি: লক-ফ্রি, ধ্রুবক আপডেট-সময় সমবর্তী গাছের ডেটা-কাঠামো?
যেমন AT

আমি প্রাকটিক্যাল লক-ফ্রি ডেটা স্ট্রাকচার লাইব্রেরি আগে ব্যবহার করেছি। লক-ফ্রি ট্রি ডেটা স্ট্রাকচারের তাদের কিছু সমর্থন রয়েছে। আপনি যা খুঁজছেন তা হয়ত আছে।
রেজা

উত্তর:


4

নিজে এবং নিজেকে সাহায্য করে না। লক-ফ্রি ডেটা স্ট্রাকচারে আপনার ডাটা স্ট্রাকচারটি পরিবর্তিত হওয়ার সাথে সাথে একক পরমাণু উদাহরণ থাকা দরকার। সমস্তউপস্থাপনার আক্রমণকারীদেরপরমাণু তাত্ক্ষণিক তাত্ক্ষণিক আগে এবং তত্ক্ষণাত্ কার্যকর হতে হবে।হে(1)

এর অর্থ হ'ল আপনি যদি ডেটা কাঠামোতে কোনও পরিবর্তন করছেন তবে গুরুত্বপূর্ণ বৈশিষ্ট্যটি হ'ল আপনি একটি ব্যক্তিগত ডেটা কাঠামোয় সমস্ত মোডগুলি করতে পারেন এবং তারপরে একটি একক পরমাণু নির্দেশে পরিবর্তনগুলি স্যুপ করতে পারেন।

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

উদাহরণস্বরূপ: আপনার যদি খাঁটি কার্যকরী গাছের ভারসাম্যযুক্ত গাছ থাকে তবে:

  1. গাছের গোড়ায় বর্তমান গ্লোবাল পয়েন্টারটি রেকর্ড করুন।
  2. একটি নতুন ট্রি তৈরি করুন যা নোড সন্নিবেশ করায় বা মুছবে। (এটি বর্তমানে গাছে থাকা নোডের সংখ্যার সময় এবং স্থানের ক্ষেত্রে লোগারিথমিক এবং এর মধ্যে মূল বিন্যাস থেকে মূল পর্যন্ত নতুন নোড তৈরি করা এবং ডাটা স্ট্রাকচারের পূর্ববর্তী সংস্করণের পুরানো অংশগুলিতে নতুন কিছু দেখানো রয়েছে)। )
  3. মূলত গ্লোবাল পয়েন্টারকে মূলের সাথে তুলনা এবং অদলবদল করুন। (দ্রষ্টব্য যে আপনি যদি পুরানো মূল পয়েন্টারটি রেকর্ড করার সময় এবং এখনকার মধ্যে আর কোনও পরিবর্তন ঘটে থাকে তবে এটি ব্যর্থ হতে পারে this যদি এটি ঘটে তবে আপনি আবার 1 ধাপে ফিরে যান এবং আবার চেষ্টা করুন This এটি তথাকথিত "আশাবাদী সম্মতি নিয়ন্ত্রণ" is)

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

হে((এন))হে(এন)


আমি মনে করি সক্রিয় অপেক্ষার কৌশলগুলি, যেমন তুলনা-ও-সোয়াপ সহ, সাধারণত "লক ফ্রি" বলা হয় তাই কিছু উপায় আছে, এমনকি পরিবর্তনীয় সেটিংয়েও।
রাফেল

সক্রিয় অপেক্ষার শব্দটির সাথে আমি পরিচিত নই (এবং গুগল সহায়তা করছে না)। (যদি আপনি কোগান এবং পেট্র্যাঙ্কের কাজ সম্পর্কে কথা বলছেন যা এটি লক-মুক্ত অ্যালগরিদমগুলিকে কীভাবে অপেক্ষা-মুক্ত করে তুলবে তা দেখায়)) আপনি কীভাবে সাধারণভাবে লক-মুক্তির জন্য পরিবর্তন আনতে পারেন সে সম্পর্কে একটি সম্পাদনা যুক্ত করেছি।
যুক্তি

"সক্রিয় অপেক্ষার" দ্বারা আমি বোঝাতে চাইছি এমন কিছু while ( !P ) { noOp(); } doWork();যেখানে একই বা একই রকম noOpহতে পারে sleep
রাফেল

ইন সম্পাদনা অংশ হিসাবে, চপল ডাটা স্ট্রাকচার লক-মুক্ত তৈরীর জন্য কৌশল উল্লেখ করেছে। নির্দেশিত হিসাবে, আমরা পুরো ডেটা স্ট্রাকচারটি অনুলিপি করি, অনুলিপিটিতে মোড তৈরি করি এবং তারপরে সিএএস আদিম ব্যবহার করি। তবে কীভাবে Copyপদক্ষেপটিকে পারমাণবিক করা যায়? এটির আর একটি কঠিন সমস্যা বলে মনে হচ্ছে atomic snapshot
হেনগ্সিন

@ চেঞ্জিন: সিএএসকে "প্রকাশিত" অপারেটর হিসাবে ভাবেন। ডেটা স্ট্রাকচারটি প্রকাশের আগে শুধুমাত্র সংশোধনকারী থ্রেডের অ্যাক্সেস থাকতে পারে। ডেটা স্ট্রাকচার প্রকাশের পরে এটি অপরিবর্তনীয়। অনুলিপি হওয়ার দরকার নেই কারণ একমাত্র থ্রেড অনুলিপি করতে পারে এমন একটি প্রকাশিত সংস্করণ, যা অপরিবর্তনীয়। যদি দুটি থ্রেড একযোগে পরিবর্তনের চেষ্টা করে তবে তারা উভয় একই অবিচ্ছেদ্য ডেটা কাঠামোটি অনুলিপি করে, তাদের স্থানীয় অনুলিপিগুলি সংশোধন করে এবং তারপরে একটি সিএএস অপারেশন সফল হয় এবং অন্যটি ব্যর্থ হয়। যেটি ব্যর্থ হয় তার পুনরায় কপি এবং আপডেট করা দরকার।
যুক্তি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.