প্রাথমিকভাবে খালি বি + গাছের চাবি দিয়ে রেকর্ড কীভাবে প্রবেশ করবেন?


11

ক্রম (1, 2, 3, 4, 5) দিয়ে কীগুলি দিয়ে রেকর্ডগুলি প্রবেশের ফলাফলটি প্রাথমিকভাবে খালি বি + অর্ডারের এম = 3 তে প্রদর্শিত হবে প্রতিবেশীদের চাবি। কম উচ্চতার গাছ থাকতে আলাদা কী দিয়ে কীগুলি দিয়ে রেকর্ডগুলি প্রবেশ করা সম্ভব?

রিলেশনাল ডিবিএমএস ইন্টার্নাল থেকে অধ্যায় 5: গতিশীল ট্রি-স্ট্রাকচার অর্গানাইজেশন, পৃষ্ঠা 50

আমি এটিতে এখনও ভাল নই আমি চেষ্টা করেছি the বাম দিকে এবং> ডানদিকে:

1,2 প্রবেশের আগ পর্যন্ত:

এখানে চিত্র বর্ণনা লিখুন

তারপরে যতদূর আমাদের নোডকে বিভক্ত করতে হবে এবং প্রতিবেশীদের কীগুলি পুনরায় বিতরণ করতে হবে না (আমি এটিকে পুত্র নোড হিসাবে বুঝি) আমি কেবলমাত্র 2 এর সাথে ঘরের ডানদিকে প্রবেশ করিয়েছি

এখানে চিত্র বর্ণনা লিখুন

5 সন্নিবেশ করার সময় এবং আমি একই কাজটি চালিয়ে যাচ্ছি:

এখানে চিত্র বর্ণনা লিখুন

তবে এটি বেশ অদ্ভুত, আমি এর মতো খালি নোডগুলি কখনও দেখিনি ... এবং আমি জানি না যে এটি কিছু খুব বেসিক বি-ট্রি বৈশিষ্ট্যকে সম্মান করে কিনা:

  • প্রতিটি নোডের সর্বাধিক (m-1) কী এবং কমপক্ষে (⌈ (m / 2) ⌉-1) কী থাকে যদি না কোনও চাবি খালি থাকে এবং আমি কীটিকে "পয়েন্টার" হিসাবে বুঝতে পারি।

প্রথম প্রয়াস: আদেশে ত্রুটি একটি দ্ব্যর্থক গাছের উদ্ভব করেছে

শুরুতে আমি ভুল বুঝেছিলাম যে "অর্ডার" কী (নোডের প্রতি শিশুদের সর্বাধিক সংখ্যা)। সুতরাং আমি ভেবেছিলাম একটি নোডের তিনটি স্থান থাকতে পারে (এবং তাই 4 বাচ্চা order আমি অর্ডার গাছ তৈরি করেছি 4 আমি মনে করি:

1,2,3 সন্নিবেশ পর্যন্ত:

এখানে চিত্র বর্ণনা লিখুন

৪ টি সন্নিবেশ, যতক্ষণ না আমাদের নোডকে বিভক্ত করতে হবে এবং প্রতিবেশীদের চাবি পুনরায় বিতরণ করতে হবে না (যা পরস্পরবিরোধী বলে মনে হচ্ছে) আমি ডান পাতায় ১,২,৩ এবং ৪,৫ এর পরে 3 এ যাব:

4 ও 5 সন্নিবেশ করার পরে বি অর্ডার 3 টি গাছ

উত্তর:


6

আমি মনে করি আপনার পৃষ্ঠার তৈরিটি উল্টো দিকে আছে। যখন কোনও নোড বিভক্ত হয় তখন এটি হায়ারার্কির নিচে আরও নোড তৈরি করে না (আপনার নামের মধ্যে পুত্র নোড)। পরিবর্তে এটি মূলের দিকে আরও উপরের দিকে তৈরি করে । বইটি যেমন বলেছে

নোট করুন যে বৃদ্ধির গাছের শীর্ষে রয়েছে এবং এটি একটি বি-গাছের একটি স্বতন্ত্র বৈশিষ্ট্য যা গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি নিশ্চিত করে যে এটি সর্বদা একই স্তরে সমস্ত পাতা থাকে এবং প্রতিটি নোড অন্তত পৃথক থাকে ensure 50% পূর্ণ।

(আমার জোর।)

লিঙ্কযুক্ত ইবুক থেকে:

সংজ্ঞা 5.1 AB – অর্ডার মি গাছ (এম ≥ 3) ... প্রতিটি নোডে সর্বাধিক মি - 1 কী থাকে

অনুশীলনটি মি = 3 এর জন্য, তাই নোডের জন্য সর্বাধিক 2 টি কী।

প্রথম দুটি কী সহজ - তারা প্রথম পৃষ্ঠায় যায়:

A:[1,2]

আমি ASCII শিল্প ব্যবহার করতে যাচ্ছি। আমি প্রতিটি পৃষ্ঠাগুলি তাদের তৈরি ক্রম অনুসারে লেবেল করব এবং পৃষ্ঠার মধ্যে কী / পয়েন্টার দেখাব। সুতরাং পৃষ্ঠা পি কী মান 1 এবং কে 2 থাকবে P:[k1,k2]

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

A:[1,2]    B:[3, ]

তবে এ তো গাছ নয়! বই যেমন বলে:

[নতুন নোড] এর পয়েন্টারটি, .. [বর্তমান নোডের] এর পিতা নোডের মধ্যে isোকানো হয়েছে [এই নোডে [অর্থাৎ পিতা নোড] সন্নিবেশ অপারেশনটি পুনরাবৃত্তি করছে। এই বিভাজন এবং সরানোর প্রক্রিয়াটি মূল পর্যন্ত প্রয়োজন পর্যন্ত চালিয়ে যেতে পারে এবং যদি এটি বিভাজন করা আবশ্যক তবে একটি নতুন মূল নোড তৈরি হবে ..

(প্রসেসিং দেখানোর জন্য আমার জোর গাছের পাতা নীচে না মূলের দিকে চালিয়ে যায়))

সুতরাং আমাদের অবশ্যই নতুন পৃষ্ঠায় (খ) একটি পয়েন্টার রেখে দিতে হবে বর্তমান পৃষ্ঠার (এ) পিতাকে। একটি নতুন মূল নোড থাকতে হবে:

      C:[2,3]
      /     \
A:[1,2]    B:[3, ]

আমার কোনও শিশু (পুত্র) নোডের সর্বাধিক মানটির দিকে ইশারা করে নন-পাতাগুলি পাতায় পয়েন্টার রয়েছে। আপনার লিঙ্কযুক্ত পাঠ্য এটি আলাদাভাবে করতে পারে তবে ফলাফলটি সমান হবে।

মূল মান 4 উপস্থিত; অ্যালগরিদম অনুসরণ করে আমরা কোন পৃষ্ঠায় থাকা উচিত তা সন্ধান করতে চাই। এটি পৃষ্ঠা বি হওয়া উচিত এটির জন্য জায়গা রয়েছে তাই আমরা সেই পৃষ্ঠাটি এবং পৃষ্ঠা সিটিতে পয়েন্টারটি আপডেট করব:

      C:[2,4]
      /     \
A:[1,2]    B:[3,4]

পরবর্তী আমরা কী 5 সন্নিবেশ করবো এটি বি পৃষ্ঠাতে যাওয়া উচিত তবে এটি পূর্ণ। সুতরাং এটি বিভক্ত হয়

      C:[2,4]
      /     \
A:[1,2]    B:[3,4]   D:[5, ]

আমাদের অবশ্যই পিতা নোড আপডেট করতে হবে। এটি খুব পূর্ণ, তাই এটি বিভক্ত হয়:

      C:[2,4]    E:[5, ]
      /     \         \
A:[1,2]    B:[3,4]   D:[5, ]

বিভাজনটি প্রচার করে এবং একটি নতুন মূল নোড ফর্ম:

            F:[4,5]
            /     \
      C:[2,4]    E:[5, ]
      /     \         \
A:[1,2]    B:[3,4]   D:[5, ]

উপরের দিকে বাড়ার সাথে গাছ প্রতিটি শাখায় অভিন্ন গভীরতা বজায় রাখে। অনুমানযোগ্য পারফরম্যান্সের জন্য এটি গুরুত্বপূর্ণ। (কেউ কেউ বলছেন যে বি-ট্রি এ বিটি একই কারণে "ভারসাম্যপূর্ণ"।)


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

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


আমি কীভাবে একটি বি-ট্রি বৃদ্ধি করে তার এই ইন্টারেক্টিভ সিমুলেশনটি জুড়ে এসেছি ।

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