Kombinasyon Nedir?
Kombinasyon, belirli bir kümeden belirli sayıda öğe seçmenin yollarını ifade eder. Özellikle matematiksel ve istatistiksel alanlarda önemli bir kavramdır. Örneğin, 3 kişilik bir grup oluşturmak için 5 kişilik bir takımdan seçim yapmanız gerektiğinde, bu seçimlerin farklı yollarını bulmak kombinasyon kullanımı ile mümkündür. Kombinasyonlar, sıralamanın önemli olmadığı durumlarda kullanılır. Bunun anlamı, örneğin A, B ve C’nin bir grup olarak seçilmesi durumunda, bu grubun sıralanmış hali (A, B, C) veya başka bir şekilde (B, C, A) olarak adlandırılmaması gerektiğidir. Dolayısıyla, öğelerin sıralanmasına dikkat etmeden gruplar oluştururuz.
Python’da kombinasyonlar genellikle itertools.combinations
fonksiyonu kullanılarak oluşturulur. Ancak, bazen dış kütüphanelere bağımlı kalmadan bu işlevselliği elde etmek isteyebiliriz. Bu yazıda, itertools kullanmadan nasıl kombinasyonlar oluşturabileceğimizi adım adım keşfedeceğiz.
Bunun için öncelikle bir küme oluşturmamız gerekmektedir. Örneğin, [A, B, C, D] gibi bir küme alalım. Bu kümeden 2 öğe alarak kombinasyonlar oluşturmak isteyeceğiz. Kombinasyonları manuel olarak oluşturmanın temel mantığı, her bir öğenin diğerleriyle birleşiminden oluşur. Dolayısıyla, bu kavram üzerinde çalışarak itertools dışındaki yöntemleri geliştirebiliriz.
Kendi Kombinasyon Fonksiyonumuzu Yazma
Kombinasyon oluşturmak için bir fonksiyon yazmak için öncelikle bazı temel işlemleri anladığımızdan emin olmalıyız. Elimizdeki elemanları bir liste içinde tutacağız ve belirli bir boyutta alt listeler oluşturacağız. Bu işlemi yeniden uygulamak için rekursif bir yaklaşım kullanmak özellikle etkilidir. Rekürsif fonksiyonlar, bir problemin alt problemlerini çözerek genellikle karmaşık işlemleri basitleştirmede güçlü bir araçtır.
Aşağıdaki kod örneğinde, belirtilen uzunlukta alt listeler oluşturmak için rekursif bir fonksiyon yazacağız:
def kombinasyonlar(kume, uzunluk):
if uzunluk == 0:
return [[]] # boş küme
if len(kume) < uzunluk:
return [] # yeterli eleman yok
ilk = kume[0]
kalan = kume[1:]
kombinasyonlar_ile_ilk = kombinasyonlar(kalan, uzunluk - 1)
for i in kombinasyonlar_ile_ilk:
i.insert(0, ilk)
return kombinasyonlar_ile_ilk + kombinasyonlar(kalan, uzunluk)
Burada kombinasyonlar
fonksiyonu, bir küme ve istenen uzunlukta kombinasyonlar alır. Eğer uzunluk sıfır ise, boş bir küme döner. Eğer yamadan fazla eleman varsa, seçilen ilk öğe ve kalan küme üzerinden tekrar kombinasyon oluşturulmaktadır. Bu işlem, temel fikir olan 'ilk elemanı seç' ve 'seçme' işlemini tekrarlayarak devam eder.
Kullanımı aşağıdaki gibi olacaktır:
kume = ['A', 'B', 'C', 'D']
uzunluk = 2
sonuc = kombinasyonlar(kume, uzunluk)
print(sonuc)
Kombinasyonları Kullanma ve Test Etme
Yukarıda oluşturduğumuz fonksiyonu çalıştırdığımızda, verilen kümeden belirtilen uzunlukta kombinasyonlar elde ederiz. Örneğin, A, B, C, ve D kümesinden 2 öğe seçerek kombinasyonlar oluşturduğumuzda, [