এক্সট্রাক্টের সাথে কি অগ্রাধিকারের সারি রয়েছে ?


46

অগ্রাধিকার-সারি ইন্টারফেস প্রয়োগ করে এমন অনেকগুলি ডেটা স্ট্রাকচার রয়েছে:

  • সন্নিবেশ: কাঠামোতে একটি উপাদান sertোকান
  • গেট-মিন: কাঠামোর ক্ষুদ্রতম উপাদানটি ফিরিয়ে দিন
  • এক্সট্রাক্ট-মিন: কাঠামোর ক্ষুদ্রতম উপাদানটি সরিয়ে ফেলুন

এই ইন্টারফেসটি প্রয়োগকারী সাধারণ ডেটা স্ট্রাকচারগুলি হ'ল (সর্বনিম্ন) গাদা

সাধারণত, এই অপারেশনগুলির চলমান সময়গুলি:

  • : (কখনও কখনও ) ( লগ এন )O(1)O(logn)
  • গেট-মিন:O(1)
  • এক্সট্রাক্ট-মিন:O(logn)

ফিবানচি গাদা উদাহরণস্বরূপ এই চলমান বার অর্জন করা হয়ে। এখন, আমার প্রশ্নটি নিম্নলিখিত:

নিম্নলিখিত (amorised) চলমান সময় সঙ্গে একটি তথ্য কাঠামো আছে?

  • :O(logn)
  • গেট-মিন:O(1)
  • এক্সট্রাক্ট-মিন:O(1)

যদি আমরা structure সময় অনুসারে বাছাই করা ইনপুটগুলিতে এমন একটি কাঠামো তৈরি করতে পারি তবে উদাহরণস্বরূপ আমরা with সহ প্রাক-সাজানো ইনপুটগুলিতে লাইন ছেদ পেতে পারি চৌম্বকগুলি যদি আমরা 'স্বাভাবিক' অগ্রাধিকার সারি ব্যবহার করি তার চেয়ে কঠোরভাবে দ্রুততর হয়।( এন )O(n)o(nlogn)


আমি মনে করি একটি ভারসাম্য বিএসটি ব্যবহার করে, যখন এক্সট্রাক্ট-মিন কাজ করতে পারে তখন তা ভারসাম্য বজায় রাখে না । বা হতে পারে একটি এড়িয়ে যাওয়ার তালিকা।
1

@ এসভিক: স্কিপ তালিকাগুলি এলোমেলোভাবে হয়, যা আমি খুঁজছি তা নয়। আপনি যদি একটি বিএসটি সঙ্গে এটা করতে পারেন, তাহলে দারুণ, কিন্তু আমি মনে করি আপনি করতে হবে কিছু সমীকরণ ধরনের।
অ্যালেক্স টেন ব্রিংক 20'12

সাইড নোটে: এটি একটি বীজবদ্ধ প্রশ্ন এবং আমি উত্তরটি জানি তবে এটি এত সহজে সমাধান করা যায় না তা দেখে ভাল লাগছে। যদি কেউ উত্তরটি জানেন তবে তা দিতে দ্বিধা করবেন না :)
অ্যালেক্স টেন ব্রিঙ্ক

আপনি যদি এমোরিটাইজড আপডেটের সময় গ্রহণ করেন, তবে আপনি নিজের স্ট্যান্ডার্ড হিপ স্ট্রাকচার রাখতে পারেন এবং কেবল আপনার বিশ্লেষণে সামান্য পরিবর্তন করতে পারেন। আমার উত্তর নীচে দেখুন।
জো

উত্তর:


27

আমাদের ধারণাটি থ্রেডেড স্প্লে গাছ ব্যবহার করা । উইকিপিডিয়া নিবন্ধ ব্যতীত আমরা গাছগুলিকে থ্রেড করব যাতে প্রতিটি নোডের nextঅর্ডার ট্র্যাভারসালে তার উত্তরসূরির পয়েন্টার থাকে; আমরা startগাছের মধ্যে ক্ষুদ্রতম উপাদানের একটি পয়েন্টারও ধারণ করি ।

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

সন্নিবেশগুলি am অনুসৃত সময়ে সম্ভব; জিগ-জাগ (এবং কী নয়) এর ক্রিয়াকলাপগুলি এখানে গাছটিকে খুব সুন্দরভাবে ভারসাম্যযুক্ত করবে।O(logn)

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


2
আপনি যদি এক্সট্রাক্টমিনে স্পেল না করেন তবে কীভাবে এমুরিটাইজড বিশ্লেষণ কাজ করবেন তা আমার কাছে পরিষ্কার নয়। আপনি কি একটি ইঙ্গিত দিতে পারেন?
jbapple

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

9
সাবধান হন! স্প্লে গাছগুলি অগত্যা সুষম হয় না। দীর্ঘ সময় অ্যাক্সেস করা হয়নি এমন নোডগুলি গাছের খুব গভীর হতে পারে । বিশ্লেষণ মধ্য দিয়ে যেতে করতে, আপনাকে আছে splays বিশ্লেষণ করতে ব্যবহৃত একই সম্ভাব্য ফাংশন পরিপ্রেক্ষিতে তর্ক।
জেফি

20
  • :O(logn)
  • গেট-মিন:O(1)
  • এক্সট্রাক্ট-মিন:O(1)

এমোরিটাইজড সময়

অগ্রাধিকারের সারির সহজ বাস্তবায়ন (যেমন কোনও ভারসাম্য বিএসটি, বা স্ট্যান্ডার্ড বাইনারি মিন-হিপ) চালানোর সময়গুলি কেবল এক্সট্রাক্ট-মিন সন্নিবেশ করানোর জন্য চার্জ করে, এবং সর্বনিম্ন উপাদানটির একটি পয়েন্টার বজায় রেখে অর্জন করতে পারে। উদাহরণস্বরূপ, আপনার একটি সম্ভাব্য ফাংশন থাকতে পারে যা । তারপরে একটি নতুন উপাদান tingোকানো ও দ্বারা সম্ভাব্যতা বাড়ায় এবং তাই সন্নিবেশের আনুষাঙ্গিক ব্যয় এখনও তবে এক্সট্রাক্ট-মিন () সম্ভাবনা হ্রাস করে , এবং সুতরাং স্বীকৃত ব্যয়টি কেবল ।( লগ এন ) ( লগ এন ) Ω ( লগ এন ) ( 1 )cnlognO(logn)O(logn)Ω(logn)O(1)

সবচেয়ে খারাপ ক্ষেত্রে

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


1
কত চুপচাপ। আপনি ঠিক বলেছেন, আমার ধারণা এটিকে বাদ দেওয়ার জন্য আমার আরও শক্তিশালী কিছু দাবি করা উচিত ছিল। সুন্দর ধারণা :)
অ্যালেক্স দশ ব্রিংক

@ অ্যালেক্সটেনব্রিংক আপনি সবচেয়ে খারাপ ক্ষেত্রে মুছে ফেলার দাবি করতে পারেন । (যা দেখে মনে হয় অন্য উত্তরগুলির মধ্যে কিছু ছিল) আমি এই মামলার সমাধানের জন্য আমার উত্তরে একটি অনুচ্ছেদ যুক্ত করেছি। O(1)
জো

14

2-4 টি গাছ সনাক্ত স্থানে পরিবর্তন করেছে। এর অর্থ হল, আপনার যদি গাছের কোনও স্থানে পয়েন্টার থাকে তবে আপনি মোড়িত সময়ে সেখানে একটি উপাদান সরিয়ে বা যুক্ত করতে পারেন ।( 1 )O(1)O(1)

আপনি এইভাবে কেবল 2-4 টি গাছে ন্যূনতম উপাদান এবং মূল নোডের জন্য একটি পয়েন্টার রাখতে পারেন। সন্নিবেশগুলি রুট নোডের মধ্য দিয়ে যেতে হবে। সর্বনিম্নে পয়েন্টারটি আপডেট করা মুছে ফেলার পরে ক্ষুদ্রতর এবং ডিলিটমিনগুলি ( মোড়িত ) সময় হয়।O(1)

একটি আকর্ষণীয় পার্শ্ব নোট: লাল-কালো গাছগুলি 2-4 গাছ দেখার জন্য কেবল একটি উপায়। সি ++ 98 স্ট্যান্ডার্ড প্রত্যাশিত লাইব্রেরি ডিজাইনাররা একটি লাল-কালো-গাছ-ভিত্তিক ধারক সরবরাহ করার জন্য প্রবর্তক এবং মানটি নির্দিষ্ট করে যে সন্নিবেশ করা এবং মুছতে হবে পরিচিত স্থানে মোড়ের সময় (যা তারা "পুনরাবৃত্তি" বলে ডাকে) )। যাইহোক, এটি 2-2 টি গাছের চেয়ে লাল-কালো গাছের পক্ষে আসলেই অনেক বেশি জটিল, কারণ এটি অলসভাবে চিহ্নিত করার নোডগুলির প্রয়োজন যা পুনরায় রঙ করা দরকার। আমার জ্ঞানের মতে, সি ++ 98 স্ট্যান্ডার্ড লাইব্রেরির কোনও বাস্তবায়নই সেই নির্দিষ্ট প্রয়োজনটিকে মেটেনি।O(1)


8

অনুরোধ করে, প্রশ্নটি তৈরির পরে আমি এখানে সেই কাঠামোটি পেয়েছি:

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

কেবলমাত্র এই প্রাথমিক কাঠামোটি আপনাকে এই ক্রিয়াকলাপ দেয়:

  • অনুসন্ধান: একটি কী দেওয়া হয়েছে, সময়ে সংশ্লিষ্ট নোডকে একটি পয়েন্টার প্রদান করে ।O(logn)
  • সন্নিবেশ: একটি কী দেওয়া, কাঠামোতে কী সন্নিবেশ করানো, সময়ে সেই নোডে একটি পয়েন্টার ফিরিয়ে দেয় ।O(logn)
  • পূর্বসূরি / উত্তরসূরি: একটি পয়েন্টার দেওয়া, উত্তরাধিকারী বা পূর্বসূরিকে সময়ে প্রদান করে।O(1)
  • গেট-মিন / সর্বাধিক: পয়েন্টারটি সর্বনিম্ন বা সর্বোচ্চকে দেয়।

স্কাইপোগা গাছের বিশ্লেষণে, মুছে ফেলার ভারসাম্যহীন ওভারহেডকে হিসাবে বিশ্লেষণ করা হয় , তবে বিশ্লেষণটি আসলে এর ভারসাম্য দেয় (যা কাগজে উপেক্ষা করা হয় যেহেতু তারা count মুছে ফেলতে হবে এমন নোডটি খুঁজে পেতে সময়ও গণনা করে )। সুতরাং, যদি আমরা একটি নোডের একটি পয়েন্টার আছে, আমরা এটা ধ্রুব সময় মুছে দিতে পারেন (যদি আপনি মধ্যে থ্রেডেড বাইনারি অনুসন্ধান বৃক্ষ এটি করতে পারেন সময়) এবং সঙ্গে মিলিত ভারসাম্যহীন ওভারহেড, এটি একটি সময় মুছে দেয়: ( 1 ) ( লগ এন ) ( 1 ) ( 1 ) ( 1 )O(logn)O(1)O(logn)O(1)O(1)O(1)

  • মোছা: একটি পয়েন্টার দেওয়া, সময়ে নোড মুছে ফেলা হয় ।O(1)

এর সংমিশ্রণ:

  • এক্সট্রাক্ট-মিনিট / সর্বাধিক: সময়ে সর্বনিম্ন / সর্বাধিক নোড মুছে দেয়O(1)

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

কিছু অন্যান্য জিনিস:

  • রচনা: সাজানো ক্রমে প্রদত্ত কীগুলি, সময়ে স্কিপবোটের হিপ তৈরি করুন ।nO(n)
  • ভারসাম্য: গাছের ভারসাম্য রাখুন সুতরাং এটি সময়ে একটি সঠিকভাবে ভারসাম্য বাইনারি অনুসন্ধান গাছ গঠন করে (অনুসন্ধানের ওভারহেড হ্রাস করে (আপনি কাগজটি যেভাবে নির্দেশ দিয়েছিলেন তার চেয়ে দ্রুতগতিতে এটি করতে পারেন, ব্যবহার করে পূর্বসূরী / উত্তরসূরি পয়েন্টার)।O(n)

এবং পরিশেষে, আমি নিশ্চিত যে আপনি এই ক্রিয়াকলাপগুলিকে সমর্থন করতে পারবেন তবে আমি নিশ্চিত এটি জানার আগে এগুলি সম্পর্কে আরও কিছুটা চিন্তা করা দরকার:

  • সন্নিবেশ-নতুন-মিন / সর্বাধিক: কাঠামোতে ইতিমধ্যে কোনও চাবি থেকে ছোট / বৃহত্তর একটি কী প্রদান করা হয়েছে, structure সময়ে সেই নোডে একটি পয়েন্টার ফিরিয়ে কাঠামোর মধ্যে কীটি সন্নিবেশ করানো হয় ।O(1)

মূল অন্তর্দৃষ্টিটি হ'ল বলির ছাগল গাছ আপনাকে আশ্বাস দেয় যে পুনরায় ব্যালেন্স ছাড়াই কোনও নোড মুছে ফেলা দীর্ঘকালীন অন্যান্য ক্রিয়াকলাপগুলিকে প্রভাবিত করে না, এমনকি আপনি অনেকগুলি নোড মুছে ফেললেও।
রাফেল

আমি বলি ছাগল গাছগুলিতে মুছে ফেলার দুটি উপায় জানি। একটি উপায়ে মিরর সন্নিবেশ করা হয় এবং এটি মোড়িত সময়। অন্য যেভাবে আমি বিশ্বব্যাপী পুনর্নির্মাণের ব্যবহারের কথা শুনেছি এবং নমনীয়, তবে কীভাবে সেই ক্ষেত্রে থ্রেডিং বজায় রাখতে হয় তা আমি জানি না। গাছের এমন একটি অংশে একটি নতুন কী প্রবেশ করানোর কল্পনা করুন যা সমস্ত মুছে ফেলা চাবি এখনও অপসারণ করা যায়। সময়ের মধ্যে প্রবেশ করানো কীটির পূর্বসূরিকে আপনি কীভাবে খুঁজে পাবেন ? O(lgn)O(1)O(lgn)
jbapple

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

আহ, আমি এখন বুঝতে পারি।
jbapple

2

একটি নরম গাদা একটি দ্বিপদী সারি একটি সূক্ষ্ম পরিবর্তন। ডেটা স্ট্রাকচারটি ত্রুটি পরামিতি সাথে আনুমানিক । এটি সন্নিবেশ, মোছা, মেল্ড এবং ফাইমমিন সমর্থন করে। Amortized প্রতিটি অপারেশন জটিলতা হয় , সন্নিবেশ করুন যা লাগে করা ছাড়া তাদের সময়। নরম গাদা এর অভিনবত্ব তুলনা-ভিত্তিক মডেল মধ্যে একটি গাদা জটিলতা উপর আবদ্ধ লগারিদমিকের প্রহার হয়। তথ্য তাত্ত্বিক প্রতিবন্ধকতা ভাঙার জন্য, কিছু কীগুলির মানগুলি কৃত্রিমভাবে বাড়িয়ে ডেটা স্ট্রাকচারের এনট্রপি হ্রাস করা হয়। এটিকে কীগুলি দুর্নীতিবাজ বলা হয় । ডেটা স্ট্রাকচার পুরোপুরি পয়েন্টার-ভিত্তিক (কোনও অ্যারে বা সংখ্যাগত অনুমান নয়) এবং কোনও মানের জন্য অনুকূলϵO(1)log(1/ϵ)ϵ তুলনা ভিত্তিক মডেল।

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

মূল, স্পষ্ট এবং সুন্দরভাবে লিখিত কাগজের জন্য, বার্নার্ড চ্যাজেল, দ্য সফট হিপ: অনুকূল ত্রুটি হারের সাথে আনুমানিক অগ্রাধিকার সারি, এসিএমের জার্নাল, 47 (6), পৃষ্ঠা 1012-1027, 2000 দেখুন । বিকল্প বাস্তবায়ন এবং বিশ্লেষণের জন্য যা SODA'09 থেকে সহজ এবং আরও স্বজ্ঞাত বলে দাবি করেছে, ক্যাপলান এইচ এবং জুইক ইউ, চ্যাজেলের নরম গাদা, ২০০৯ এর একটি সহজ বাস্তবায়ন এবং বিশ্লেষণ দেখুন


যদিও একটি অত্যন্ত আকর্ষণীয় ডেটাস্ট্রাকচার, নরম হিপগুলি সঠিক নয়: ফাইন্ডমিন এমন কোনও মান প্রত্যাবর্তন করতে পারে যা সর্বনিম্ন নয়, তবে এটি কেবল আনুমানিক সর্বনিম্ন। যাইহোক লিঙ্কগুলির জন্য ধন্যবাদ :)
অ্যালেক্স দশ ব্রিং

1
@ অ্যালেক্সটেনব্রিংক: ডেটা স্ট্রাকচারের বিন্দু (অনেক সম্ভাব্য অ্যালগরিদমের মতো) আপনি সঠিক উত্তর পেতে একটি আনুমানিক ডেটা-কাঠামো ব্যবহার করতে পারেন। প্রকৃতপক্ষে নরম স্তূপগুলির আনুমানিক প্রকৃতি এটিকে ন্যূনতম বিস্তৃত গাছের জন্য একমাত্র পরিচিত লিনিয়ার টাইম অ্যালগরিদমে ব্যবহৃত হতে বাধা দেয়নি।
জেরেমি

2

ঠিক আছে, শেষ পর্যন্ত আপনি যে জটিলতাটি সন্ধান করেছিলেন তা পেয়ে গেল এবং সর্বোত্তম, আমি এটি সাহিত্যে খুঁজে পেয়েছি:

সবচেয়ে খারাপ ক্ষেত্রে জটিলতা

মুছুন :O(1)

মুছুন-মিনিট :O(1)

সন্ধান করুন-মিনিট :O(1)

সন্নিবেশ :O(log n)

উল্লেখ

যদি মেল্ডকে রৈখিক সময় নেওয়ার অনুমতি দেওয়া হয় তবে ডায়েজ এবং রামন এর আঙুলের অনুসন্ধানের গাছগুলি ব্যবহার করে সবচেয়ে খারাপ পরিস্থিতিতে ধ্রুবক সময়ে ডিলিট- এমআইএনকে সমর্থন করা সম্ভব [3]। তাদের ডাটা স্ট্রাকচার ব্যবহারের MAKEQUEUE , FINDMIN , DELETEMIN , মুছে দিন সবচেয়ে খারাপ ক্ষেত্রে সময় সমর্থিত হতে পারে , ঢোকান সবচেয়ে খারাপ ক্ষেত্রে সময় এবং মেশানো সবচেয়ে খারাপ ক্ষেত্রে সময় ।O(1)O(log n)O(n)

ব্রোডাল, গার্থ স্টলটিং। 'ফাস্ট মেলটেবল অগ্রাধিকার ক্যু'। অ্যালগোরিদম এবং ডেটা স্ট্রাকচার সম্পর্কিত চতুর্থ আন্তর্জাতিক কর্মশালার কার্যক্রমে, 282-2290 90 WADS '95। লন্ডন, যুক্তরাজ্য, যুক্তরাজ্য: স্প্রঞ্জার-ভার্লাগ, 1995।

[3]: ডায়েজ, পল এফ, এবং রাজীব রমন। 'একটি কনস্ট্যান্ট আপডেট টাইম ফিঙ্গার সার্চ ট্রি'। তথ্য প্রসেসিং লেটার 52, নং। 3 (1994): 147 - 154।

যদিও এটি গণনার র‌্যাম মডেল ব্যবহার করে :

আমাদের ডেটা স্ট্রাকচারটি ইউনিট-ব্যয় পরিমাপ এবং লগারিদমিক শব্দের আকার সহ র্যান্ডম-অ্যাক্সেস মেশিন (র‌্যাম) মডেল ব্যবহার করে;

সম্প্রতি, গণনা সমাধানের একটি পয়েন্টার-মেশিন মডেল দেওয়া হয়েছে [1]

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


2

দুটি ডেটা-কাঠামো: একটি অ্যারে এবং একটি বাইনারি ট্রি বজায় রেখে এই সমস্যাটির দিকে এগিয়ে যাওয়া।

অ্যারেতে সূচি বজায় রাখতে, আপনার আগে আবদ্ধ থাকতেন; তবে অতি সাম্প্রতিককালে ক্রোনোগ্রাম প্রযুক্তি থেকে বিশ্লেষণ সংশোধন করে এটি কাটিয়ে উঠেছে। নতুন [নিম্ন] সীমা-প্রোব মডেল 1 -তে অনুরূপ সমস্যার জন্য প্রমাণিত হয়েছে । সেই নিবন্ধটি পড়া থেকে; এটি আমার বোঝার বিষয়বস্তু তালিকা উপস্থাপনের সমস্যার ক্ষেত্রেও প্রযোজ্য ।Ω(lognloglogn)Ω(logn)

এখন আপনি যদি বাইনারি গাছকে আপনার অ্যারে এবং পুনরায় ভারসাম্য প্রতি প্রতিটি আপডেটগুলি পুনরায় সূচনা করেন তবে আপনার কাছে: জটিলতা রয়েছে। ( লগ এন )O(logn)O(logn)

nullO(logn)

O(1)O(1)

O(logn)O(1)delete_at(idx)


1 পাত্রস্কু, মিহাই এবং এরিক ডি ডামাইন। "সেল-প্রোব মডেলটিতে লোগারিদমিক লোয়ার সীমানা” "সিয়াম জে.কম্পুট। 35, না। 4 (এপ্রিল 2006): 932–963। ডোই: 10,1137 / S0097539705447256।


1
O(logn)

"বাইনারি অনুসন্ধান গাছকে একটি অ্যারেতে থ্রেড" বলতে কী বোঝায়?
jbapple

@AT: আমি jbapple এর অনুভূতি শেয়ার করি।
রাফায়েল

Ω(k)kO(1)

আপনার আপডেট, যাতে আপনি ধ্রুবক সময়ে ঘূর্ণন বাস্তবায়নের ব্যাখ্যা করেন, অ্যারে তে কাজ করে না। এই উত্তরটি এখনও ভুল। আপনি যে টারজন পেপারটি উল্লেখ করেছেন সেটি নোড এবং পয়েন্টারগুলির সাথে সঞ্চিত গাছ সম্পর্কে।
jbapple

-2

O(1)O(log log n)

2007 এর কাগজটি দেখুন: অগ্রাধিকারের সারি এবং মিক্কেল থারুপ দ্বারা বাছাইয়ের মধ্যে সমতা।

O(n log log n)


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

-2

বিশ্লেষণ

সন্নিবেশ :o(n log log n)

অনুসন্ধান :o(log log n)

মুছুন :O(1)

স্থান :O(n)

গেট-মিন :O(1)

এক্সট্রাক্ট-মিন :O(1)

বাস্তবায়ন

  1. একটি স্বেচ্ছাসেবী (ধ্রুবক) উপাদানের সংখ্যার বাইরে একটি তালিকা তৈরি করুন, say বলুন:O(1)
  2. তালিকাটি বাছাই করুন: =O(6)O(1)
  3. প্রতি পরবর্তী নোডের জন্য সন্নিবেশ বিন্দু , দ্বিতীয় উপাদান হতে হবে ( ') POS (-1 <, জন্য +1> এবং দুই args সঙ্গে যা তোমাদের কোন / ফিনিস শুরু উপর নির্ভর করে জন্য: এবং ডায়নামিক ইন্টারপোলেশন ব্যবহার করে পাওয়া যাবে অনুসন্ধান করুন [1] দেখুন:k±
    ((k>nsize1)(k<n0)((k<ni)(k>ni+1)))
    o(log log n)

[1]: অ্যান্ডারসন, আরিন এবং ক্রিস্টার ম্যাটসন। 'ও-তে ডায়নামিক ইন্টারপোলেশন অনুসন্ধান (লগ লগ এন) সময়'। অ্যান্ডম্যাটা, ল্যাঙ্গুয়েজস এবং প্রোগ্রামিং-এ, আন্দ্রেজেজ লিঙ্গাস, রল্ফ কার্লসন, এবং সান্তে কার্লসন, by০০: ১৫-২– সম্পাদিত। কম্পিউটার সায়েন্সে লেকচার নোটস। স্প্রিঞ্জার বার্লিন / হাইডেলবার্গ, 1993. http://dx.doi.org/10.1007/3-540-56939-1_58


2
ঠিক আছে, sertোকানোর সময়টি চিহ্ন থেকে দূরে।
রাফেল

এটি উপায় খুব স্কেচি। উদাহরণস্বরূপ, , , এবং কী? এন 0 এন আমি এন আমি + + 1nsize1n0nini+1
জুহো

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

O(log n)

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