- Podano imamo množico .
- Množica ima točk. = .
- Vsaka točka ima dve koordinati - in .
Iščemo taka in , da bo razdalja najmanjša.
Opis problema
Iščemo taka in , da bo razdalja najmanjša.
Enostaven algoritem
Enostaven algoritem je neposredni pristop za izračun najkrajše razdalje med točkama. Izračunamo razdaljo za vsak par točk in nato poiščemo najmanjšo.
Razdalja med točkama dobimo z
Analiza enostavnega algoritma
Osnovni operaciji pri enostavnem algoritmu sta:
V primeru, ko imamo točk, se izvede izračunov razdalj in za eno manj primerjav razdalj.
Časovna zahtevnost takšnega algoritma je .
Zahtevnejši algoritem Deli in Vladaj
Z zahtevnejšim algoritmom lahko problem rešimo hitreje.
Algoritem deli in vladaj se deli na tri faze:
Faza DELI:
Faza VLADAJ:
Faza ZDRUŽITEV:
Določiti moramo zaustavitvene pogoje za rekurzivni algoritem:
Faze Deli
Kadar je problem večji od 3, se ga lotimo z fazo DELI:
Pas, ki deli množico na dva dela je .
=> in => =
Primer:
ima 6 točk. Meja je med točkama in
ima 7 točk Meja je med točkama in - se nahaja na razpolovišču njunih koordinat. Izračunamo jo: =
Faza Združitve
Točke v sredinskem pasu
Pogledamo ostale možne razdalje:
Če bi imeli več točk v območju točke C:
Za vsako točko preverimo razdaljo zgolj do petih nadaljnjih točk v seznamu.
Analiza algoritma deli in vladaj
Zapis iskanja najbližjega para točk smo poenostavili na iskanje razdalje med najbližjima točkama. V samem algoritmu pa moramo poskrbeti, da se zabeležita in vrneta točki, ki pripadata najmanjši razdalji.
Celotni algoritem ima časovno zahtevnost = , kar je boljše od .
Algoritem lahko še izboljšamo s pomočjo algoritma urejanje z zlivanjem.
Fazo združevanja dominirajo tri podfaze s časovno zahtevnostjo . Vseh rekurzivnih nivojev je , časovna zahtevnost algoritma je .