The Postal Owl

Logged in: Santa Claus (home)   

Algoritmy a datové struktury 1

Back to the course

DÚ 11: nejbližší body

Deadline: 2022-05-19 10:40 (231 days ago)

Pavel Veselý — 2022-05-06 10:44 (244 days ago) — reply

Máme $n$ bodů v rovině a chceme najít dvojici s nejmenší vzdáleností. To lze snadno v $O(n^2)$, cílem je tedy dostat lepší časovou složitost. (Předpokládejme, že změřit vzdálenost dvou bodů trvá $O(1)$.)

Nabízí se následující řešení založené na Rozděl a panuj:
1. rozdělíme body vodorovnou přímkou podle mediánu y-ových souřadnic na dvě poloviny (předpokládejme, že medián najdeme v lineárním čase --- to bude na přednášce),
2. rekurzivně spočítáme nejmenší vzdálenosti $\varepsilon_1$ a $\varepsilon_2$ v obou polovinách bodů,
3. spočítáme nejmenší vzdálenost dvou bodů ležících v různých polovinách, na což se stačí zaměřit na pás o šíři $2\min(\varepsilon_1, \varepsilon_2)$ podél dělící přímky.

Úkolem je domyslet detaily, tedy hlavně jak provést 3. krok, a analyzovat časovou a paměťovou složitost. (Můžete použít i jiné řešení, bude-li mít stejně dobrou nebo lepší složitost.)

New post (You can use Markdown with KaTeX math here)

Preview: