membangkitkan kombinasi
Membangkitkan Kombinasi dari sebuah himpunan S berarti membentuk himpunan C yang merupakan salah satu subhimpunan dari S.
Permasalahan umum dalam membangkitkan kombinasi adalah:
Diberikan sebuah himpunan S, tentukan:
Setiap himpunan bagian {a, b, c, d} yang berisi 4 elemen, dapat direpresentasikan sebagai bilangan biner 4 digit, yang masing masing bit menunjukkan ada tidaknya elemen tersebut dalam himpunan. Himpunan {a, c} misalnya, dapat direpresentasikan dengan bilangan biner 1010 (atau desimal 10), jika elemen-elemen a, b, c, d berturut-turut diwakili oleh bit ke 3, 2, 1, dan 0.
Berikut ini adalah pseudocode-nya:
Permasalahan umum dalam membangkitkan kombinasi adalah:
Diberikan sebuah himpunan S, tentukan:
- Semua kombinasi yang mungkin dari himpunan S
- Semua kombinasi r elemen dari himpunan S
- Kombinasi r elemen dari himpunan S, pada indeks ke-i sesuai urutan leksikografik
Daftar isi[sembunyikan] |
Membangkitkan Semua Kombinasi yang Mungkin
Cara paling mudah untuk membangkitkan semua kombinasi (himpunan bagian) yang mungkin adalah dengan menggunakan representasi biner.Setiap himpunan bagian {a, b, c, d} yang berisi 4 elemen, dapat direpresentasikan sebagai bilangan biner 4 digit, yang masing masing bit menunjukkan ada tidaknya elemen tersebut dalam himpunan. Himpunan {a, c} misalnya, dapat direpresentasikan dengan bilangan biner 1010 (atau desimal 10), jika elemen-elemen a, b, c, d berturut-turut diwakili oleh bit ke 3, 2, 1, dan 0.
Himpunan : { a, b, c, d } Representasi biner : 1 0 1 0 Himpunan bagian : { a, c }Representasi seperti ini memetakan setiap macam kombinasi dengan tepat satu bilangan asli. Daftar berikut menunjukkan semua kombinasi dari {a, b, c, d} beserta representasi binernya.
Himpunan Biner Desimal --------------- ------ ------- { } 0000 0 { a } 1000 8 { b } 0100 4 { c } 0010 2 { d } 0001 1 { a, b } 1100 12 { a, c } 1010 10 { a, d } 1001 9 { b, c } 0110 6 { b, d } 0101 5 { c, d } 0011 3 { a, b, c } 1110 14 { a, b, d } 1101 13 { a, c, d } 1011 11 { b, c, d } 0111 7 { a, b, c, d } 1111 15Berdasarkan ini kita dapat menyusun sebuah algoritma yang akan membentuk semua kombinasi yang mungkin, berdasarkan bilangan asli yang berkaitan dengannya. Banyak kombinasi yang mungkin untuk sebuah himpunan S, sesuai dengan banyaknya elemen himpunan kuasa dari S, adalah:
Berikut ini adalah pseudocode-nya:
Diberikan sebuah himpunan S: n = banyak elemen S for i = 0 to 2n-1 begin B = representasi bilangan i dalam bentuk biner S' = { } for j = 0 to n-1 begin if digit ke-j dari B adalah 1 then tambahkan kepada S' elemen ke-j dari S end Tuliskan S' endKelemahan algoritma ini adalah daftar kombinasi yang dihasilkan tidak otomatis dalam keadaan terurut secara leksikografik.
Komentar
Posting Komentar