PERBANDINGAN ENUMERASI PERMUTASI N DENGAN 2 SIKLUS
BERDASARKAN RUMUSAN BILANGAN STIRLING DENGAN
RUMUSAN SULISTYO
Meta Meysawati
e-mail : yagami_26mey@hotmail.com Jurusan Teknik Informatika Universitas Gunadarma Jl Margonda 100
ABSTRAK
Enumerasi adalah menghitung banyak objek pada suatu objek kombinatorik. Kombinatorik merupakan ilmu yang mempelajari sifat-sifat matematika dari struktur diskrit. Algoritma pembangkit permutasi banyak dipakai dalam analisa graf. Komputer graf biasa diawali dengan proses penginputan edge-edge yang menentukan proses dalam komputasi graf, terutama dari sisi running time program komputer yang terkait. Banyak masalah graf yang akan lebih efisien jika graf dinyatakan sebagai permutasi siklus.
Secara umum, banyaknya n permutasi dengan m siklus dapat dihitung berdasarkan metode berdasarkan rumus bilangan Striling tanpa tanda jenis pertama (Unsignless Stirling
Number of The First Kind). Selain itu, menghitung enumerasi permutasi n dengan m siklus
juga ditawarkan oleh Sulistyo. Dalam penelitian ini, mengenumerasikan permutasi n dengan 2 siklus dilakukan dengan cara membandingkan kedua rumusan tersebut ke dalam bentuk bahasa pemograman, yaitu Java dan melakukan uji coba dengan membandingkan dalam hal
running time.
PENDAHULUAN
Algoritma pembangkit permutasi banyak dipakai dalam analisa graf seperti model optimasi berbasis graf, computer
vision, berbagai masalah jaringan termasuk
komputer dan bahkan jaringan sosial (social
networks). Komputasi graf biasanya diawali
dengan proses penginputan edge-edge ini sangat menentukan proses komputasi graf, terutama dari sisi running time program komputasi terkait. Dengan demikian menyatakan graf sebagai permutasi dan mengembangkan algoritma yang baik untuk membangkitkan permutasi tersebut adalah sebuah topik penelitian penting (lihat misalnya [6] dan [7]). Banyak masalah graf yang akan lebih efisien jika graf dinyatakan sebagai permutasi siklus; salah satu masalah yang dimaksud adalah masalah jaringan. Selain jaringan, masalah lain yang menggunakan pernyataan permutasi siklus adalah enumerasi graf untuk menghasilkan jumlah isomer senyawa kimia [2].
Secara umum, untuk n tertentu dan bilangan
m yang menyatakan banyaknya siklus,
cacahan permutasi [n] tertentu dengan m siklus, sering dinotasikan sebagai Cn,m, dan dinyatakan dengan formula rekursif berikut: Cn,m = Cn-1,m-1 + (n-1) Cn-1,m, yang menurunkan bilangan Stirling tanpa tanda jenis pertama (unsignless Stirling number of
the first kind) [3]. Rumus Sulistyo
merupakan enumerasi permutasi n dengan m siklus yang menawarkan metode baru yang
dinyatakan dengan formula iteratif [5]. Hal tersebut melatarbelakangi penulis untuk melakukan perbandingan dalam mengenumerasikan permutasi n dengan 2 siklus.
Penelitian ini membandingkan rumus bilangan Stiling tanpa tanda jenis pertama dan rumus Sulistyo dalam hal
running time. Kedua rumusan akan
diimplementasikan kedalam bentuk bahasa pemograman, yaitu Java.
LANDASAN TEORI
ISTILAH KOMBINATORIK
Kombinatorik adalah ilmu yang mempelajari sifat-sifat matematika dari struktur diskrit dimana dalam kombinatorik struktur diskrit disebut objek kombinatorial atau objek saja. Sedangkan untuk himpunan objek kombinatorial disebut kelas
kombinatorial atau kelas saja.
Kombinatorik mempunyai 4 cabang utama ilmu yaitu, pencacahan (counting) atau enumerasi, pembangkitan atau generasi (generation), pendaftaran atau listing dan optimasi. Pada enumerasi melakukan analisa matematika untuk mendapatkan rumus cacahan struktur yang mungkin sebagai fungsi dari n atau banyaknya objek kombinatorial dalam S sedangkan pembangkitan membangun algoritma untuk membangkitkan semua struktur yang mungkin.
DEFINISI PERMUTASI Permutasi adalah pemetaan dari suatu himpunan ke dirinya sendiri. Atau secara formal:
Definisi 1: Permutasi dari himpunan S = [n]
= {1,2,...,n} adalah bijeksi π: S Æ S. Permutasi dengan π(i) = i disebut permutasi identitas.
Salah representasi dari permutasi adalah dengan perkalian siklusnya. Siklus dari permutasi adalah himpunan bagian dari suatu himpunan yang elemen-elemennya masuk dalam satu orbit atau siklus dengan panjang k dari suatu permutasi adalah urutan
a1, a2,...al sedemikian sehingga ai = π(ai-l) untuk i = 2,3, ... , l dan al = π(ak) atau
πk(ai)= ai ([3] dan [2]). Contoh, permutasi π:
Dapat diwakili oleh diagram berikut:
1 2 3 4 5 6 7
Permutasi tersebut mempunyai 4 siklus (1), (2 4 8 3), (5) dan (6 7). (2 4 8 3) adalah silkus dengan panjang l = 4, karena
π4(2) = 2. Dengan perkalian siklus, π dapat
dinyatakan sebagai π = (1) (2483) (4) (67). Karena siklus (8324) menyatakan dengan siklus yang sama dengan (2483), maka sering digunakan cara yang unik untuk menyatakan permutasi menggunakan notasi siklus, yang disebut sebagai Notasi Siklus Kanonikal. Cara ini adalah menulis elemen terbesar pada setiap siklus terlebih dahulu, kemudian mengurutkan setiap siklus dari kecil ke besar berdasarkan elemen-elemen petama pada siklus. Dengan demikian π = (1) (2483) (5) (67) dalam notasi siklus kanonikal π = (1) (5) (7 6) (8 3 2 4).
MENGENUMERASIKAN PERMUTASI
N DENGAN M SIKLUS
Untuk mengenumerasi permutasi dengan m siklus tertentu umumnya digunakan rumus bilangan Stirling tanpa tanda jenis pertama (Unsignless Stirling
Number of The First Kind). Selanjutnya
pada penelitian ini untuk bilangan Stirling tanpa tanda jenis pertama akan disebut rumus bilangan Stirling. Enumerasi permutasi dengan siklus tertentu juga ditawarkan oleh Sulistyo [5]. Sub bab berikut akan menjelaskan mengenai kedua rumusan tersebut.
BERDASARKAN RUMUS BILANGAN STIRLING
Bilangan Stirling tanpa tanda jenis pertama, dinotasikan dengan C(n,m) adalah sssbanyaknya susunan dari n objek ke dalam 1 2 3 4 5 6 7 8
1 4 2 8 5 7 6 3
m permutasi siklus yang tidak kosong. Dimana: C(n,0) = 0, n ≥ 1 C(n,n) = 1, n ≥ 0 C(n,1) = (n-1)!, n ≥ 0 C(n,m) = (n-1). c(n-1,m)+c(n-1.m-1), 1 < m < n
Mengacu kepada teori yang ada bahwa banyaknya permutasi [n] dengan m siklus adalah bilangan Stirling tanpa tanda jenis pertama c(n,m) ([3], [2]). Rumus bilangan Stirling digunakan untuk menunjukkan kebenaran algoritma yang dibangun.
BERDASARKAN RUMUSAN OLEH SULISTYO
Rumus Sulistyo dalam [5] menghasilkan rumusan enumerasi permutasi dengan siklus tertentu Cn,m yang dinotasikan dengan fl, untuk l = n – m,
Rumus diatas merupakan turunan dari hasil pembangkit permutasi n dengan m siklus menggunakan pohon pembangkit sebagaimana pada gambar 2.1, level dari pohon tersebut dinyatakan dengan l. Banyaknya objek permutasi n = [m + l] dengan m siklus pada level l merupakan rumus iteratif yang tidak rekursif.
Banyaknya simpul untuk level l pada pohon pembangkit permutasi [n] dengan m siklus tertentu pada Gambar 1 adalah fl .
Gambar 1 Pohon pembangkit permutasi [n] dengan m siklus
Pohon pembangkit permutasi [n] dengan m siklus, yang diwakili sistem ECO (2.1) adalah pohon yang banyak simpulnya pada level l = n – m sama dengan banyaknya permutasi [n] dengan m siklus, atau sama dengan kardinalitas Sn,m [5].
Khusus untuk m = 2, penempatan n pada anggota-anggota Sn,2, ditempatkan dengan cara pengembangan Johnson-Trotter. Pembagkit permutasi dengan dua siklus Cn,2 setiap anggota Sn-1,2 akan menghasilkan n-1. Untuk semua anggota Sn-1,2 akan menghasilkan anggota Sn,2 sebanyak (n-1)|Sn-1,2|. Banyaknya level dihitung dengan menjumlahkan semua jalan dari simpul akar ke simpul di level l. Fungsi pembangkit pohon permutasi [n] dengan 2 siklus
FΩ (x) = ∑ fl x1 = ∑ (l +1)! (1 +1/2 + .. +1/
(l + 1))x1 (2.3)
Gambar 2 Pohon Pembangkit Permutasi [4] dengan 2 Siklus
Untuk menyederhanakan pohon pembangkit permutasi 4 dengan 2 siklus S4,2 (gambar 2) dalam mengenumerasikan semua simpul pada level tertentu, maka pada Sulistyo [5] objek permutasi [n] dengan 2 siklus dibagi dalam dua kelompok, yaitu kelompok dimana siklus terdiri dari n saja, yaitu: (s2) = (n), ditulis sebagai πBn , dan
kelompok yang selain itu, ditulis sebagai πTn.
Penamaan kelompok ini mengikuti penamaan east-west [8]. Pohon pembangkit permutasi dengan 2 siklus yang diringkas dengan simpul menyatakan banyaknya simpul pada tiap level dengan grup tertentu. Gambar 3 adalah contoh ringkasan pohon pembangkit permutasi 6 dengan 2 siklus. (1)
(1) (2)
(2) (3) (3) (3) (4) (4) (4) (4) (5) (5) (5)
Gambar 3 Ringkasan Pohon pembangkit permutasi [6] dengan 2 siklus
Akar pada pohon dinyatakan level 0, simpul pada level 1 pada gambar 3 tertulis (1)(2) yang menunjukan banyaknya permutasi 3 dengan 2 siklus. Selanjutnya pada level 2 banyaknya simpul yang sejenis (B) tertulis (2)(3), sedangkan simpul yang mempunyai (2) simpul yang sejenis (T) mempunyai (3) anak simpul yang menunjukan banyaknya permutasi 4 dengan 2. Simpul pada level 3 yang sejenis (B) tertulis (3)(4), sedangkan simpul yang mempunyai dua jenis label (T) mempunyai masing-masing anak sebanyak (4) yang menunjukan banyaknya permutasi 5 dengan 2 siklus. Dan pada level 4 tertulis banyaknya simpul adalah (4)(5), sedangkan simpul yang mempunyai tiga simpul sejenis mempunyai (5) anak simpul.
METODE PENELITIAN
RANCANGAN APLIKASIPerancangan program merupakan tahap pertama dari pembangunan suatu program. Tahap ini terdiri dari perancangan berdasarkan (Unified Modelling Language) UML program dan rancangan interface. Rancangan aplikasi permutasi dimodelkan ke dalam 3 bentuk model UML, yaitu Use
Case Diagram, Class Diagram dan Activity Diagram.
Sebelum program jadi pada gambar 4 menerangkan awal proses pembuatan aplikasi.
Gambar 4 Diagram Umum Proses
Perancangan Aplikasi USE CASE DIAGRAMTerdapat 4 case yaitu metode bilangan Stirling, rumus Sulistyo, input banyaknya permutasi n dan m siklus dan pertolongan. Actor pada aplikasi permutasi, yaitu pemakai (user) untuk use case yang digunakan adalah memilih perhitungan dan memproses perhitungan berdasarkan rumus bilangan Stirling dan rumus Sulistyo. Pada rumus bilangan Stirling masukkan banyaknya n permutasi dan m siklus sedangkan rumus Sulistyo hanya memasukkan banyaknya permutasi n yang kemudian akan mengenumerasikan permutasi n dengan m siklus.
Gambar 5 Diagram Use Case Aplikasi Permutasi
CLASS DIAGRAM
Class terdiri dari 4, yaitu menu
utama, formStirlingNumber, formSulistyoNumber dan pertolongan. Pada
class formStirlingNumber dan formSulistyoNumber menunjukan hubungan sub class yang mewarisi bagian dari class utama.
Gambar 6 Diagram Class Aplikasi Permutasi Menu Utama -Stirling: boolean -Sulistyo: boolean -Tentang :boolean -Dispose() Pertolongan +tentang: boolean +Dispose() formStirlingNumber -permutasi : double int -siklus : double int -jumSiklus() -fak()
formSulistyoNumber -permutasi : double int -level: double int -total: int -fac: int -hitungPermutasi() -fak() UJI COBA PROGRAM JADI PENDEFINISIAN KEBUTUHAN PERANCANGAN ANTARMUKA PENGKODEA BUG
ACTIVITY DIAGRAM
Aktifitas dimulai pada state halaman menu utama, kemudian terjadi aktifitas pilih menu. Pada katifitas pilih menu terjadi percabangan aktifitas yaitu aktifitas pilih metode dan pertolongan. Aktifitas pilih metode terjadi percabangan yaitu metode bilangan Stirling dan metode oleh Sulistyo. Pada aktifitas metode bilangan Stirling akan menampilkan halaman bilangan Stirling. Sedangkan aktifitas rumus Sulistyo akan menampilkan halaman rumus Sulistyo. Hamlaman metode bilangan Stirling kemudian dilanjutkan dengan memasukkan permutasi n dan m siklus yang kemudian akan dihitung berdasarkan rumus metode bilangan Stirling tanpa tanda jenis pertama. Halaman rumus Sulistyo terjadi aktifitas memasukkan permutasi n. Sedangkan jika tidak pemakai (user) dapat kemabali ke halaman menu utama.
Pada aktifitas pertolongan akan menampilkan halaman petunjuk pengguna aplikasi dan pemakai (user) dapat kembali ke halaman menu utama. Dan aktifitas keluar akan mengarah ke final state yang merupakan akhir dari alur aktifitas pada aplikasi.
Gambar 7 Diagram Activity Aplikasi Permutasi
PSEUDOCODE
Pseudocode adalah kode atau tanda yang menyerupai (pseudo) atau merupakan penjelasan cara menyelesaikan suatu masalah.
ALGORITMA PSEUDOCODE PADA RUMUS BILANGAN STIRLING
1. Masukkan banyaknya n permutasi dan m siklus
2. Tentukan nilai Awal (n Å m) 3. Tentukan nilai kedua (m Å 1) 4. n, m Å jumSiklus
5. Jika n = m Æ 1, menuju kelangkah 11 6. m = 1 Æ fak (n-1), menuju
kelangkah 8
7. Hasil (n-1) * jumSiklus (n-1,m) + jumSiklus(n-1, m-1)
8. Tentukan bilangan Faktorial (fak) 9. Jika nÅ1 || nÅ0 ; Cetak hasilnya 1
10. Hasil Å n*fak(n-1) 11. Selesai
ALGORITMA PSEUDOCODE BERDASARKAN RUMUS SULISTYO
1. Masukkan banyaknya n permutasi dan
m siklus
2. l Å n – m
3. Untuk batas perkalian kebawah ( n-1 ) 4. Hitung faktorial (n-1)!
5. Total = faktor 6. Untuk i = 1, 2, ..., l
7. Faktor Å (Faktor/ (i1 + 1)) * i 8. Total = total + faktor
ANALISA PROGRAM
Perbandingan dilakukan dengan membandingkan running time pada masing-masing main dengan menggunakan Profiling Point. Data perbandingan yang digunakan adalah permutasi C2,2, C3,2, C4,2, C5,2, C6,2, C7,2, C8,2, C9,2, C10,2. Running time dimulai ketika munculnya form metode yang dipilih. Hasil perbandingkan akan dihasilkan dengan
running time dan kapasitas alokasi memori.
Tabel 1 Perbandingam Running Time Berdasarkan Bilangan Stirling dengan
Rumus Sulistyo
Berdasarkan tabel 1 data running
time dihasilkan ketika main dieksekusi.
Dengan Profiling waktu yang dihasilkan dalam bentuk tabel. Pada masing-masing rumus antara bilangan Stirling tanpa tanda jenis pertama dengan rumus Sulistyo menunjukan perbedaan waktu. Pada bilangan Stirling membutuhkan waktu lebih lama dalam mengeksekusi dibandingkan dengan rumus Sulistyo. Ini dikarena pada perbedaan kedua proses memiliki algoritma yang berbeda, pada bilangan Stirling menggunakan algoritma rekursif sedangkan rumus Sulistyo menggunakan algoritma iteratif.
KESIMPULAN DAN SARAN
KESIMPULAN
Hasil running time dengan menggunakan Profiling Point menunjukan bahwa rumus bilangan Stirling yang diformulasikan dalam bentuk algoritma rekursif mencatat waktu lebih lama dibanding rumus Sulistyo secara iteratif. Hal ini dikarenakan pada rekursif membutuhkan proses pemanggilan dalam
Permutasi Running Time
Bilangan Striling Running Time Rumus
Sulistyo C2,2 C3,2 C4,2 C5,2 C6,2 C7,2 C8,2 C9,2 C10,2 15,3 miliSecond 14,6 miliSecond 15,6 miliSecond 14,0 miliSecond 15,8 miliSecond 14,3 miliSecond 16,4 miliSecond 14,7 miliSecond 16,9 miliSecond 15,0 miliSecond 17,4 miliSecond 15,3 miliSecond 17,8 mili Second 14,8 miliSecond 18,0 miliSecond 15,6 miliSecond 18,3 miliSecond 15,4 miliSecond
menghasilkan output. Sedangkan pada iteratif hanya membutuhkan satu proses dengan melakukan perulangan terus menerus higga batas yang ditentukan terpenuhi. Namun bilangan Stirling memiliki kapasitas yang lebih kecil yaitu 888 Byte sedangkan rumus Sulistyo yaitu 1024 Byte.
SARAN
Terbatasnya aplikasi ini diharapkan agar mengenumerasikan permutasi dapat berlaku pula rumus umum berdasarkan rumusan Sulisto yaitu, Cn,m kedalam bentuk bahasa pemograman.
DAFTAR PUSTAKA
[1] Bernini A, E. Grazinni, E. Pergola, R. Pinzani, 2007. A General
Exhaustive Generation Algorithm for Gray Structures, Journal Acta
Informatica, Vol. 44, no. 5, pp. 361-376
[2] Babic D, D.J. Klein, J. Von Knop, N. Trinajstic, 2004. Combinatorial
Enumeration in Chemistry, Chemical
modelling : Applications and Theory, Royal Society of Chemistry, vol. 3, pp. 126-159
[3] Bona M., 2002. A walk through Combinatorics. An Introduction to Enumeration and Graph Theory.
New Jersey, World Scientific Publishing [4] Ruskey F., 2003. Combinatorial Generation. http://www.1stworks.com/ref/Ruske yCombGen.pdf, 19 Agustus 2007 [5] Sulistyo Puspitodjati., 2010.
Algoritma Pembangkit Lengkap
Permutasi Siklus Tertentu dengan Banyaknya Elemen Sebagai Peubah.
[6] Sedgewick R., 2007. Permutation Generation Methods, Dagstuhl Workshop on Data Stuctures,Wadem, Germany.
http://www.cs.princeton.edu/~rs/talk
s/perms.pdf, 18 Juli 2008
[7] Sedgewick R., 2007. Finding Paths
In Graphs, Adobe System India.
http://www.cs.princeton.edu/~rs/talk
s/PathsInGraphs07.pdf, 3 September
2007
[8] Wilf H. S., 1999. East Side, West
side... an introduction to combinatorial families-with Maple programming.
http://www.math.upenn.edu/~wilf/ea stwest.pdf, 5 juli 2008