সেগমেন্ট গাছ, অন্তর গাছ, বাইনারি ইনডেক্স গাছ এবং ব্যাপ্তি গাছের মধ্যে পার্থক্য কী?


200

বিভাগের গাছ, অন্তরবৃক্ষ গাছ, বাইনারি সূচকযুক্ত গাছ এবং পরিসীমা গাছের মধ্যে পার্থক্য কী:

  • মূল ধারণা / সংজ্ঞা
  • অ্যাপ্লিকেশন
  • পারফরম্যান্স / উচ্চ মাত্রা / স্থান ব্যবহারের ক্রম

দয়া করে কেবল সংজ্ঞা দিন না।


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

7
এটি স্ট্যাকওভারফ্লো . com / প্রশ্নগুলি / 2795989 /… তে উত্তর দেওয়া হয়নি, সেখানে উত্তরটি কেবল সংজ্ঞা দেয়।
আদিত্য

12
এটা কিভাবে বিস্তৃত? "X এবং y এর মধ্যে কিছু পার্থক্য কী?" এটি যতটা স্পষ্ট এবং কেন্দ্রীভূত হয় এটি একটি খুব ভাল প্রশ্ন।
আইভ্ল্যাড

16
এবং এই কোথাও উপলব্ধ জন্য ভাল উত্তর নেই। একটি ভাল উত্তর সম্প্রদায়ের জন্য দুর্দান্ত হবে
আদিত্য

22
এই ডেটা স্ট্রাকচারগুলির বেশিরভাগই (ফেনউইক গাছ বাদে) এই পিডিএফটিতে পর্যালোচনা করা হয়: "অন্তর, বিভাগ, ব্যাপ্তি এবং অগ্রাধিকার অনুসন্ধান গাছ" (ডিটি লি দ্বারা)। অথবা আপনি এই বইটি থেকে একটি অধ্যায় হিসাবে এটি পড়তে পারেন: "ডেটা স্ট্রাকচার এবং অ্যাপ্লিকেশনগুলির হ্যান্ডবুক"
ইভজেনি ক্লুয়েভ

উত্তর:


318

এই সমস্ত ডেটা স্ট্রাকচার বিভিন্ন সমস্যা সমাধানের জন্য ব্যবহৃত হয়:

  • সেগমেন্ট ট্রি ট্রি অন্তরগুলি সঞ্চয় করে এবং " এইগুলির মধ্যে কোনটির মধ্যে একটি প্রদত্ত পয়েন্ট থাকে " কোয়েরিগুলির জন্য অনুকূলিত ।
  • অন্তরবৃক্ষ গাছগুলিও বিরতিগুলিকে সংরক্ষণ করে তবে " এইগুলির মধ্যে কোনটি একটি প্রদত্ত বিরতিতে " ওপরে ওঠে "প্রশ্নের জন্য অনুকূলিত হয়েছে । এটি পয়েন্ট প্রশ্নের জন্যও ব্যবহার করা যেতে পারে - সেগমেন্ট গাছের মতো similar
  • ব্যাপ্তি গাছের পয়েন্টগুলি সঞ্চয় করে এবং " কোন নির্দিষ্ট বিরতিতে পয়েন্টগুলি পড়ে " এর জন্য অনুকূলিত হয় ।
  • বাইনারি ইনডেক্সেড ট্রি গাছগুলি সূচি অনুসারে আইটেম-গণনা সঞ্চয় করে এবং " ইনডেক্স এম এবং এন " প্রশ্নের মধ্যে কতগুলি আইটেম রয়েছে তার জন্য অনুকূলিত ।

পারফরম্যান্স / এক মাত্রার জন্য স্পেস খরচ:

  • সেগমেন্ট ট্রি - ও (এন লগন) প্রিপ্রোসেসিং সময়, ও (কে + লগন) ক্যোয়ারির সময়, ও (এন লগন) স্থান
  • বিরতি গাছ - ও (এন লগন) প্রিপ্রোসেসিং সময়, ও (কে + লগন) ক্যোয়ারির সময়, ও (এন) স্থান
  • ব্যাপ্তি গাছ - ও (এন লগন) প্রিপ্রোসেসিং সময়, ও (কে + লগন) ক্যোয়ারির সময়, ও (এন) স্থান
  • বাইনারি ইনডেক্সেড ট্রি - ও (এন লগন) প্রিপ্রোসেসিং সময়, ও (লগইন) ক্যোয়ারির সময়, ও (এন) স্থান

(কে রিপোর্ট করা ফলাফলের সংখ্যা)।

সমস্ত ডেটা স্ট্রাকচার গতিশীল হতে পারে, এই অর্থে যে ব্যবহারের দৃশ্যে ডেটা পরিবর্তন এবং কোয়েরি উভয়ই রয়েছে:

  • সেগমেন্ট ট্রি - ওভার (লগইন) সময়ে ব্যবধান যুক্ত / মোছা যায় ( এখানে দেখুন )
  • ইন্টারভাল ট্রি - ওভার (লগইন) সময়ে অন্তর অন্তর যুক্ত / মোছা যায়
  • রেঞ্জ ট্রি - নতুন পয়েন্টগুলি ও (লগইন) সময়ে মোছা / মোছা যায় ( এখানে দেখুন )
  • বাইনারি ইনডেক্সেড ট্রি - ও (লগইন) সময়ে সূচি অনুসারে আইটেম-কাউন্ট বাড়ানো যায়

উচ্চ মাত্রা (d> 1):

  • সেগমেন্ট ট্রি - ও (এন (লগন) ^ d) প্রিপ্রোসেসিং সময়, ও (কে + (লগন) query d) ক্যোয়ারির সময়, ও (এন (লগন) ^ (ডি -১)) স্থান
  • বিরতি গাছ - ও (এন লগন) প্রিপ্রোসেসিং সময়, ও (কে + (লগন) ^ d) ক্যোয়ারির সময়, ও (এন লগন) স্থান
  • ব্যাপ্তি গাছ - O (n (লগন) ^ d) প্রাক প্রসেসিং সময়, ও (কে + (লগন) query d) ক্যোয়ারির সময়, ও (এন (লগন) ^ (ডি -1)) স্থান
  • বাইনারি ইনডেক্সড ট্রি - ও (এন (লগন) ^ ডি) প্রিপ্রোসেসিং সময়, ও ((লগন) ^ d) ক্যোয়ারির সময়, ও (এন (লগন) ^ d) স্পেস

12
আমি সত্যিই ধারণাটি পেয়েছি যে সেগমেন্ট গাছগুলি <এন্টারভাল গাছগুলি from সেগমেন্ট গাছ পছন্দ করার কোনও কারণ আছে কি? যেমন বাস্তবায়নের সরলতা?
j_random_hacker

7
@ j_random_hacker: বিভাগের গাছ ভিত্তিক অ্যালগরিদমগুলি অন্তরগুলির ক্যোয়ারির আরও কিছু জটিল উচ্চ-মাত্রিক ভেরিয়েন্টে সুবিধা রয়েছে। উদাহরণস্বরূপ, কোন অ-অক্ষ-সমান্তরাল লাইন-বিভাগগুলি 2D উইন্ডো দিয়ে ছেদ করে তা সন্ধান করা।
লাইয়ার কোগান

5
ধন্যবাদ, আমি আপনাকে যে কোনও বিবরণ দিতে পারব তাতে আগ্রহী হব।
j_random_hacker

3
@ জেআর্যান্ডম_হ্যাকার, বিভাগের গাছগুলির আরও একটি আকর্ষণীয় ব্যবহার রয়েছে: ও (লগ এন) সময়ে আরএমকিউ (পরিসীমা ন্যূনতম ক্যোয়ারী) যেখানে N সামগ্রিক ব্যবধানের আকার।
আর্স-লঙ্গা-ভিটা-ব্রাভিস

1
সেগমেন্ট গাছগুলি O (n লগ এন) স্থান কেন? তারা এন পাতাগুলি + এন / 2 + এন / 4 + ... + এন / 2 ^ (লগ এন) সংরক্ষণ করে এবং যদি আমার ভুল না হয় তবে এই যোগফলটি ও (এন) হয়। এছাড়াও @ আইসিসি 97 উত্তর ও (এন) স্পেসের প্রতিবেদন করে।
পিঁপড়া

24

লিয়রের উত্তরে আমি কিছু যোগ করতে পারি তা নয়, তবে মনে হয় এটি ভাল টেবিলে করতে পারে do

এক মাত্রা

k রিপোর্ট ফলাফলের সংখ্যা

|              | Segment       | Interval   | Range          | Indexed   |
|--------------|--------------:|-----------:|---------------:|----------:|
|Preprocessing |        n logn |     n logn |         n logn |    n logn |
|Query         |        k+logn |     k+logn |         k+logn |      logn |
|Space         |        n logn |          n |              n |         n |
|              |               |            |                |           |
|Insert/Delete |          logn |       logn |           logn |      logn |

উচ্চ মাত্রা

d > 1

|              | Segment       | Interval   | Range          | Indexed   |
|--------------|--------------:|-----------:|---------------:|----------:|
|Preprocessing |     n(logn)^d |     n logn |      n(logn)^d | n(logn)^d |
|Query         |    k+(logn)^d | k+(logn)^d |     k+(logn)^d |  (logn)^d |
|Space         | n(logn)^(d-1) |     n logn | n(logn)^(d-1)) | n(logn)^d |

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


2
রিপোর্টিত ফলাফল বলতে কী বোঝ?
প্রতীক সিংহল

@ PS06756 অনুসন্ধান আলগোরিদিমগুলিতে প্রায়শই লগের রানটাইম থাকে (এন) যেখানে এন ইনপুটসাইজ হয় তবে এমন ফলাফল পাওয়া যায় যা লাইনারি হয় যা লগারিদমিক সময়ে করা যায় না (লগ (এন) সময়ে এন সংখ্যাগুলি আউটপুট করা সম্ভব হয় না) ।
oerpli

1
O(n logn) spaceপ্রথম টেবিলের মধ্যে সেগমেন্ট ট্রি থাকা উচিত নয় ?
ড্যানি_ডিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.