arasında görünmeyen sayıları yinelemeli olarak bulmaya dayanan farklı bir yaklaşım . biliyorsanız, kümesine ' ların aşırı yaklaştırılması . Benzer şekilde, , olduğunu bildiğimizde , 'nin . Açıkçası, ne kadar küçük olursa , bu aşırı yaklaşım o kadar yararlı olur ve aynı şey için de geçerlidir . Benim yaklaşımım, bu aşırı yaklaşımları yinelemeli olarak geliştirmeye, yani bu kümelerin boyutunu yinelemeli olarak azaltmaya dayanır (daha fazla değeri imkansız olarak dışladığımız için).{a1,…,a6}Aa{a1,…,a6}⊆ABb{b1,…,b6}⊆BAB
Bu yaklaşımın temel için bir yöntemdir arıtma : aşırı yaklaşım verilen için 'nın ve bir aşırı yaklaşım için ', yeni bir aşırı yaklaşımının bulunması s için 'nın bu şekilde . Özellikle, normalde den küçük olacaktır bu bizim için aşırı yaklaşım rafine sağlar, böylece 's.AaBbA∗aA∗⊊AA∗Aa
Simetri ile, esas olarak aynı trick bize yönelik aşırı yaklaşımı rafine sağlayacak : 'aşırı yaklaşım verilen s için ler ve aşırı yaklaşımı' için s', yeni over üretecek -approximation için Var.bAaBbB∗b
Şimdi, nasıl iyileştirme yapacağımı söyleyeyim, o zaman bu sorun için tam bir algoritma elde etmek için her şeyi bir araya getireceğim. Aşağıda, nin farklılıklar kümesini göstermesine izin verin , yani ; verildiğinde rafine bir aşırı yaklaşım bulmaya odaklanacağız .DD={ai−bj:1≤i,j≤6}A∗A,B
Ayrıntılandırma nasıl hesaplanır. tek bir fark . kümesini göz önünde bulundurun . ' fazla yaklaştığı bilgisine dayanarak, en az bir öğesinin öğesi olması gerektiğini . Bu nedenle, elementlerin her birini, muhtemelen dahil edilecek bir sayı için "öneri" olarak ele alabiliriz . Öyleyse, tüm farklılıkları inceleyelim ve her biri için tarafından hangi sayıların "önerildiğini" belirleyelim .d∈Dd+B={d+y:y∈B}Bbd+B{a1,…,a6}d+BAd∈Dd
Şimdi , bu işlem sırasında sayısının en az 6 kez emin olacağım. Neden? Fark nedeniyle olan , ve bunu işlem zaman, bu anlaşılacağı sayıların biri olacaktır (o garanti konum yana , mutlaka içerecektir ). Benzer şekilde, fark içinde bir yere görünür , ve neyin sebep olacak tekrar önerilebilir için. Bu şekilde, için doğru değerin en az 6 kez görüyoruz . Aynı durum ve için dea1a1−b1Da1b1∈B(a1−b1)+Ba1a1−b2Da1a1a2a3, ve bunun gibi.
Bu nedenle, en az 6 kez önerilen sayılar kümesi olsun . Bu bir aşırı yaklaşım olacağından emin yukarıdaki yorumlara göre 'ın,.A∗a∗a
Bir optimizasyon olarak, bulunmayan tüm önerileri hemen filtreleyebiliriz : başka bir deyişle, farkını , değerlerinin tümünü önerecek şekilde ele alabiliriz . Bu, sahip olmamızı sağlar . nin kesinlikle daha küçük olmasını umuyoruz ; garanti yok, ama her şey yolunda giderse, belki de olur.Ad(d+B)∩AA∗⊆AA∗A
Bunu bir araya getirirsek elde etmek için rafine etme algoritması aşağıdaki gibidir:A,BA∗
Let . Bu, çoklu öneriler kümesidir.S=∪d∈D(d+B)∩A
Her bir değerin kaç kez göründüğünü sayın . , en az 6 kez görünen değerler kümesi olsun . (Bu, bir dizi yapı tarafından etkili bir şekilde uygulanabilecek başlangıçta başlangıçta tüm sıfır 251, ve sayısı her zaman önerilmektedir, sen artırmak ; en sonunda ile süpürme elemanlar, değeri 6 ya da arayan ) büyükSA∗Sasa[s]a
elde etmek için daraltmak için benzer bir yöntem oluşturulabilir . Temel olarak yukarıdaki şeyleri tersine çevirir ve bazı işaretleri çevirirsiniz: örneğin, yerine bakarsınız .A,BB∗d+B−d+A
Başlangıçta fazla tahmin nasıl hesaplanır. İlk fazla tahminimizi almak için bir fikir, olduğunu varsaymak (wlog) . Her değerinin arasında bir yerde görünmesi gerektiği sonucuna , bu nedenle farkları listesi 's için ilk aşırı olarak kullanılabilir . Ne yazık ki, bu bize 'ler için çok faydalı bir aşırı tahmin vermiyor .b1=0aiDDab
Daha iyi bir yaklaşım, 'nın birinin değerini de tahmin etmektir . Başka bir deyişle, olduğunu varsayıyoruz (wlog) ve 'ların ilk aşırı tahmini olarak kullanıyoruz . Sonra, bu 36 değerden hangisinin gerçekten ' biri olduğunu tahmin ediyoruz , diyelim . Bu bize 'ler için aşırı bir yaklaşım verir . Bu ilk aşırı yakınlaştırma , ardından yakınsamaya kadar tekrar tekrar iyileştirir ve sonucun doğru olup olmadığını test ederiz . bir tane bulana kadar 36 farklı tahminle (ortalama 6 tahmin yeterli olmalı) 36 defaya kadar tekrar ediyoruz.ab1=0A=Daaa1B=a1−DbA,Ba1
Tam bir algoritma. Artık hesaplamak için tam bir algoritmaya sahip olabiliriz . Temel olarak, ve için bir başlangıç aşırı yaklaşımı elde ederiz , daha sonra tekrar tekrar rafine edilir.a1,…,a6,b1,…,b6AB
Tahmin edin: her , olduğunu tahmin edin . Aşağıdakileri yapın:z∈Da1=z
Başlangıç aşırı yaklaşım: tanımlamak ve .A=DB=z−D
Yinelemeli ayrıntılandırma: Yakınsamaya kadar aşağıdakileri tekrar tekrar uygulayın:
- Gelişmiş yeni bir aşırı yaklaşım için ve 's.A,BB∗b
- Refine Yeni bir aşırı yaklaşımı olsun ait 's.A,B∗A∗a
- Let ve .A:=A∗B:=B∗
Başarıyı kontrol edin: Ortaya çıkan kümelerinin her birinin boyutu 6 ise, sorunun geçerli bir çözümü olup olmadığını test edin. Eğer öyleyse, dur. Değilse, aday değerleri üzerindeki döngüye devam edin .A,Bz
Analiz.
Bu işe yarayacak mı? Sonunda ve mi yoksa sorunu tamamen çözmeden sıkışacak mı? Bunu öğrenmenin en iyi yolu muhtemelen test etmektir. Ancak, parametreleriniz için evet, etkili olacağını umuyorum.A={a1,…,a6}B={b1,…,b6}
# 1 yöntemini kullanırsak,çok büyük değil, sezgisel olarak setlerin boyutlarının monoton olarak küçülmesini bekliyorum. Türetmek düşünün dan . Her fark önerirdeğerleri; bunlardan biri doğrudur ve diğeri (sezgisel olarak) rastgele sayılar olarak ele alınabilir. Eğer arasında görünmeyen bir sayıdır 's, olasılık o filtreleme hayatta ve eklenir şey nedir ? Eh, hakkında önerilmesini|A|,|B|A∗A,Bd|B||B|−1xaA∗a(|B|−1)×36/251toplam kez (ortalama olarak, bunun karekökü hakkında standart sapma ile). Eğer , olasılık olduğu yanlış Survives filtreleme ile ilgili olmalıdır (süreklilik düzeltmesi ile binom normal yaklaşımıyla) kadar. (Eğer olasılık küçüktür , örneğin, daha küçük olan , beklemek ı boyutunu bekliyoruz.) ilgili olması , dan kesinlikle daha küçük olduğu için aşırı yaklaştırmayı kesinlikle geliştirecektir. . Örneğin, , o zaman bu buluşsal yöntemlere dayanarak|B|≤36xp=0.4|B||B|=30p≈0.25A∗p(|A|−6)+6|A||A|=|B|=36|A∗|≈18 , ki bu.|A|
Bu nedenle, çalışma süresinin çok hızlı olacağını tahmin ediyorum. Ben arıtma 3-5 hakkında tekrarları yakınlaşma, en tipik ve 6 hakkında tahminler yeterli olmasını bekliyoruz muhtemelen yeterli olacaktır. Her iyileştirme işlemi belki birkaç bin hafıza okuma / yazma içerir ve bunu 20-30 kez yapabiliriz. Bu nedenle, belirttiğiniz parametreler için bunun çok hızlı olmasını bekliyorum. Ancak, kesin olarak öğrenmenin tek yolu denemek ve iyi çalışıp çalışmadığını görmek.z