Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 1800

 
Alexey Vyazmikin :

Lütfen bir kombinatorik problemini çözmeme yardım edin!

N farklı benzersiz eleman vardır, bunlardan bir seferde X eleman(lar) almanız gerekir, giriş değeri ise olası tüm kombinasyonların sayısıdır.

Bunun bir formülü veya işlevi var mı?

Giriş işlevi, öğeleri, kombinasyondaki öğelerin sayısını ve kombinasyon numarasını içeren bir dizi almalı ve çıktıya, öğelerin dizinlerini içeren bir dizi vermelidir.

Bana yardım et lütfen!

Belki N'den rastgele X aramak daha kolaydır?
Bir kombinasyon numarası ile çalışıyorsanız, bu kombinasyonu numaradan içeride oluşturmanız gerekir.

Ve çok sayıda kombinasyon numarası olabilir. Örneğin, 100'den 10'unu seçmek için milyonlarca veya milyarlar (bir dereceye kadar) olacaktır. Hangi kombinasyonu alacağınıza nasıl karar vereceksiniz? 1.2, 158451 veya 5454554?

Rastgele benzersiz olanı bulmak daha kolaydır, sadece rastgele N'den 1'i, ardından ikinciyi vb. seçin. Xth'e.
Seçerken, öğe zaten seçiliyse, çoğaltmayı atlayın ve seçimi tekrarlayın. Onlar. X'ten daha fazla deneme olacaktır. Örneğin, 100 üzerinden 90 alırsanız, çok sayıda yinelenen deneme olacaktır.

Hız için N dizisinden seçilen elemanı atabilir ve kalan N-1 arasından seçim yapabilirsiniz. (Seçilen elemanı sonuncusu ile değiştirin ve diziyi 1 kısaltın.) Bu şekilde tam olarak X denemede X rastgele eleman bulacaksınız. N > 3000 eleman varsa, yerleşik olmayan, ancak daha karmaşık bir rastgele jeneratör almak daha iyidir. Rastgele karşılaştırma burada.

Как MathRand() генерирует значения?
Как MathRand() генерирует значения?
  • 2010.08.06
  • www.mql5.com
Общее обсуждение: Как MathRand() генерирует значения?
 
Alexey Nikolaev :

uygun olabilir

Veya Okulov'un "Algoritmalarda Programlama" ders kitabında "Kombinasyonlar" paragrafını görebilirsiniz.

Dizine göre bir kombinasyon elde etmenizi sağlayan kesinlikle bir formül var mı? Lütfen yazarmısınız.

 
Valeriy Yastremskiy :

Optimize edilmiş parametreler ve büyüme alanları, dengenin düşmesi. Fikir, optimizasyonla değil, düşen dengenin büyüme bölgeleri için önemli özellikleri çıkararak ilginçtir, ancak bilim, SB'nin varlığında VR'nin herhangi bir özelliği aracılığıyla bunun zor veya imkansız olduğunu söylüyor. Ve bir mat bul. Seriyi yeterli doğrulukla tanımlayan modeller zordur ve hangi boyutta VR'ye ihtiyaç duyulduğu net değildir.

Daha simetrik koşullar bana daha doğru görünüyor. Sıra tersine çevrilebilir.

Bilim pek çok şey söyleyebilir, ancak potansiyelin ne olduğunu denemeniz ve kontrol etmeniz gerekir, belki ideal olmak imkansızdır ve ideal olmayan bir seçenek genel olarak performansı artırmak için yeterli olacaktır.

 
elibrarius :

Belki N'den rastgele X aramak daha kolaydır?
Kombinasyon numarası ile çalışıyorsanız, bu kombinasyonu numaradan oluşturmanız gerekir.

Ve çok sayıda kombinasyon numarası olabilir. Örneğin, 100 üzerinden 10'u seçmek için. Milyonlarca veya milyarlarca (bir dereceye kadar) olacaktır. Hangi kombinasyonu alacağınıza nasıl karar vereceksiniz? 1.2, 158451 veya 5454554?

Rastgele benzersiz olanı bulmak daha kolaydır, sadece rastgele N'den 1'i, ardından ikinciyi vb. seçin. Xth'e.
Seçerken, öğe zaten seçiliyse, çoğaltmayı atlayın ve seçimi tekrarlayın. Onlar. X'ten daha fazla deneme olacaktır. Örneğin, 100 üzerinden 90 alırsanız, çok sayıda yinelenen deneme olacaktır.

Hız için N dizisinden seçilen elemanı atabilir ve kalan N-1 arasından seçim yapabilirsiniz. (Seçilen elemanı sonuncusu ile değiştirin ve diziyi 1 kısaltın.) Bu şekilde tam olarak X denemede X rastgele eleman bulacaksınız. N > 3000 eleman varsa, yerleşik olmayan, ancak daha karmaşık bir rastgele jeneratör almak daha iyidir. Rastgele karşılaştırma burada.

Amaç göğüste. 250.000 yapraktan 15.000 benzersiz bölme elde edildi. 3 bölmeli tam bir yaprak araması, tahmin ettiğim gibi, bir hedef değer için yaklaşık 250 gün sürecektir. Bölmelerin gruplandırılması gerektiğini düşünüyorum, bunu yapmak için ilk bölmeleri seçin ve kendi alanlarında etkinleştirilen bölmeleri arayın ve ancak bundan sonra ortaya çıkan her grubu ayrı ayrı numaralandırın. Bu yaklaşım, kombinasyon sayısını önemli ölçüde azaltacaktır.

 
Alexey Vyazmikin :

Dizine göre bir kombinasyon elde etmenizi sağlayan kesinlikle bir formül var mı? Lütfen yazarmısınız.

Bu bir formül değil, bir algoritma. Okulov'a bak, bu biraz ve kolay.

 
Aleksey Nikolaev :

Bu bir formül değil, bir algoritma. Okulov'a bak, bu biraz ve kolay.

İndirdim ve baktım - teşekkürler!

"Kolay" olarak derecelendirdilerse, anlaşılan çözmüşlerdir, ama ben anlamadım - oradaki programlama dili benim için net değil, metin açıklamasında yetersiz bir ifade var, size materyal hakkında sorular sorabilir miyim?

 
Alexey Vyazmikin :

İndirdim ve baktım - teşekkürler!

"Kolay" olarak derecelendirdilerse, anlaşılan çözmüşlerdir, ama ben anlamadım - oradaki programlama dili benim için net değil, metin açıklamasında yetersiz bir ifade var, size materyal hakkında sorular sorabilir miyim?

Ölçülü iseniz, o zaman sorun. Buradaki fikir basit - tüm kombinasyonlardan oluşan bir dizi (iki boyutlu) oluşturuyoruz ve ardından sayıya göre bir satır (veya sütun) alıyoruz. İki seçenek - ya diziyi saklarız ya da her seferinde yeniden sayarız (ya bellekten ya da zamandan tasarruf ederiz)

İşte R'de bir örnek:

 # i - номер, n - элементов исходно, k - сколько выбираем из n
i2c <- function (i,n,k) {m <- combn(n,k); m[,i]}

> i2c( 3 , 10 , 5 )
[ 1 ] 1 2 3 4 7
 
Aleksey Nikolaev :

Ölçülü iseniz, o zaman sorun. Buradaki fikir basit - tüm kombinasyonlardan oluşan bir dizi (iki boyutlu) oluşturuyoruz ve ardından sayıya göre bir satır (veya sütun) alıyoruz. İki seçenek - ya diziyi saklarız ya da her seferinde yeniden sayarız (ya bellekten ya da zamandan tasarruf ederiz)

İşte R'de bir örnek:

Dizi döngüler aracılığıyla oluşturulmuştur ve bu çok uygun olmayan bir zaman kaybıdır. İlginç bir seçenek, bir ön tam tablo olmadan değeri hesaplama yoluyla bulmaktır.

 
Alexey Vyazmikin :

Dizi döngüler aracılığıyla oluşturulmuştur ve bu çok uygun olmayan bir zaman kaybıdır. İlginç bir seçenek, bir ön tam tablo olmadan değeri hesaplama yoluyla bulmaktır.

Böyle bir formülün var olup olmadığından emin değilim.

 
Alexey Nikolaev :

Böyle bir formülün var olup olmadığından emin değilim.

Bir tür algoritma olmalı, aksi takdirde 3 kombinasyonun 15.000 öğesi için 4 terabaytlık bir diziyi bellekte tutmanız gerektiği ortaya çıkıyor! Ve dahası, 1 elemana 8 bit harcanırsa bunu hesapladım.