Permutasi dan Kombinasi di Python

Di Python kita bisa dengan mudah mencari permutasi dan kombinasi. Python menyediakan metode langsung untuk mendapatkan permutasi dan kombinasi dari suatu sequence. Metode ini terdapat di dalam paket itertools.

Permutasi

Pertama sekali untuk dapat melakukan permutasi di Python kita harus mengimpor fungsi permutations dari paket itertools. Fungsi permutations() menerima argumen list sebagai input dan mengembalikan sebuah list berisi semua permutasi yang mungkin.

  # Program Python untuk mencetak semua # permutasi menggunakan fungsi dari library python from itertools import permutations # Mendapatkan semua permutasi dari [1, 2, 3] perm = permutations([1, 2, 3]) # Print semua permutasi for i in perm: print(i)

Output

(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

Fungsi permutasi membangkitkan permutasi n! jika banyak anggota = n.

Jika kita menginginkan permutasi dengan panjang yang ditentukan, maka caranya adalah sebagai berikut:

  # Program Python untuk mencetak semua # permutasi dengan panjang ditentukan from itertools import permutations # Mendapatkan semua permutasi dari [1, 2, 3] perm = permutations([1, 2, 3],2) # Print semua permutasi for i in perm: print(i)

Output

(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)

 


Kombinasi

Fungsi combinations menerima argumen list dan sebuah bilangan r, dan mengembalikan daftar tuple dari semua kombinasi dengan panjang r yang mungkin.

  # Program Python untuk mencetak semua # kombinasi dengan panjang tertentu from itertools import combinations # Mendapatkan semua kombinasi dari [1, 2, 3] # dengan panjang 2 comb = combinations([1, 2, 3], 2) # Print semua kombinasi for i in comb: print(i)

Output

(1, 2)
(1, 3)
(2, 3)

Kombinasi secara default akan ditampilkan sesuai dengan urutan inputnya. Jadi, jika list input diurutkan, maka hasil kombinasinya akan terurut juga.

  # Program Python untuk menampilkan semua kombinasi # dari input yang tidak berurut from itertools import combinations # Mendapatkan kombinasi dari [2, 1, 3] # dan panjang 2 comb = combinations([2, 1, 3], 2) # Menampilkan kombinasi for i in comb: print(i)

Output

(2, 1)
(2, 3)
(1, 3)

Pada kombinasi, semua elemen diperlakukan unik sesuai posisinya, dan bukan berdasarkan nilainya. Jadi, jika elemen inputnya unik, tidak ada nilai yang berulang ditiap kombinasi.

 

  # Program Python untuk menampilkan semua kombinasi # dengan elemen yang sama from itertools import combinations # Mendapatkan kombinasi dari [1, 1, 3] # dan panjang 2 comb = combinations([1, 1, 3], 2) # Menampilkan kombinasi for i in comb: print(i)

Output

(1, 1)
(1, 3)
(1, 3)

Jika kita menginginkan kombinasi yang elemennya sama, kita bisa menggunakan fungsi combinations_with_replacement()

  # Program Python untuk menampilkan semua kombinasi # dengan mengizinkan kombinasi anggota yang sama from itertools import combinations_with_replacement # Mendapatkan kombinasi dari [1, 1, 3] # dan panjang 2 comb = combinations_with_replacement([1, 2, 3], 2) # Menampilkan kombinasi for i in comb: print(i)

Output

(1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3)