Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Diğer => Konuyu başlatan: mr.engineer - 15 Nisan 2020, 21:19:30

Başlık: Kombinasyon algoritması
Gönderen: mr.engineer - 15 Nisan 2020, 21:19:30
Elimdeki n-bitlik binary sayının k tane biti 1 olacak şekilde tüm kombinasyonları bulabilecek bir algoritma arıyorum. İntertte lexicographical order var harfler için yapmışlar büyüklük kıyaslıyorlar. Binary sayılara bunu uygulamanın bir yolu var mı ya da farklı algoritma önerebilecek var mı?

Örnek:
0011
0101
1001
0110
1010
1100
Başlık: Ynt: Kombinasyon algoritması
Gönderen: power20 - 15 Nisan 2020, 21:44:16
Sadece 1ve0 kullanılacağı ve sıra önemli olduğu için Kombinasyon değil Permütasyondur. Bu bildiğimiz binary sayıcıdır.

Gerekirse sayma esnasında ayıklama yapılır.

Örneğin  1100 ile 0011 aynı anlama geliyorsa bunlardan biri alınır.
Başlık: Ynt: Kombinasyon algoritması
Gönderen: mr.engineer - 15 Nisan 2020, 22:17:30
Alıntı yapılan: Kılıç - 15 Nisan 2020, 21:44:16Sadece 1ve0 kullanılacağı ve sıra önemli olduğu için Kombinasyon değil Permütasyondur. Bu bildiğimiz binary sayıcıdır.

Gerekirse sayma esnasında ayıklama yapılır.

Örneğin  1100 ile 0011 aynı anlama geliyorsa bunlardan biri alınır.

40 bitin herhangi 5 bitini set edeceğim. Sadece C(40,5) tane durumu istiyorum. Eğer sayma sırasında ayıklama yaparsam 2^40 a kadar saymam gerekir ve bu da çok uzun bir süre olacak. Daha verimli bir algoritma kullanmam gerekiyor.
Başlık: Ynt: Kombinasyon algoritması
Gönderen: sinus - 15 Nisan 2020, 22:43:06
En sağdaki veya soldaki bit sabit "1" tutulur. Diğer bit sırayla en son bit "1" olana kadar devam edilir. Sabit olan bit bir yana kaydırılır, işleme devam edilir. Sabit olan 1'in bulunduğu bitlere tekrar bakılmaz.

3 bit için >>> 011, 101, 110

4 bit için >> 0011, 0101, 1001, 0110, 1010, 1100
Başlık: Ynt: Kombinasyon algoritması
Gönderen: mehmet - 15 Nisan 2020, 23:10:21
"Eratosthenes Kalburu" işe
yarayabilir.
Başlık: Ynt: Kombinasyon algoritması
Gönderen: mr.engineer - 15 Nisan 2020, 23:17:25
Alıntı yapılan: sinus - 15 Nisan 2020, 22:43:06En sağdaki veya soldaki bit sabit "1" tutulur. Diğer bit sırayla en son bit "1" olana kadar devam edilir. Sabit olan bit bir yana kaydırılır, işleme devam edilir. Sabit olan 1'in bulunduğu bitlere tekrar bakılmaz.

3 bit için >>> 011, 101, 110

4 bit için >> 0011, 0101, 1001, 0110, 1010, 1100
Tamamadır, anladım teşekkürler.




Alıntı yapılan: mehmet - 15 Nisan 2020, 23:10:21"Eratosthenes Kalburu" işe
yarayabilir.

Teşekkürler buna da bakayım daha hızlı çalıştıracaksa faydalı olabilir.
Başlık: Ynt: Kombinasyon algoritması
Gönderen: yas - 16 Nisan 2020, 00:02:46
Birde bu şekilde yapabilirsin, belki hangi bitlerin 1 yada sıfır olduğunu karşılaştırmakta isteyebilirsin.

Örneğin 8 bit için taranacak değişken a sayım sonucu da b olsun
b = 0
c = 1
while c <= $80
If (a and c) = c then INC b
c = c * 2
wend