প্রায় একই আকারের ট্রেপ-জাতীয় ডেটা স্ট্রাকচারের আরও দ্রুত যোগদান


16

দুটি এভিএল গাছ T1 এবং T2 এবং একটি মান tr যে xT1,yT2,x<tr<y , tr আর মান সহ একটি নতুন এভিএল গাছ তৈরি করা সহজ is মধ্যে T1 এবং T2 সময় O(1+|h(T1)h(T2)|) , যেখানেh(T) একটি গাছ উচ্চতা উল্লেখ করেT যতদিন গাছ তাদের উচ্চতা স্টোর) (।

এটি লাল-কালো গাছগুলির পক্ষেও সম্ভব এবং আমি অন্যান্য অনেক ধরণের সুষম গাছও ধরে নিয়েছি।

ট্র্যাপ বা ট্র্যাপের মতো ডেটা স্ট্রাকচারের জন্য এটি কি সম্ভব? যদি আমরা ছেড়ে tr ?

O(min(h(T1),h(T2)))


এখানে প্রায় কিছু একই আকারের এভিএল গাছগুলির সাথে দ্রুত যোগদানের জন্য আমি লিখেছি এমন কয়েকটি হাস্কেল কোড: হাস্কেল.প্যাসেটিবিন.com
jbapple

আমার সন্দেহ যে এটা সম্ভব, কারণ এটি বলে মনে হয় (ক প্রমাণ ছাড়া) যে নতুন নোডের প্রত্যাশিত গভীরতা (মান t_r ধারণকারী) একটি ধ্রুবক চেয়ে বেশি এমনকি ক্ষেত্রে যেখানে জ (T_1) = জ (T_2)।
সোসোশি ইতো

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

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

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

উত্তর:


3

না, অগ্রাধিকারগুলি এলোমেলো হয়ে থাকলে সাধারণ ট্র্যাপের সাহায্যে এটি করা সম্ভব নয়।

যথাযথ দাবি আমি করব যেটি এলোমেলো অগ্রাধিকার সহ দুটি সমান আকারের ট্র্যাপগুলিতে এই জাতীয় সংশ্লেষ সম্পাদনের জন্য প্রত্যাশায় পয়েন্টার আপডেট করার প্রয়োজন ।Θ(logn)

এখানে একটি মোটামুটি প্রমাণ স্কেচ:

অপারেশন সম্পাদনের প্রত্যাশায় আপনাকে যে পয়েন্টারের পরিবর্তন করতে হবে তা বিবেচনা করুন। এটা একটা প্রমাণ করা আরো সহজ আবদ্ধ যদি আমরা সন্নিবেশ না টি R কিন্তু একত্রীকরণ টি 1 এবং টি 2 । বিবেচনা করুন ডান মেরুদণ্ড S 1 এর টি 1 এবং বাম মেরুদণ্ড S 2 এর টি 2এস 1 লাল এবং এস 2 নীল উপাদানগুলিকে রঙ করুন । অর্ডার এস 1এস 2Θ(logn)trT1T2S1T1S2T2S1S2S1S2অগ্রাধিকার দ্বারা প্রতিবার এই অনুক্রমের রঙ পরিবর্তিত হওয়ার সময় আমাদের একটি পয়েন্টার পরিবর্তন করতে হবে। যেহেতু উভয় কাঁটা আকার উচ্চ সম্ভাবনা সঙ্গে, এবং অগ্রাধিকার র্যান্ডম হয়, এটি দেখতে যে ক্রমানুসারে রঙ পরিবর্তনের # এছাড়াও খুব কঠিন না Θ ( লগ ) । সুতরাং আমরা আপডেট করতে হবে Θ ( লগ ) (যোগ ছাড়া একত্রীকরণ জন্য পয়েন্টার টি )।Θ(logn)Θ(logn)Θ(logn)tr

এখন, মার্জ করার সময় যুক্ত করা আসলে খুব বেশি উপকার করে না। ক্রম: যে ক্ষেত্রে পয়েন্টার পরিবর্তন সংখ্যা কম নিম্নরূপ বেষ্টিত করা যেতে পারে এস 1এস 2{ T } অগ্রাধিকার দ্বারা। ক্রমের টি আর এর চেয়ে কম কিছু মুছুন । তারপরে ফলাফলের ক্রমের # রঙ পরিবর্তন আমাদের নিম্ন সীমাবদ্ধ bound যেহেতু টি R র্যান্ডম অগ্রাধিকার রয়েছে, সাবট্রি চূড়ান্ত treap এটা এ রুট প্রত্যাশিত উচ্চতার হে ( 1 ) , তাই এটি শুধুমাত্র হয়েছে হে ( 1 ) এর নোড এস 1trS1S2{tr}trtrO(1)O(1) প্রত্যাশা এটা কম অগ্রাধিকার সঙ্গে, তাই আমরা শুধুমাত্র হারিয়ে হে ( 1 ) আমাদের নিম্ন মুখী যখন যুক্ত করতে পয়েন্টার পরিবর্তন টি S1S2O(1)tr

এখন, এটি বলেছিল, সম্ভবত "ট্র্যাপের মতো" ডেটা কাঠামো পাওয়ার একটি উপায় রয়েছে যা ধ্রুবক প্রত্যাশিত সময়কে মার্জ করার অনুমতি দেয়।


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

আপনার উত্তরের জন্য ধন্যবাদ. আমি প্রশ্নের শিরোনাম এবং পাঠ্য পরিবর্তন করেছি যাতে কম অস্পষ্ট হয়।
jbapple

1

আপডেট: এই যোগদানের ক্রিয়াকলাপটির ভুল সম্পর্কে আপডেটের জন্য নীচে দেখুন

এখানে একটি সম্ভাব্য সমাধানের একটি খুব রুক্ষ স্কেচ দেওয়া হয়েছে:

আমি মনে করি আমার এক ধরণের এলোমেলোভাবে ভারসাম্যযুক্ত বি + - ট্রি ব্যবহার করে এই সমস্যার সমাধান হতে পারে। ট্রাপগুলির মতো, এই গাছগুলির একটি অনন্য উপস্থাপনা রয়েছে। ট্রাপগুলির বিপরীতে, তারা কয়েকটি কীগুলি একাধিকবার সঞ্চয় করে। বেন্ট এট আল এর "বায়াসড সার্চ ট্রি" থেকে প্রতিটি কী কেবলমাত্র সর্বোচ্চ (যেটি মূলের নিকটে-মূলের মধ্যে দেখা যায়) স্তরে সংরক্ষণ করার কৌশলটি ব্যবহার করা সম্ভব হবে might

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

প্রতিটি অভ্যন্তরীণ নোড (যেমন বি + + -trees) বৃহত্তম কী আছে তার বংশধর পাতার। প্রতিটি প্রাকৃতিক সংখ্যা উপস্থিত রয়েছে আমি গাছ এ রুট উচ্চতা ইঙ্গিত বনাম , এবং সঙ্গে যুক্ত বিট প্রবাহ থেকে আমি + + 1 ম অনওয়ার্ড বিট। গাছ এ রুট প্রতিটি চাবি যদি বনাম তার বিট প্রবাহে একই প্রথম বিট আছে, প্রতিটি শিশু বনাম পাতার নেই এবং আমি হয় 1 । অন্যথায়, ভি এর বাচ্চারা অভ্যন্তরীণ নোড যাগুলির কীগুলির সাথে যুক্ত বিট স্ট্রিমের একই আই বিট থাকে।vkivki+1vvi1vi

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

নীচের কীগুলির (বিট স্ট্রিমের) তালিকা এবং নীচের গাছটি উপস্থাপন করে। বিট স্ট্রিমের উপসর্গগুলিতে, একটি '' ' মানে কিছুটা। এটি হ'ল, কোনও 'কী'র জন্য বিট স্ট্রিমটি প্রথম স্থানে 0 এর সাথে অন্যের মতো একই গাছ উত্পাদন করে, অন্য কোনও কী'র বিট স্ট্রিমটি পৃথক নয় বলে ধরে নিবে।

A 0...
B 00..
C 10..
D 0...
E 0011
F 1...
G 110.
H 0001


        ____H____
       /         \
      E           H
      |          / \
    __E__       G   H
   /  |  \      |   |
  B   C   E     G   H
 / \  |  / \   / \  |
A   B C D   E F   G H

একটি নির্দিষ্ট অভ্যন্তরীণ নোডের প্রতিটি সন্তানের বিট স্ট্রিমের প্রথম স্থানে একই বিট থাকে। এটিকে পিতামাতার "রঙ" বলা হয় - 0 টি লাল, 1 সবুজ। সন্তানের বিট স্ট্রিমের প্রথম বিটের উপর নির্ভর করে একটি "স্বাদ" থাকে - 0 চেরি, 1 পুদিনা। পাতায় স্বাদ আছে, তবে রঙ নেই। সংজ্ঞা অনুসারে, একটি চেরি নোডের সবুজ পিতা থাকতে পারে না, এবং একটি পুদিনা নোডের লাল পিতা থাকতে পারে না।

n21n এবং প্রত্যাশিত মান হ'ল(n+1)/2। সব জন্যএন2, এই3(n1i1)(n+1)/2n2, তাই আশা করা গাছ উচ্চতারহে(LGএন)34nO(lgn)

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

1/21/2O(1)1/4, এবং পরবর্তী পুনরাবৃত্ত কলগুলি সর্বদা বিভিন্ন বর্ণের গাছে থাকে তাই একই বিশ্লেষণ প্রযোজ্য।

1/2O(1)

O(1)

a 01110
b 110..
c 10...
d 00000

দ্বারা নির্মিত গাছটির [a,b]উচ্চতা 2 হয়, দ্বারা নির্মিত গাছটির [c,d]উচ্চতা 2 হয়, এবং তৈরি গাছের joinEqual (tree [a,b]) (tree [c,d])উচ্চতা 3 হয় তবে, তৈরি গাছটির [a,b,c,d]উচ্চতা 5 হয়।

এই ত্রুটিটি খুঁজে পেতে আমি এখানে কোডটি ব্যবহার করেছি

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