input: pontok a sikon, azaz ahol

I. Konvex burok

Feltesszuk, hogy

algo:

FOR k = 1..n
	conv(p_1, ..., p_k)

F = [1, 5, 11, ..., k]
A = [1, 3, 7, ..., k]

-ra mar megcsinaltuk es most akarjuk -re
Azt az pontot keresem amire az egyenes a pont felett megy es az egyenes a egyenes alatt megy

Ha egy adott -t megtippelunk akkor azt konstans idoben le tudjuk tesztelni.

Ha megtalaltuk azt a -t amire a fenti teljesul, akkor az F tobb hosszu lesz es a vegere -et kell irni

A meglepo, hogy ha felezo keresessel szeretnenk megtalalni a -t akkor csak futasideju algoritmust fogunk kapni de mi idore torekszunk.
Ezt el tudjuk erni ha a vegerol egyesevel visszafele keresunk!

FOR f = k..1 (-1)
	IF j az ugropont:
		break

f := j+1
F(f) := k+1

ugyanezt -val

Ezzel az eljarassal minden pontot csak egyszer nezzuk meg.

II. Legkozelebbi pontpar tavolsaga

feladat: ahol es

Divide and conquer algoritmus lesz
Divide:
Kiszamoljuk az koordinatak mediansat:
(particio-bal) azon pontok amelyeknek az koordinataja kisebb mint
(particio-jobb) azon pontok amelyeknek az koordinataja nagyobb mint

Rekurzios resz:
Rekurzivan megoldjuk a feladatot -re, ami visszaadja, hogy a legkozelebbi pontpar tavolsaga
Rekurzivan megoldjuk a feladatot -re, ami visszaadja, hogy a legkozelebbi pontpar tavolsaga
Legyen a megoldas

Meg kell meg nezni azokat a pontparokat ahol az egyik pont -ben van mig a masik pont -ben.
Vegyuk eszre, hogy eleg csak azokat a pontparokat vizsgalni, ahol az egyik pont legfeljebb tavolsagra van az egyenestol es a masik pont is csak legfeljebb tavolsagra van az egyenestol.
Tehat csak az egyenes egy sugaru strip-jeben kell vizsaglnunk a pontparokat mar.

Uralkodj:

-szerint rendezzuk -t:
Leellenorizzuk minden -ra, hogy a felette levo -re van-e -tol kozelebb levo
Eszreveheto, hogy eleg csak a feletti magassagu strip-ben nezni, igy durva legfeljebb pontot kell ellenoriznunk (javithato ez a szam)

FOR i = 1..r
	FOR l = 1..7
		dist = d(q_i, q_{i+l})
		IF dist < delta THEN delta := dist

Megjegyzesek:

  1. -et taroljuk igy nem kell folyton gyokot vonni a tavolsagok vizsgalasakor.
  2. A minimalis tavolsagu pontpar megtalalasa is konnyu, csak fenntartunk ket indexet a ket pontra amik a legkozelebb vannak.
  3. Az elejen megnezzuk, hogy vannak-e egybeeso pontok, ha igen akkor nem is csinalunk tobbet hanem visszaadjuk hogy a legkozelebbi pontok tavolsaga.
  4. Ha akkor konstans idoben megkeressuk a legkozelebbi pontpart (vagy azok tavolsagat)
  5. Ha sok olyan pont van amelyeknek megegyezik az koordinataja, akkor baj lehet, mert nem feltetlenul felezi a es particiok a ponthalmazt.
    Ezert azt csinaljuk, hogy -be azok a pontok mennek amiknek az koordinataja kisebb mint es ha akkor az koordinataja pozitv. Hasonlo modon -be azok mennek amiknek az koordinataja nagyobb mint es ha akkor az koordinataja negativ
  6. dimenzioban lepesben megoldhato ugy, hogy a vegso sugaru strip-re ugy gondolunk mint egy dimenzios feladatra.

Jel.: ha es ha akkor
vagyis

Lepesszam:

Lepesszam javitasa: Lehet lepesben is megcsinalni!
Az elejen rendezzuk a pontokat -szerint es -szerint is, es igy mar nem kell mindig -t rendezni.
Lesz egy es egy tomb, ahol

Fontos lepes: Tudom a tombot idoben - es -szerint is rendezni.
Vegig megyek az tombon es mindegyik elemrol el tudom donteni idoben hogy benne lesz-e -ban. : a tomb -szerint rendezve.
Vegig megyek az tombon es mindegyik elemrol el tudom donteni idoben hogy benne lesz-e -ban. : a tomb -szerint rendezve.

III. Tengely iranyu teglalap feladat

a) eltarolni az inputot tarban es idoben

b) Felsorolni az osszes pontot, melyek benne vannak egy adott tengely iranyu teglalapban

tengely iranyu teglalap:
valasz:
legyen (a fenti halmaz merete)

cel: egy valasz ideje
megoldas: Tartomany fa

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.