Tartomany fa (Range tree)

seged anyag 1 seged anyag 2

A tartomany fa egy koordinata szerinti kulso tarolasu kiegyensulyozott binaris kereso fa.
Minden csucson van egy utjelzo ami eliranyitja a pontokat ugy, hogy balra vannak azok amiknel es jobbra azok amiknel . Az adatok a levelekben vannak tarolva.

A tartomany fa minden csucsahoz hozzarendelunk egy halmazt:

Megj.: Ha level cimkevel, akkor .
tarolasa tombben ugy, hogy az koordinata szerint novekszik.

Hogyan epitjuk fel a tartomany fat es hogyan tudunk lekerdezni belole?

Lekerdezes tartomany faban

Mely pontok esnek az tengely iranyu teglalapba?

Valaszolo algoritmus:

  1. es keresese

Transclude of fontos_csucsok_halmaza

  1. fontos csucsok halmaza,
    All.: Valasz
    All.: -nak minden olyan eleme valasz, amire

  2. Minden -re van az tombbun, amely -szerint van rendezve, tehat az elso harmada a tombbnek olyan elemekbol all ahol , a masodik harmada olyanokbol all ahol es vegul az utolso harmado olyan elemekbol all ahol .
    A tomb ezen szep strukturaja miatt felezo keresessel meg tudjuk talalni -t. Miutan megtalaltuk -t, addig megyunk -ben jobbra amig meg nem haladjuk -et.

Mivel egy csucsban legfeljebb lepest vegzunk es ezert az osszlepeszam .

Altalanositas: Ha dimenzioban szeretnenk megoldani a feladatot helyett, akkor meg tudjuk oldani idoben.

Az otlet az, hogy a dimenzios esetet tudjuk redukalni egy dimenzios esetre ugy, hogy ahol taroljuk a pontokat ott egy tomb helyett egy dimenzios feladatot oldunk meg.

Allitas: Ha a dimenzio akkor letezik ideju algoritmus. Tehat -ben .

Tartomany fa felepitese

All.: Fel lehet epiteni egy tartomany fat idoben, tarat hasznalva.

Konnyen lathato, hogy ennyi minimum kell, mert az osszes pont mindegyiket -szer taroljuk.

Legyen az osszes pont indexenek tombje szerint rendezve.
Legyen az osszes pont indexenek tombje szerint rendezve.

Amikor egy csucsnal vagyunk es kette kell osztani az itt levo csucsokat akkor meg tudom oldani lepesben. Mert az es az tombok rendezve vannak mar es konstans idoben el tudom donteni egy pontrol az tombben, hogy balra vagy jobbra megy es eleg csak sorban tovvabbadnunk az es az tomboket, mert mar eleve rendezve vannak.

Kaszkadolas (Cascading)

seged anyag

Legyen egy csucs a tartomany faban, aminek ket gyereke es .
Definialjuk a kovetkezo tomboket: , ,

TODO

Utkereses terkepen

Adott iranyitott graf es ket csucs kozott keressuk a legrovidebb utat es a hosszat:

https://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf

Ketiranyu Dijkstra

“Parhuzamosan”, inditunk -ben -bol egy Dijkstra algoritmust es inditunk forditottban -bol egy Dijkstra algoritmust.

Terminologia: Egy csucsot atvizsgaltnak nevezunk, ha es eleken mar voltunk. Egy csucs elert ha mar bekerult a -be, tehat van mar egy kulcsa ami felso becslese az ut hosszanak.

Naivan azt gondolnank, hogy ha van olyan csucs ami az -bol inditott es a -bol inditott Dijkstraban is mar atvizsgalt akkor keszen vagyunk, de ez igy nem igaz, mert peladul ha van egy olyan ut ami keves nagy elekbol all egy olyan ut ami sok kicsi elbol all. A sok kicsi elbol allo ut osszesen rovidebb mint a masik akkor elobb fogjuk megtalalni a nagy elekbol allo utat, de ez nem az optimalis.

Ha peladul a csucsot atvizsgaljuk a masodik keresesben, es egy latott csucs az elsoben cimkevel, akkor kiszamitjuk erteket. Ezeknek a minimuma legyen . (ezt a erteket mindig firrsitjuk)

Ha letezik olyan csucs, aki mindketto kereseseben atvizsgalt akkor a lesz a helyes valasz.

Biz.: todo

A* algoritmusok

Azt mondom hogy also becsles -re, ha

  • -re

Tipikusan ez a fuggveny a legvonalbeli tavolsag egy utkeresesi problemaban.

Az A* algoritmus csak a kovetkezo sorban ter el a kanonikus Dijkstra algoritmustol:

u := argmin(K(v) + h(v))

Megj.: Ha akkor visszakapjuk az eredeti Dijkstra algoritmust.