Trova la distanza più breve a coppie di punti in o (n log n)?


11

Il seguente esercizio è stato distribuito agli studenti che supervisiono:

Dati n punti nel piano, escogitare un algoritmo che trova una coppia di punti la cui distanza è minima tra tutte le coppie di punti. L'algoritmo dovrebbe essere eseguito nel tempo o(n2) .

Esiste un algoritmo di divisione e conquista (relativamente) semplice che risolve il compito nel tempo Θ(nlogn) .

Domanda 1 : esiste un algoritmo che risolve esattamente il problema nel momento peggiore o(nlogn) ?

Ciò che mi ha fatto sospettare che ciò potesse essere possibile è un risultato che ricordo di aver visto in alcuni discorsi (riferimento apprezzato). Diceva qualcosa lungo le linee di quel non più di un numero costante cN di punti possono essere disposti nel piano attorno ad un punto p all'interno di un cerchio di raggio rR , con r la distanza minima tra due dei punti coinvolti . Penso che c=7 , i punti che formano un esagono equilatero con p al centro (nel caso estremo).

In tal caso, il seguente algoritmo dovrebbe risolverli in n passaggi.

fun mindist [] | p::[] = INFINITY
|   mindist p1::p1::[] = dist(P[0], P[1])
|   mindist p::r = let m = mindist(r) in
                     min(m, nextNeighbour(p, r, m))
                   end

Si noti che questo è (dichiarato di essere) in tempo lineare perché solo un numero costante di punti in non rpuò essere più lontano di mda p(assumendo la frase sopra); solo questi punti devono essere studiati per trovare un nuovo minimo. C'è un problema, ovviamente; come si implementa nextNeighbour(magari con preelaborazione in tempo lineare)?

Domanda 2 : Lasciare un insieme di punti ed un punto p R . Lascia che m R conRpRmR

mmin{dist(p1,p2)p1,p2R}

e

Rp,m:={ppRdist(p,p)m} .

Supponiamo che sia finito. È possibile trovare con una distanza minima da in tempo (ammortizzato) ? (Puoi presumere che sia costruito aggiungendo i punti investigati uno per uno.) p R p , m p O ( 1 ) R pRp,mpRp,mpO(1)Rp


2
Proporrei di cercare con "coppia più vicina" come parola chiave.
Yoshio Okamoto,

Ormai sono tutte cose standard, vedi i primi due capitoli qui: goo.gl/pLiEO
Sariel Har-Peled,

Ps. Se si desidera il tempo previsto, è anche possibile calcolare la triangolazione Delaunay, che contiene la distanza minima.
domotorp,

Dopo la domanda 1 scrivi "non più di un numero costante di punti può essere disposto nel piano attorno a un punto p all'interno di un cerchio di raggio r, con r la distanza minima tra p e qualsiasi altro punto". Questo non è certamente vero: puoi prendere qualsiasi numero di punti sul cerchio del raggio r. La tua affermazione è vera se r è la distanza minima tra due punti qualsiasi, nel qual caso la dimostrazione è abbastanza semplice.
domotorp,

la prima domanda è roba da manuale, come già sottolineato: sicuramente non a livello di ricerca. Non capisco la seconda domanda: per qualsiasi , la che chiedono o non esiste o è il vicino più vicino al in . quindi in cosa differisce dalla domanda 1? su cosa stai ammortizzando (ovvero se questa è una domanda sulla struttura dei dati quali sono gli aggiornamenti e le query)? p p RmppR
Sasho Nikolov,

Risposte:


12

E 'impossibile risolvere il problema in meno di tempo a modelli standard, ad esempio utilizzando alberi decisionali algebriche. Ciò deriva dal lavoro di Yao e Ben-Or che mostra che in questo modello non è possibile decidere se una serie di n numeri di input sono tutti diversi o meno (vedere http://people.bath.ac.uk/masnnv /Teaching/AAlg11_8.pdf ). In caso di problemi, immagina che siano tutti sulla linea reale. Se due punti sono uguali, l'output sarebbe di due punti con distanza zero, altrimenti no, quindi una soluzione al tuo problema risolverebbe anche il problema DISTINCT NUMBERS. Se vuoi supporre che tutti i tuoi punti siano diversi, aggiungi semplicemente i ϵ alla xcnlognniϵ input del problema DISTINCT NUMBERS, in questo caso se l'output è al massimo n ϵ , i numeri non sono tutti distinti. (Anche se in questo caso devi usare una versione promessa in cui la differenza di due numeri distinti è almeno 2 n ϵ , ma penso che la stessa prova funzioni per dimostrare chein questo casohai bisogno anche di Ω ( n log n ) . )xinϵ2nϵΩ(nlogn)


Anzi, grazie. Ciò risponde anche alla domanda 2 (negativamente).
Raffaello

Il problema che citi è apparentemente noto anche come problema di distinzione degli elementi .
Raphael,

Il riferimento di @Sariel Har-Peled ( goo.gl/pLiEO ) presenta un pratico algoritmo a tempo lineare per trovare la coppia più vicina. Tale documento affronta direttamente questo argomento e spiega che non si applica perché l'algoritmo utilizza un modello di calcolo più potente.
Kevin Cline,

1
Sì, ma la domanda ha chiesto specificamente il tempo di esecuzione nel caso peggiore. Ma sono d'accordo che tutte le mie osservazioni compaiono già nella tesi di Sariel.
domotorp,


0

2pO(1)


A proposito non mi riferisco alla versione dell'algoritmo come la descrive Lipton, ma come è descritta nel primo commento (e nel libro di Kleinberg e Tardos).
Sasho Nikolov,

Solo in attesa, vedi la risposta di domotorps.
Raffaello

non vedo da nessuna parte che tu voglia limitarti agli algoritmi deterministici. L'algoritmo di Rabin è interessante proprio perché ruota attorno ai limiti inferiori dell'albero decisionale (è simile ai limiti inferiori per gli algoritmi di ordinamento di confronto rispetto a quelli di ordinamento intero). tra l'altro, probabilmente c'è molto di più che Rabin usa per aggirare il limite inferiore, ovvero il trucco di hashing usato per accedere alla griglia
Sasho Nikolov,

4
Per quanto riguarda "di più che Rabin usa": anche la possibilità di arrotondare gli input di numeri reali agli interi. Bisogna stare molto attenti a questo: se si imposta un modello di calcolo in cui si possono fare operazioni aritmetiche standard e arrotondare su numeri reali, tutto in tempo costante per operazione, allora è possibile risolvere i problemi PSPACE completi in tempo polinomiale in questo modello. Ma Rabin arrotonda solo i numeri di input (a diversi livelli di precisione in diverse iterazioni) e questa forma circoscritta di arrotondamento non è problematica.
David Eppstein,

o(nlogn) O(1)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.