O (n log n) içinde noktaların en kısa ikili mesafesini bul?


11

Denetlediğim öğrencilere aşağıdaki alıştırmalar yapıldı:

Düzlemdeki n nokta verildiğinde , tüm nokta çiftleri arasındaki mesafenin minimum olduğu bir çift nokta bulan bir algoritma geliştirin. Algoritma o (n ^ 2) zamanında çalışmalıdır o(n2).

Görevi zamanında çözen (nispeten) basit bir böl ve fethet algoritması vardır Θ(nlogn) .

Soru 1 : Verilen problemi en kötü zamanda tam olarak çözen bir algoritma var o(nlogn) ?

Bunun mümkün olabileceğinden şüphelenmemi sağlayan şey, bazı konuşmalarda gördüğümü hatırladığım bir sonuç (referans takdir). O fazla olmayan sabit bir sayıdan çizgisinde bir şey ifade bir noktada yaklaşık düzlemde düzenlenmiş olabilir noktalarının yarıçapı bir daire içinde ile, ilgili iki nokta arasındaki minimum mesafe. Bence , ortada ile eşdeğer bir altıgen oluşturan noktalar (aşırı durumda). p r R r c = 7 pcNprRrc=7p

Bu durumda, aşağıdaki algoritma sorunu adımda çözmelidir .n

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

Bunun lineer zamanda olduğunu (iddia edildiği gibi) unutmayın, çünkü sadece sabit bir sayıdaki nokta , (yukarıdaki ifadeyi varsayarak) ' rden daha uzakta olamaz ; yeni bir minimum bulmak için sadece bu noktaların araştırılması gerekir. Elbette bir av var; nasıl uygularsınız (belki doğrusal zamanda ön işleme ile)?mpnextNeighbour

Soru 2 : Bir dizi ve bir noktası olsun . Let ilep R m RRpRmR

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

ve

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

nin sonlu olduğunu varsayın . 'de (amortismanlı) zaman de minimum mesafe ile bulmak mümkün müdür ? ( İncelenen noktaları tek tek ekleyerek inşa edileceğini varsayabilirsiniz .)Rp,mpRp,mpO(1)Rp


2
Bir anahtar kelime olarak "en yakın çift" ile arama öneriyoruz.
Yoshio Okamoto

Şimdiye kadar tüm bunlar standart, ilk iki bölüme bakın: goo.gl/pLiEO
Sariel Har-Peled

Ps. Beklenen süreyi istiyorsanız, minimum mesafeyi içeren Delaunay üçgenlemesini bile hesaplayabilirsiniz.
Ocak'ta domotorp

1. sorudan sonra, "r yarıçapı dairesi içindeki bir p noktasının etrafındaki düzlemde, p ile diğer herhangi bir nokta arasındaki minimum mesafe ile sabit sayıdan fazla nokta düzenlenemez" yazarsınız. Bu kesinlikle doğru değildir: r yarıçapı çemberinde istediğiniz sayıda nokta alabilirsiniz. Eğer r iki nokta arasındaki minimum mesafe ise ifadeniz doğrudur, bu durumda kanıt oldukça basittir.
Ocak'ta domotorp

ilk soru, daha önce de belirtildiği gibi ders kitabı şeyleridir: kesinlikle araştırma seviyesi değildir. i ikinci soruyu anlamadım: Herhangi için , ya için soruyorsunuz mevcut değil veya en yakın komşusu olan içinde . peki bu soru 1'den nasıl farklı? neyi amorti ediyorsunuz (yani bu bir veri yapısı sorusuysa güncellemeler ve sorgular nelerdir)? mppR
Sasho Nikolov

Yanıtlar:


12

Sorunu standart modellerde süresinden daha kısa sürede çözmek mümkün değildir , örn. Cebirsel karar ağaçları kullanmak. Bu, Yao ve Ben-Or'un çalışmasından, bu modelde bir dizi giriş numarasının tamamen farklı olup olmadığına karar vermenin mümkün olmadığını gösteren çalışmalardan kaynaklanmaktadır (bkz. Http://people.bath.ac.uk/masnnv /Öğretme / AAlg11_8.pdf ). Sorununuz varsa, hepsinin gerçek hatta olduğunu hayal edin. İki nokta aynı ise, çıktınız sıfır mesafe ile iki nokta olur, aksi halde değil, bu nedenle sorununuza bir çözüm de DISTINCT NUMBERS sorununu çözecektir. Tüm noktaları farklı olduğunu varsayalım istiyorsanız, o zaman sadece eklemek içincnlognniϵxiDISTINCT NUMBERS sorununun girişleri, bu durumda çıktınız en fazla , sayıların hepsi farklı değildir. (Herhangi iki ayrı sayıların farkı olduğu bu durumda bir söz versiyonunu kullanmak zorunda olsa da, en azından ama aynı kanıtı da ihtiyaç olduğunu göstermek için çalıştığını düşünüyorum bunda durum.)nϵ2nϵΩ(nlogn)


Gerçekten, teşekkürler. Bu da 2. soruyu (olumsuz) cevaplar.
Raphael

Bahsettiğiniz sorun, görünüşe göre Element Ayrımcılık Sorunu olarak da bilinir .
Raphael

@Sariel Har-Peled'in referansı ( goo.gl/pLiEO ), en yakın çifti bulmak için pratik bir doğrusal zaman algoritması sunar. Bu belge doğrudan bu argümanı ele alır ve algoritmanın daha güçlü bir hesaplama modeli kullandığı için geçerli olmadığını açıklar.
kevin cline

1
Evet, ancak soru özellikle en kötü durum çalışma süresini istedi. Ancak tüm gözlemlerimin zaten Sariel'in tezinde yer aldığını kabul ediyorum.
domotorp


0

2. soruyu anladığım kadarıyla, Rabin'in algoritması da buna bir tür cevap veriyor. Her zaman adımında veri yapısı, hücre genişliği şimdiye kadar görülen nokta çiftleri arasındaki en küçük mesafeden daha az olan ve bölünen bir ızgaradır (böylece hiçbir hücre tek bir noktadan daha fazlasını içermez). 2. sorudaki soruyu cevaplamak için, ızgaradaki bir hücreye eşlemeniz ve etrafındaki sabit sayıda hücreye bakmanız gerekir. Algoritmanın analizi ile, giriş noktası seti rastgele sırada incelenirse, ızgara için amortisman güncelleme süresi , beklentide yeni nokta başına 'dir.2pO(1)


BTW Lipton'un tanımladığı gibi algoritmanın versiyonuna değil, ilk yorumda (ve Kleinberg ve Tardos kitabında) açıklandığı gibi.
Sasho Nikolov

Sadece beklenti içinde, bkz. Domotorps cevap.
Raphael

Kendinizi deterministik algoritmalarla sınırlamak istediğiniz hiçbir yer görmüyorum. rabin algoritması tam olarak ilginçtir, çünkü karar ağacının alt sınırları etrafından geçer (bu, karşılaştırma sıralaması ile tamsayı sıralama algoritmaları için daha düşük sınırlara benzer). btw, muhtemelen rabin alt sınır etrafında gitmek için kullanır, yani ızgara erişmek için kullanılan karma hile
Sasho Nikolov

4
"Rabin daha fazla kullanır": Re gerçek sayı girişlerini tamsayılara yuvarlama yeteneği. Bu konuda çok dikkatli olunmalıdır: standart aritmetik işlemler ve gerçek sayılar üzerinde yuvarlama yapabileceğiniz bir hesaplama modeli oluşturursanız, hepsi işlem başına sabit zamanda, o zaman polinom zamanında PSPACE-complete problemlerini çözmek mümkündür bu modelde. Ancak Rabin yalnızca girdi sayılarını (farklı iterasyonlarda farklı hassasiyet seviyelerine) yuvarlar ve bu sınırlı yuvarlama şekli sorunlu değildir.
David Eppstein

@SashoNikolov içinde en kötü durum zamanını arıyordum , bu yüzden de 2. sorudaki en kötü durum arıyordum . Bunun algoritmanın deterministik olup olmadığı ile ilgisi yok. Beklenen ve itfa edilen zamanı birleştirirseniz ne olacağından emin değilim. o(nlogn) O(1)
Raphael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.