PYTHON İLE OLASI TÜM PERMÜTASYON VE KOMBİNASYONLARI LİSTELEME


Permütasyon ve Kombinasyon Nedir

n elemanlı bir kümenin elemanlarını -yerleri önemsenerek- bir sırada yazmaya onun bir permütasyonu denir. Yerlerini önemsemeden sıralama işlemine de kombinasyon denir.

Örneğin "A, B, C" harflerinin 3'erli gruplar halinde tüm permütasyon ve kombinasyonları aşağıdaki gibidir.


Dikkat ederseniz kombinasyonda -kendi aralarında- sıralamaya önem verilmediği için sadece bir sonucu vardır. Ama permütasyonda kendi aralarında sıralamanın önemli olmasından dolayı 6 sonuç bulunmaktadır.
Yine aynı şekilde "A, B, C" elemanları bulunan kümenin 2'şerli gruplar ile  permütasyonu ve kombinasyonu ise aşağıdaki gibi olacaktır.


Python ile Sıralama Listeleri Oluşturma

Tüm bu sıralama çıktılarını görmek için Python'da standart (yüklü) olarak gelen itertools modülünden faydalanacağız.
Yukarıda ki örneklerimizi koda dökersek.


Burada itertools modülünün combinations ve permutations fonksiyonları ile bütün sıralamalara ulaşabiliyoruz.
Fonksiyonların kullanımında dikkat etmemiz gereken olay ilk parametreye sıralamak istediğimiz değerleri bir liste halinde veriyoruz. İkinci parametrede ise kaçarlı gruplar halinde olacağını belirtiyoruz. Böylece fonksiyonumuz bütün sıralama sonuçlarını (permütasyon veya kombinasyon) bize bir liste halinde veriyor.

Güzel bir örnekle yazımızı sonlandıralım. Project Euler sitesindeki 24. soruyu hep beraber çözelim.
Soru: 0, 1, 2 'nin alfabetik sıralı (küçükten büyüğe) permütasyonları; 012 021 102 120 201 210 'dur.
0, 1, 2, 3, 4, 5, 6, 7, 8 ve 9'un alfabetik sıraya göre bir milyonuncu permütasyonu  kaçtır?
Cevap: itertools, permütasyon fonksiyonu ile listenin verilen ilk elemanlarından başlayarak sıralı bir listeleme döndürmektedir. O zaman yapmamız gereken gayet basit.


0'dan 9'a kadar listemizin sıralı permütasyonlarını bulmasını istedik ve bunun bir milyonuncu elemanını ([999999] ile) alıp ekrana bastırdık.
NOT: Python'da listenin ilk elemanı 0 ile başladığı için bir milyonuncu eleman 999999'a denk gelmektedir.

Yorumlar

Popüler Yayınlar