სეგმენტური ხე: განსხვავება გადახედვებს შორის

მასალა ვიკიპედიიდან — თავისუფალი ენციკლოპედია
შიგთავსი ამოიშალა შიგთავსი დაემატა
შექმნილია გვერდის თარგმნით "Segment tree"
(განსხვავება არ არის)

07:54, 14 მარტი 2020-ის ვერსია

კომპიუტერულ მეცნიერებაში, სეგმენტური ხე არის ორობითი ხე, რომელიც მასივის სეგმენტების ან ინტერვალების შესანახად გამოიყენება. თითოეული კვანძი წარმოადგენს მასივის გარკვეული სეგმენტის შესახებ ინფორმაციას. ის ძალიან ზოგადი მონაცემთა სტრუქტურაა და უამრავ ამოცანას წარმატებით ხსნის. ყველაზე ცნობილია გარკვეულ სეგმენტზე ჯამის, ან მინიმალური/მაქსიმალური მნიშვნელობის პოვნა. ამ ყველა ოპერაციას სეგმენტური ხე ლოგარითმულ დროში აკეთებს, რაც გაცილებით სწრაფია ვიდრე პირდაპირი, ბრუტ-ფორს მიდგომა. სეგმენტური ხისთვის ძირითადად ორ ოპერაციას განიხილავენ: სეგმენტის შესახებ ინფორმაციის მოძება და ინფორმაციის განახლება. ასევე აგებაც განიხილება, მაგრამ ეს შეგვიძლია ცარიელი ხის განახლებად ჩავთვალოთ. როგორც წესი, რადგან სეგმენტური ხე ორობითი ხეა, ის წრფივ მონაცემთა სტრუქტურაში იწერება.

სეგმენტური ხე სტატიკურია, რადგან აგების შემდეგ მისი სტრუქტურის შეცვლა არ ხდება, მხოლოდ კვანძების მნიშვნელობების შეცვლა ხდება განახლების ოპერაციის დროს.

სეგმენტური ხის აგებას O(N * log N) დრო სჭირდება, რადგან თითოეული N ელემენტისთვის საჭიროა განახლების ოპერაციის გამოყენება, რომელიც O(log N) დროში მუშაობს. რაც შეეხება მეხსიერებას, მისი ასიმპტოტიკაც აგრეთვე O(N * log N) - ია. შევნიშნოთ, რომ სეგმენტური ხის აგების შემდეგ, სეგმენტის შესახებ ინფორმაციის მოძიება და განახლება O(log N) - დროში მუშაობს, სწორედ ეს არის მისი უპირატესობა.

აღვნიშნოთ, რომ სეგმენტური ხე შეიძლება 1-ზე მეტ განზომილებიანიც იყოს.

სტრუქტურა და იმპლემენტაცია

სეგმენტური ხის ფესვში მოცემულია მთლიანი მასივის შესახებ ინფორმაცია, ანუ [1..n] (n - მასივის ზომა), მის მარცხენა შვილში [1..n / 2] , მარჯვენაში [n / 2 + 1, n] და ასე შემდეგ. შევნიშნოთ, რომ სეგმენტი ორ ნაწილად იყოფა. თუ სეგმენტის ზომა კენტია, არ აქვს მნიშვნელობა მარჯვენაში იქნება მარცხენაზე ერთით მეტი ზომის მქონე სეგმენტი - თუ პირიქით. სეგმენტური ხის ფოთლები, მარცხნიდან მარჯვნივ წარმოადგენენ მასივის ელემენტების, რადგან ბოლოში მაქსიმალურად დაყოფილი, ანუ ერთ ელემენტიანი სეგმენტებია.

სეგმენტურის ხის სტრუქტურის გრაფიკული მაგალითი