Овај чланак је започет или проширен кроз пројекат семинарских радова. Потребно је проверити превод, правопис и вики-синтаксу. Када завршите са провером, допишете да након |проверено=. |
U informatici, segmentno stablo je data struktura za čuvanje intervala ili segmenata. Dozvoljava upitivanje koji od sačuvanih segmenata sadrži zadatu tačku. To je u principu statička struktura; njen sadržaj ne može biti modifikovan kada je struktura napravljena.
Segmentno drvo za I od n intervala koristi O(n log n) memorije i može biti napravljeno za O(n log n) vremena.Segmentna drva podržavaju pretraživanje za sve intervale koji sadrže upitnu tačku u O(log n + k), k broj primljenih intervala ili segmenata.
Ovaj odeljak opisuje strukturu segmentnog drveta u jednodimentionalnom prostoru
Neka S bude set intervala ili segmenata. Neka p1, p2, ..., pm bude lista različitih intervala krajnjih tačaka, sortiranih od leva na desno. Regije ovog particionisanja se zovu elementarni intervali. Elementarni intervali sa leva na desno su:
Dato je I od intervala ili segmenata, segmentnog drveta T za I je:
Ova sekcija analizira memorijske zahteve segmentnog deveta u jednodimenzionalnom prostoru.
Segmentno drvo T na I od n intervala koristi O(nlogn) memorije.
Ova sekcija opisuje konstrukciju segmentnog drveta u jednodimenzionalnom prostoru.
Segmentno drvo od seta segmenata I, može biti napravljeno na sledeći način:Prvo, krajnje tačke intervala u I su sortirane. Elementarni intervali su preuzeti odatle. Onda, balansirano binarno drvo se pravi na elementarnim intervalima i za svaki čvor v determinisan je interval Int(v) koji predstavlja. Preostaje da se izračunaju kanonske substance za čvorove. Da bismo postigli ovo, intervali u I su ubačeni jedan po jedan u segmentno drvo. Interval X = [x, x′] može biti ubačen u pod drvo sa korenom T, koristeći sledeću proceduru:[3]
Kompletna konstrukcija operacija uzima O(nlogn) vremena, n broj segmenata u I. [4]
Ova sekcija opisuje upitne operacije segmentnog drveta u jednodimenzionalnom prostoru.
Upit za segmentno drvo, prima tačku qx, i prima listu svih segmenata sačuvanih koji sadrže tačku qx.
Formalno rečeno; dat je čvor (subtree) v i upitna tačka qx, upit može biti izvede koristeći sledeći algoritam:
U segmentnom drvetu koje sadrži n intervala, koji sadrže dati upit, tačka može biti reportovana za O(logn + k) vremena, gde je k broj prijavljenih intervala.[2]
Segmentno drvo može biti generalizovano za više dimenzione prostore u formi segmentnih drveta sa više nivoa. U verzijama više dimenzije, segmenta drva čuvaju kolekciju axis-paralelnih hiperuglova, i vraćaju uglove koji sadrže datu upitnu tačku. Struktura koristi O(nlogd-1n) prostora, I odgovara za O(logdn).