ALGORITMA PENYELESAIAN PERSOALAN SPOJ MAXIMUM EDGE OF POWERS OF PERMUTATION DENGAN METODE PERMUTATION CYCLES FINDING DAN FFT CONVOLUTION

  TUGAS AKHIR – KI141502

DESAIN DAN ANALISIS ALGORITMA

PENYELESAIAN PERSOALAN SPOJ MAXIMUM

EDGE OF POWERS OF PERMUTATION DENGAN

METODE PERMUTATION CYCLES FINDING DAN

FFT CONVOLUTION KARSTEN ARI AGATHON NRP. 5112 100 110 Dosen Pembimbing 1 Victor Hariadi, S.Si., M.Kom.

  Dosen Pembimbing 2 Rully Soelaiman, S.Kom., M.Kom.

  JURUSAN TEKNIK INFORMATIKA Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Surabaya 2017

  

HALAMAN JUDUL

TUGAS AKHIR

  • – KI141502

  

DESAIN DAN ANALISIS ALGORITMA

PENYELESAIAN PERSOALAN SPOJ MAXIMUM

EDGE OF POWERS OF PERMUTATION DENGAN

METODE PERMUTATION CYCLES FINDING DAN

FFT CONVOLUTION

  KARSTEN ARI AGATHON NRP. 5112 100 110 Dosen Pembimbing 1 Victor Hariadi, S.Si., M.Kom. Dosen Pembimbing 2 Rully Soelaiman, S.Kom., M.Kom.

  JURUSAN TEKNIK INFORMATIKA Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Surabaya 2017

  

(Halaman ini sengaja dikosongkan) Halaman Judul FINAL PROJECT – KI141502

DESIGN AND ANALYSIS OF ALGORITHM FOR

SOLVING SPOJ MAXIMUM EDGE OF POWERS

OF PERMUTATION USING PERMUTATION

CYCLES FINDING AND FFT CONVOLUTION

  KARSTEN ARI AGATHON NRP. 5112 100 115 Supervisor 1 Victor Hariadi, S.Si., M.Kom. Supervisor 2 Rully Soelaiman, S.Kom., M.Kom.

  DEPARTMENT OF INFORMATICS Faculty of Information Technology Sepuluh Nopember Institute of Technology Surabaya 2017

  

(Halaman ini sengaja dikosongkan)

  

LEMBAR PENGESAHAN

DESAIN DAN ANALISIS ALGORITMA PENYELESAIAN

PERSOALAN SPOJ MAXIMUM EDGE OF POWERS OF

PERMUTATION DENGAN METODE PERMUTATION

CYCLES FINDING DAN FFT CONVOLUTION

TUGAS AKHIR

  Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer pada

  Bidang Studi Dasar dan Terapan Komputasi Program Studi S-1 Jurusan Teknik Informatika

  Fakultas Teknologi Informasi

  

Oleh:

KARSTEN ARI AGATHON

NRP. 5112100110

  Disetujui oleh Pembimbing Tugas Akhir: 1.

  ........................ Victor Hariadi, S.Si., M.Kom.

  NIP. 196912281994121001 (Pembimbing 1) 2.

  ........................ Rully Soelaiman, S.Kom., M.Kom.

  NIP. 197002131994021001 (Pembimbing 2)

  

SURABAYA

JANUARI, 2017

  

(Halaman ini sengaja dikosongkan)

  

DESAIN DAN ANALISIS ALGORITMA PENYELESAIAN

PERSOALAN SPOJ MAXIMUM EDGE OF POWERS OF

PERMUTATION DENGAN METODE PERMUTATION

CYCLES FINDING DAN FFT CONVOLUTION

Nama : Karsten Ari Agathon NRP : 5112100110 Jurusan : Teknik Informatika Fakultas Teknologi Informasi ITS Dosen Pembimbing I : Victor Hariadi, S.Si., M.Kom. Dosen Pembimbing II : Rully Soelaiman, S.Kom., M.Kom.

  

ABSTRAK

Permasalahan dalam buku tugas akhir ini adalah permasalahan

“Maximum Edge of Powers of Permutation” yang terdapat pada

situs penilaian daring Sphere Online Judge(SPOJ) dengan nomor

soal 6895 dan kode soal MEPPERM. Dalam permasalahan ini,

diberikan sejumlah simpul yang masing-masing memiliki bobot

keluar dan masuk. Diberikan suatu permutasi terhadap sejumlah

simpul tersebut. Suatu graf dibentuk dari setiap simpul yang

terhubung ke simpul hasil permutasi dengan bobot jumlah bobot

keluar simpul asal dan bobot masuk simpul tujuan. Dicari sisi

dengan bobot terbesar pada setiap graf yang dibentuk dari hasil

pangkat permutasi.

Tugas akhir ini akan mengimplementasikan metode pencarian

permutasi siklus dan konvolusi menggunakan transformasi

Fourier cepat(FFT) dalam menyelesaikan permasalahan

Maximum Edge of Powers of Permutation. Metode transformasi

Fourier cepat yang digunakan adalah algoritma Cooley-Tukey.

Implementasi dalam tugas akhir ini menggunakan bahasa

pemrograman C++. Hasil uji coba menunjukkan bahwa sistem

  

menghasilkan bobot sisi maksimum pada setiap pangkat permutasi

dengan benar dan memiliki pertumbuhan waktu dengan

kompleksitas ( + √ ).

  

Kata kunci: Permutasi Siklus, Pangkat Permutasi, bobot

maksimum, FFT, Konvolusi.

  

DESIGN AND ANALYSIS OF ALGORITHM FOR

SOLVING SPOJ MAXIMUM EDGE OF POWERS OF

PERMUTATION USING PERMUTATION CYCLES

FINDING AND FFT CONVOLUTION

Name : Karsten Ari Agathon NRP : 5112100110 Department : Department of Informatics Faculty of Information Technology ITS Supervisor I : Victor Hariadi, S.Si., M.Kom. Supervisor II : Rully Soelaiman, S.Kom., M.Kom.

  

ABSTRACT

This final projec t is based on “Maximum Edge of Powers of

Permutation” problem on SPOJ with problem number 6895 and

problem code MEPPERM. In this problem, given vertices which

each have weight in and out. Given a permutation for those

vertices. A graph can be built by connecting each vertices to its

permutation with edge weight sum of vertex weight out and vertex

weight in from its permutation. Determine edge with maximum

weight from each graph which are created from the powers of

permutation.

  

This final project implements permutation cycles finding and

convolution using fast Fourier Transform(FFT) to solve the

problem of Maximum Edge of Powers of Permutation. Fast

Fourier transform method used is Cooley-Tukey algorithm.

The implementation of final project uses C++ programming

language. The experiment result proved the system provide edge

with maximum weight for each powers of permutation correctly

and has growth time with complexity of

  ( + √ ).

  

Keywords: Permutation Cycles, Powers of Permutation,

Maximum Weight, FFT, Convolution.

KATA PENGANTAR

  Puji syukur penulis panjatkan kepada Tuhan Yang Maha Esa karena atas segala karunia dan rahmat-Nya penulis dapat menyelesaikan tugas akhir yang berjudul:

  

“DESAIN DAN ANALISIS ALGORITMA PENYELESAIAN

PERSOALAN SPOJ MAXIMUM EDGE OF POWERS OF

PERMUTATION DENGAN METODE PERMUTATION

CYCLES FINDING DAN FFT CONVOLUTION

  

  Tugas akhir ini dilakukan untuk memenuhi salah satu syarat memperoleh gelar Sarjana Komputer di Jurusan Teknik Informatika Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember. Penulis mengucapkan terima kasih kepada semua pihak yang telah memberikan dukungan baik secara langsung maupun tidak langsung selama proses pengerjaan tugas akhir ini hingga selesai, antara lain:

1. Tuhan Yang Maha Esa atas segala karunia dan rahmat- Nya yang telah diberikan selama ini.

  2. Orang tua, saudara serta keluarga penulis yang selalu memberikan dukungan, semangat, perhatian dan doa selama perkuliahan penulis di Jurusan Teknik Informatika ini.

  3. Bapak Victor Hariadi, S.Si., M.Kom. selaku dosen pembimbing I yang telah memberikan bimbingan, dukungan, motivasi, serta arahan dalam pengerjaan tugas akhir ini.

  4. Bapak Rully Soelaiman, S.Kom., M.Kom. selaku dosen pembimbing II yang telah banyak memberikan ilmu, bimbingan, nasihat, motivasi, serta waktu diskusi sehingga penulis dapat menyelesaikan tugas akhir ini.

  5. Seluruh pihak yang tidak bisa saya sebutkan satu persatu yang telah memberikan dukungan selama saya menyelesaikan tugas akhir ini. Saya mohon maaf apabila terdapat kekurangan dalam penulisan buku tugas akhir ini. Kritik dan saran saya harapkan untuk perbaikan dan pembelajaran di kemudian hari. Semoga tugas akhir ini dapat memberikan manfaat yang sebaik-baiknya.

  Surabaya, Januari 2017 Karsten Ari Agathon

  

DAFTAR ISI

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

DAFTAR GAMBAR

Gambar 2.1 Deskripsi permasalahan Maximum Edge of Powers of

  

Gambar 2.2 Contoh masukan dan keluaran dari permasalahan

  

Gambar 2.3 Ilustrasi graf terhadap permutasi .......................... 8

  

  

Gambar 2.6 Ilustrasi graf berbobot terarah .................................. 10Gambar 2.7 Ilustrasi permutasi dua baris .................................... 11Gambar 2.8 Ilustrasi permutasi siklus ......................................... 11Gambar 2.9 Ilustrasi konvolusi polinomial A dan B ................... 14Gambar 2.10 Ilustrasi korelasi polinomial A dan B menggunakan konvolusi ..................................................................................... 15Gambar 2.11 Ilustrasi korelasi polinomial A dan B .................... 16Gambar 2.12 Ilustrasi 8th root of unity pada bidang kompleks .. 17Gambar 2.13 Ilustrasi operasi kupu-kupu (Butterfly operation) . 19Gambar 2.14 Ilustrasi operasi kupu-kupu pada FFT dengan polinomial memiliki batas derajat 8 yang dilakukan secara rekursif

  

Gambar 2.15 Ilustrasi perubahan notasi permutasi menjadi notasi

  

Gambar 2.16 Ilustrasi graf yang terbentuk dari pangkat permutasi

  

Gambar 2.17 Ilustrasi pencarian siklus berdasarkan permutasi

  

Gambar 2.18 Ilustrasi suatu graf yang terbentuk dari suatu permutasi terhadap suatu siklus ................................................... 24Gambar 2.19 Ilustrasi perhitungan bobot sisi ke

  

  

  

Gambar 2.20 Ilustrasi konvolusi siklus ....................................... 28Gambar 2.21 Ilustrasi konvolusi mencari bobot sisi terhadap

  

Gambar 2.22 Ilustrasi konvolusi siklus dengan optimasi ............ 36Gambar 2.23 Ilutrasi pengambilan bobot sisi terbesar dari larik untuk pangkat permutasi 0 hingga − 1. ....................... 38Gambar 3.1 Pseudocode fungsi MAIN ....................................... 42Gambar 3.2 Pseudocode kelas Complex ..................................... 42Gambar 3.3 Pseudocode fungsi INIT-FFT .................................. 43Gambar 3.4 Pseudocode fungsi FFT ........................................... 44Gambar 3.5 Pseudocode fungsi INVERSE-FFT ......................... 45Gambar 3.6 Pseudocode fungsi MULTIPLY .............................. 46Gambar 3.7 Pseudocode fungsi CONVOLUTE .......................... 46Gambar 3.8 Pseudocode fungsi CREATE-CYCLES .................. 47Gambar 3.9 Pseudocode fungsi EVALUATE-CYCLES (1) ...... 48Gambar 3.10 Pseudocode fungsi EVALUATE-CYCLES (2)..... 49Gambar 3.11 Pseudocode fungsi CREATE-ANSWER .............. 51Gambar 3.12 Pseudocode data generator skenario 1 ................... 52Gambar 3.13 Pseudocode data generator skenario 2 ................... 52Gambar 5.1 Contoh kasus uji coba dari data generator skenario 2 yang dibatasi ................................................................................ 68Gambar 5.2 Ilustrasi pembentukan siklus pertama (biru) ........... 69Gambar 5.3 Ilustrasi pembentukan siklus kedua (hijau) ............. 69Gambar 5.4 Ilustrasi pembentukan siklus ketiga (merah) ........... 69Gambar 5.5 Ilustrasi pengambilan bobot dan terbesar pada

  

Gambar 5.6 Ilustrasi pemberian nilai dan serta hasil

  

Gambar 5.7 Ilustrasi pengambilan bobot dan terbesar pada

  

Gambar 5.9 Ilustrasi pemberian nilai pada siklus kedua . 75Gambar 5.10 Ilustrasi hasil konvolusi antara dan

  

Gambar 5.11 Ilustrasi pengambilan bobot dan terbesar pada

  

Gambar 5.12 Ilustrasi pemberian nilai pada siklus ketiga79Gambar 5.13 Ilustrasi pemberian nilai pada siklus ketiga

  

Gambar 5.14 Ilustrasi hasil konvolusi antara dan

  

Gambar 5.15 Ilustrasi pengambilan bobot sisi terbesar dari hasil evaluasi siklus pada pangkat permutasi 0 hingga

  

Gambar 5.16 Masukkan dan keluaran pada program berdasarkan contoh kasus uji kebenaran .......................................................... 84Gambar 5.17 Hasil uji coba kebenaran pada situs penilaian daring

  

Gambar 5.18 Grafik hasil uji coba pada situs SPOJ sebanyak 30 kali ............................................................................................... 85Gambar 5.19 Grafik hasil uji coba pengaruh jumlah simpul pada satu siklus terhadap pertumbuhan waktu ..................................... 88Gambar 5.20 Grafik hasil uji coba pengaruh jumlah simpul yang membentuk siklus sebanyak mungkin terhadap pertumbuhan

  

  

(Halaman ini sengaja dikosongkan)

  

DAFTAR TABEL

Tabel 2.1 Permutasi dari suatu himpunan yang berisi 3 elemen . 11Tabel 2.2 Konvolusi larik dan menjadi .... 27Tabel 2.3 Evaluasi nilai 1 atau lebih pada posisi pada larik

  

Tabel 2.4 Seluruh kombinasi bobot dan pada konvolusi

  

Tabel 2.5 Pemberian nilai pada atau berdasarkan bobot

  

Tabel 2.6 Evaluasi hasil konvolusi pada posisi dalam

  

Tabel 2.7 Pemberian nilai atau berdasarkan nilai

  

Tabel 2.8 Pemberian nilai pada larik untuk setiap simpul

  

Tabel 2.9 Pemberian nilai pada larik untuk setiap simpul

  

Tabel 2.10 Evaluasi pangkat permutasi larik pada posisi

  

Tabel 2.11 Evaluasi bobot sisi larik pada posisi ........... 35Tabel 4.1 Daftar variabel global (1) ............................................ 54Tabel 4.2 Daftar variabel global (2) ............................................ 55Tabel 5.1 Pemberian nilai pada siklus pertama ............... 71Tabel 5.2 Pemberian nilai pada siklus pertama ............... 71Tabel 5.3 Evaluasi hasil konvolusi pada siklus pertama . 72Tabel 5.4 Pemberian nilai pada siklus kedua ................... 74Tabel 5.5 Pemberian nilai pada siklus kedua .................. 74Tabel 5.6 Evaluasi hasil konvolusi pada siklus kedua ..... 76Tabel 5.8 Pemberian nilai pada siklus ketiga .................. 78Tabel 5.9 Evaluasi hasil konvolusi pada siklus ketiga ..... 82Tabel 5.10 Hasil uji coba pengaruh jumlah simpul pada satu siklus terhadap pertumbuhan waktu ...................................................... 87Tabel 5.11 Hasil uji coba pengaruh jumlah simpul yang membentuk siklus sebanyak mungkin terhadap pertumbuhan

  

  

DAFTAR KODE SUMBER

  

  

(Halaman ini sengaja dikosongkan)

BAB 1 PENDAHULUAN Pada bab ini akan dijelaskan hal-hal yang menjadi latar belakang,

  permasalahan yang dihadapi, batasan masalah, tujuan, metodologi dan sistematika penulisan yang digunakan dalam pembuatan buku tugas akhir ini.

  1.1 Latar Belakang

  Pada soal SPOJ berjudul “Maximum Edge of Powers of

  Permutation

  ” mengangkat suatu permasalahan dimana suatu permutasi dapat membentuk suatu graf dengan sejumlah sisi yang menghubungkan setiap simpul ke simpul yang merupakan hasil permutasinya. Kemudian dari hasil graf tersebut dicari bobot sisi yang memiliki nilai terbesar. Namun pencarian bobot sisi maksimum tidak hanya dilakukan pada suatu permutasi saja melainkan juga dari sejumlah permutasi yang merupakan hasil pangkat permutasi tersebut. Penulis mengajukan solusi permasalahan ini dengan menggunakan pencarian permutasi siklus dan konvolusi menggunakan algoritma transformasi Fourier cepat(FFT).

  1.2 Rumusan Masalah

  Rumusan masalah yang diangkat dalam tugas akhir ini adalah sebagai berikut: 1. desain algoritma efisien dalam

  Bagaimana menyelesaikan permasalahan “Maximum Edge of

  Powers of Permutation

  ” pada situs penilaian daring SPOJ? 2. Bagaimana implementasi algoritma yang sudah didesain untuk menyelesaikan permasalahan

  “Maximum Edge of

  Powers of Permutation

  ”

  3. Bagaimana uji coba untuk mengetahui kebenaran dan kinerja dari implementasi yang telah dilakukan?

1.3 Batasan Masalah

  Permasalahan yang dibahas dalam tugas akhir ini memiliki beberapa batasan, yaitu sebagai berikut:

  1. Permasalahan dalam tugas akhir ini adalah permasalahan “Maximum Edge of Powers of Permutation” pada situs penilaian daring SPOJ klasikal dengan nomor soal 6895 dan kode soal MEPPERM.

  2. Implementasi dilakukan dengan bahasa pemrograman C++.

  3. Batas maksimum jumlah simpul adalah 66000 buah.

  4. Batas maksimum nilai bobot dan pada setiap simpul adalah 16.

  5. Batas maksimum nilai pangkat permutasi adalah 1000000.

1.4 Tujuan

  Tujuan dari pengerjaan tugas akhir ini adalah sebagai berikut: 1.

  Melakukan desain algoritma dan struktur yang efisien dalam menyelesaikan permasalahan “Maximum Edge of

  Powers of Permutation ” pada situs penilaian daring SPOJ.

  2. Melakukan implementasi algoritma yang sudah didesain untuk menyelesaikan permasalahan.

  3. Melakukan uji coba untuk mengetahui kebenaran dan kinerja dari implementasi yang telah dilakukan.

1.5 Metodologi

  Ada beberapa tahapan dalam pengerjaan tugas akhir ini, yaitu sebagai berikut:

  Tahap awal untuk memulai pengerjaan Tugas Akhir adalah penyusunan proposal Tugas Akhir. Pada proposal ini, penulis mengajukan gagasan untuk menyelesaikan permasalahan komputasi bobot sisi maksimum pada

  Maximum Edge of Powers of Permutation .

  2. Studi Literatur Pada tahap ini dilakukan studi literatur yang membahas lebih dalam yang berkaitan dengan permutasi, graf, konvolusi, dan algoritma transformasi Fourier cepat. Studi literatur didapatkan dari buku, internet, dan materi- materi kuliah yang berhubungan dengan metode yang akan digunakan.

  3. Desain Pada tahap ini dilakukan desain algoritma serta struktur data dari solusi untuk permasalahan komputasi bobot sisi maksimum pada Maximum Edge of Powers of

Permutation berdasarkan studi literatur sebelumnya.

  4. Implementasi Pada tahap ini dilakukan implementasi solusi dari permasalahan komputasi bobot sisi maksimum pada

  Maximum Edge of Powers of Permutation berdasarkan analisis dan desain sebelumnya.

  5. Pengujian dan evaluasi Pada tahap ini dilakukan dengan uji coba kebenaran dan kinerja solusi yang telah diimplementasi dengan melakukan pengiriman sumber kode sistem ke situs penilaian daring SPOJ pada permasalahan yang terkait dan melihat hasil umpan balik. Pengujian dilakuan dengan membandingan kompleksitas hasil uji coba dengan kompleksitas hasil analisis.

  6.

  Tahap ini merupakan tahap penyusunan laporan berupa buku sebagai dokumentasi pengerjaan tugas akhir yang mencakup seluruh dasar teori, desain, implementasi serta hasil pengujian yang telah dilakukan.

1.6 Sistematika Penulisan

  Penulisan buku tugas akhir ini dibagi kedalam 6 bab yang masing- masing membahas bagian-bagian yang disusun dalam menyelesaikan persoalan yang terkait, yaitu: 1.

  Bab 1: Pendahuluan Bab ini berisi penjelasan mengenai latar belakang, rumusan masalah, batasan masalah, tujuan, metodologi, dan sistematika penulisan buku.

  2. Bab 2: Dasar Teori

  Bab ini berisi penjelasan mengenai teori-teori yang digunakan sebagai dasar pengerjaan tugas akhir ini.

  3. Bab 3: Desain

  Bab ini berisi rancangan pembuatan sistem penyelesaian permasalahan dalam tugas akhir ini.

  4. Bab 4: Implementasi

  Bab ini berisi lingkungan serta hasil penerapan rancangan sistem penyelesaian permasalahan dalam tugas akhir ini dalam bentuk sumber kode beserta penjelasannya.

  5. Bab 5: Uji Coba dan Evaluasi

  Bab ini berisi lingkungan serta hasil dari rangkaian uji coba yang dilakukan untuk menguji kebenaran serta kinerja dari sistem.

  6. Bab 6: Kesimpulan dan Saran

  Bab ini berisi kesimpulan pengerjaan tugas akhir ini dan saran untuk pengembangan kedepannya.

BAB 2 DASAR TEORI Bab ini akan membahas mengenai dasar teori dan literatur yang

  menjadi dasar pengerjaan tugas akhir ini. Pada subbab membahas mengenai contoh kasus permasalahan. Pada subba membahas mengenai definisi umum graf, permutasi, polinomial, konvolusi, dan root of unity yang menjadi dasar dari pemahaman masalah dan penyelesaian masalah ini. Pada subbamembahas mengenai transformasi Fourier diskrit. Pada submembahas mengenai transformasi Fourier cepat yang menjadi algoritma dasar dari penyelesaian soal ini. Pada subbmembahas mengenai pembuatan data generator untuk uji coba.

2.1 Deskripsi Permasalahan

  Permasalahan yang diangkat dalam tugas akhir ini diangkat dari suatu permasalahan yang terdapat pada suatu situs penilaian daring atau online judge SPOJ yaitu Maximum Edge of Powers of

  

Permutation dengan nomor soal 6895 dan kode soal MEPPERM

  [1], deskripsi soal dari sumber asli menggunakan bahasa Inggris terdapat pada Pada permasalahan Maximum Edge of Powers of Permutation diberikan simpul yang masing-masing memiliki nilai bobot dan . Diberikan suatu permutasi pada simpul, dengan permutasi tersebut dapat dibentuk suatu graf G dimana setiap simpul memiliki sisi ke hasil permutasi simpul. Setiap sisi memiliki bobot perjumlahan bobot simpul dan bobot hasil permutasi simpul yaitu . Kemudian dicari bobot sisi maksimum pada sejumlah graf yang dibentuk dari permutasi

  −1

  hingga terhadap simpul tersebut.

Gambar 2.1 Deskripsi permasalahan Maximum Edge of Powers of Permutation pada SPOJ

  Format masukan pada baris pertama diberikan bilangan bulat positif yang merupakan jumlah simpul. Pada baris kedua terdapat bilangan bulat positif unik dari himpunan

  {1, … , } yang merepresentasikan permutasi . Pada baris ketiga diberikan bilangan bulat non-negatif yang merepresentasikan bobot . Pada baris keempat diberikan hingga bilangan bulat non-negatif yang merepresentasikan bobot hingga .

  1 Pada baris kelima diberikan bilangan bulat positif

  yang merepresentasikan batas pangkat permutasi terbesar. Format keluaran terdiri dari satu baris yang berisi bilangan bulat yang merupakan nilai bobot sisi maksimum pada graf yang

  −1 dibentuk dari permutasi hingga .

  Deskripsi format masukan, format keluaran beserta contoh masukan dan keluaran dapat dilihat

Gambar 2.2 Contoh masukan dan keluaran dari permasalahan MEPPERM

  Batasan dari permasalahan Maximum Edge of Powers of

  Permutation adalah sebagai berikut: 1.

  ≤ 66000.

  2.

  , ≤ 16.

  3.

  ≤ 1000000.

  4. Lingkungan penilaian Intel Pentium G860 3GHz.

  5. Batas Waktu: 1 – 3 detik.

  6. Batas Sumber Kode: 50000 B.

  7. Batas Memori: 1536 MB.

2.2 Contoh Kasus Permasalahan

  Diketahui bernilai 3 yang merupakan jumlah simpul. Setiap simpul memiliki bobot yang secara berurutan adalah {0, 1, 2} dan bobot berurutan adalah {3, 2, 1} dan bernilai 3 yang merupakan batas pangkat permutasi terbesar sehingga nilai bobot sisi maksimum

  −1 yang perlu dicari adalah hingga .

  Pada permutasi , hasil permutasi setiap simpul merupakan simpul itu sendiri, sehingga terbentuk graf dimana terdapat sejumlah sisi yang menghubungi setiap simpul ke simpul itu sendiri. Ilustrasi graf dapat dilihat pad

Gambar 2.3 Ilustrasi graf terhadap permutasi

  Pada ilustrasi diatas, setiap simpul direpresentasikan dengan nilai ( , ). Setiap sisi menghubungi simpul dengan simpul hasil

  • permutasinya dengan bobot . Dari graf tersebut dapat ditentukan bahwa pada permutasi memiliki bobot sisi maksimal yaitu 3 dimana sisi tersebut menghubungkan simpul ke .

  2

  2

1 Pada permutasi , hasil permutasi setiap simpul merupakan nilai

  permutasi simpul itu sendiri. Ilustrasi graf dapat dilihat pada Pada ilustrasidapat ditentukan bahwa pada permutasi

  1

  memiliki bobot sisi maksimal yaitu 4 dimana sisi tersebut menghubungkan simpul ke .

  3

  

1

  1 Gambar 2.4 Ilustrasi graf terhadap permutasi

2 Pada permutasi , hasil permutasi setiap simpul adalah simpul

  2

  sendiri. Hal ini disebabkan oleh hasil permutasi dari sama 2 dengan sehingga tentu saja bobot sisi maksimal permutasi P

  2

  sama dengan yaitu 3 dimana sisi tersebut menghubungkan

  2

  ke . Ilustrasi perkalian permutasi dan ilustrasi graf dapat dilihat pada

  2 Gambar 2.5 Ilustrasi graf terhadap permutasi

  Dari hasil evaluasi bobot sisi maksimum pada permutasi hingga

  2

  maka keluaran yang diharapkan dari pangkat permutasi 0 hingga − 1 secara berurutan adalah {3, 4, 3}.

2.3 Definisi Umum

  Dalam subbab ini membahas definisi-definisi umum yang akan digunakan sebagai dasar untuk memahami soal dan menyelesaikan permasalahan ini.

   Graf

  Suatu graf [2] adalah suatu himpunan simpul(vertex) dan himpunan sisi(edge), dimana setiap sisi menghubungi dua buah simpul. Graf berarah adalah graf dimana setiap sisi memiliki arah dari suatu simpul ke simpul yang terhubung. Graf berbobot adalah graf dimana setiap sisi atau simpul memiliki nilai bobot. Graf yang memiliki sifat graf berarah dan graf berbobot disebut graf berbobot berarah. Ilustrasi graf berbobot terarah dapat dilihat pada

Gambar 2.6 Ilustrasi graf berbobot terarah

   Permutasi

  Suatu permutasi [3] adalah suatu pengurutan posisi elemen-elemen pada suatu himpunan berdasarkan pola tertentu. Ilustrasi bentuk permutasi yang mungkin dibentuk dari suatu himpunan yang berisi 3 elemen ditunjukkan pa

Tabel 2.1 Permutasi dari suatu himpunan yang berisi 3 elemen

  Terdapat dua bentuk notasi permutasi, yaitu: a.

  Notasi dua baris Notasi ini berisi dua baris dimana pada baris pertama berisi setiap posisi elemen pada himpunan, kemudian pada baris kedua berisi perubahan posisi setiap elemen yang sekolom. Ilustrasi permutasi dua baris ditunjukkan

  1 2 3

= {3, 2, 1} = ( )

3 2 1

Gambar 2.7 Ilustrasi permutasi dua baris b.

  Notasi siklus(cycle) Notasi ini berisi sejumlah siklus yang merupakan perubahan posisi elemen secara siklus. Suatu permutasi dapat terdiri dari lebih dari satu siklus. Ilustrasi permutasi siklus ditunjukkan pa

  

= {3, 2, 1} = (1 3)(2)

Gambar 2.8 Ilustrasi permutasi siklus

  2

  , … ,

  Perjumlahan dua polinomial dapat dilakukan dalam kompleksitas komputasi ( ). Sedangkan perkalian atau konvolusi dua polinomial dengan cara biasa dapat dilakukan dalam kompleksitas komputasi

  ) … ) ( 2, 3 )

  −1

  1

  ( ) = + (

  Horner’s rule ).

  Evaluasi polinomial dapat dilakukan dalam kompleksitas komputasi O(n) menggunakan metode Horner(

  ) ( 2, 2 )

  −1

  1

   Polinomial

  = ( ,

  Representasi koefisien Polinomial direpresentasikan dengan suatu larik berupa koefisien yang diletakkan berurutan berdasarkan derajatnya.

  Terdapat dua bentuk yang dapat merepresentasikan polinomial, yaitu: a.

  . Derajat(degree) suatu polinomial ditentukan berdasarkan nilai terbesar dimana terdapat yang bernilai tidak nol. Batas derajat(degree-bound) suatu polinomial adalah nilai derajat polinomial tersebut ditambah satu.

  , sedangkan bentuk merepresentasikan nilai variabel pada derajat

  ( 2, 1 ) Bentuk merepresentasikan nilai koefisien pada derajat

  −1 =0

  ( ) = ∑

  Polinomial [2] adalah suatu pernyataan matematika berbentuk fungsi yang merupakan jumlah perkalian pangkat dalam satu atau lebih variabel dengan koefisien. Bentuk persamaannya adalah sebagai berikut:

  • ⋯ + (
b.

  Representasi titik-nilai(point-value) Polinomial direpresentasikan dengan suatu larik yang berisi pasangan titik-nilai sebanyak batas derajat polinomial dimana setiap titik berbeda-beda.

  Perkalian atau konvolusi dua polinomial dapat dilakukan dalam kompleksitas komputasi ( ) dengan menggunakan algoritma transformasi Fourier cepat(FFT). Proses invers dari evaluasi untuk mengubah bentuk polinomial dari representasi titik- nilai ke representasi koefisien disebut interpolasi.

   Konvolusi

  Konvolusi [2] adalah suatu operasi perkalian pada dua buah polinomial membentuk satu buah polinomial gabungan. Batas derajat hasil polinomial adalah

  • − 1 dimana dan merupakan batas derajat kedua polinomial. Bentuk persamaan dari polinomial hasil konvolusi adalah sebagai berikut:

  2 −2

  ( 2, 4 ) ( ) = ∑

  =0

  dimana ( 2, 5 )

  = ∑

  − =0

  Dari fungsi tersebut, dapat ditentukan bahwa dibutuhkan

  2

  kompleksitas komputasi ( ). Dengan menggunakan algoritma seperti Toom-Cook, Karatsuba, dan transformasi Fourier cepat, kompleksitas komputasi dapat berkurang hingga mencapai ( ). mengilustrasikan konvolusi dua buah polinomial.

Gambar 2.9 Ilustrasi konvolusi polinomial A dan B

  Dengan memahami persamaan konvolusi ( 2, 4 ) dan ( 2, 5 ) disertai dengan ilustrasi paddapat diketahui bahwa nilai

  • bertambah sebanyak apabila kedua nilai dan bukan

  ∗ nol. Misal pada nilai adalah

  3

  3

  1

  2

  • , dikarenakan dan bernilai 0 sehingga

  2

  1

  3

  1

  

2

  3

  • nilai disederhanakan menjadi yaitu
  • . Hal

  3

  3

  2

  1

  ini juga dapat dibuktikan bahwa pada saat mencari nilai , maka perjumlahan posisi koefisien dan yang terlibat pada setiap perkalian koefisien bernilai . Konvolusi memiliki sisi lain, yaitu korelasi. Korelasi merupakan konvolusi antar polinomial dimana salah satu polinomial urutan koefisiennya dibalik (reverse) sehingga terbentuk persamaan berikut:

  ( 2, 6 ) = ∑

  −1− − =0 Pada persamaan ( 2, 6 ) larik A dilakukan pemindahan posisi k koefisien secara bit-reversal sehingga pada posisi awal A bertukar posisi dengan . Ilustrasi dari korelasi dua buah larik dapat

  −1− dilihat pad

Gambar 2.10 Ilustrasi korelasi polinomial A dan B menggunakan konvolusi

  Dengan memahami persamaan korelasi ( 2, 6 ) disertai dengan ilustrasi pada dapat diketahui bahwa nilai

  −1− +

  bertambah sebanyak apabila kedua nilai dan ∗

  −1− −1−

  bukan nol. Hal ini terjadi karena larik A mengalami bit-reverse menjadi larik dari

  ′, maka terjadi pertambahan pada

  • perjumlahan setiap . Dan apabila ditransformasi

  ′ ∗ menggunakan larik , maka nilai berubah menjadi − 1 − sehingga terjadi pertambahan pada dari perjumlahan

  −1− +

  setiap . Dari pengamatan tersebut, dikarenakan larik ∗ menyimpan dari 0 hingga

  2 − 2, sehingga dapat diambil kesimpulan bahwa hingga menyimpan perjumlahan setiap

  

−2

  dimana hingga ∗ − < 0, sedangkan

  

−1− −1 2 −2

  −1−

  menyimpan perjumlahan setiap dimana ∗ − ≥ 0.

  Ilustrasi kesimpulan yang didapatkan dapat dilihat paenggunakan contoh sebelumnya.

Gambar 2.11 Ilustrasi korelasi polinomial A dan B

  Dari ilustrasi diatas, nilai dimana − = 1 adalah +

  4

  1

  • , dikarenakan nilai adalah 0 sehingga nilai

  1

  2

  2

  3

  1

  2

  4

  • menjadi yaitu
  • . Dengan begitu dapat

  1

  2

  3

  disimpulkan bahwa untuk mencari nilai korelasi larik A dan B pada posisi .

  − dapat dicari pada nilai

  −1− + Root of Unity

  Nth root of unity [2] adalah bilangan kompleks dimana = 1.

  Terdapat n bilangan kompleks unik yang merupakan nth root of

  2 / unity dimana terdiri dari nilai untuk setiap

  = 0, 1, … , – 1. Dengan menggunakan rumus Euler, dapat

  2 /

  dinyatakan bahwa = (2 / ) + (2 / ). Ilustrasi 8th root of unity pada bidang kompleks dapat dilihat pada

Gambar 2.12 Ilustrasi 8th root of unity pada bidang kompleks

  

Root of unity memiliki beberapa sifat unik, dua diantaranya adalah:

a.

  Sifat Refleksi(reflective) Suatu nilai yang merupakan nth roof of unity dan nilai n

  • + /2

    adalah genap, maka .

  = − b. Sifat Reduksi(reduction)

  2 Apabila adalah nth

  adalah 2nth root of unity, maka root of unity .

2.4 Tranformasi Fourier Diskrit

  Transformasi Fourier Diskrit(DFT) [2] adalah perubahan bentuk polinomial dari bentuk koefisien menjadi bentuk titik-nilai dimana polinomial dievaluasi menggunakan nilai titik yang merupakan bilangan kompleks nth root of unity. Jumlah titik yang dievaluasi sebanyak batas derajat polinomial tersebut sehingga membutuhkan

  

n bilangan kompleks nth root of unity untuk menghasilkan titik

  yang berbeda-beda. Bentuk persamaan dalam menentukan nilai pada setiap titik adalah sebagai berikut:

  = ( )

  −1

  ( 2, 7 ) = ∑

  =0

  Dari rumus tersebut, dapat ditentukan bahwa untuk menentukan

  2

  setiap titik-nilai dibutuhkan kompleksitas waktu ( ). Proses interpolasi atau invers tranformasi Fourier Diskrit(IDFT) adalah perubahan bentuk polinomial dari titik-nilai menjadi bentuk koefisien dengan melakukan perkalian matriks dari invers matriks Vandermonde berisi pangkat dari dan bentuk titik-nilai. Bentuk persamaan untuk melakukan perubahan bentuk polinomial dari titik-nilai menjadi bentuk koefisien adalah sebagai berikut:

  −1

  1

  −

  ( 2, 8 ) =

  ∑

  =0

  Dari persamaan diatas dapat dibandingkan dengan persamaan ( 2, 7 ) bahwa perbedaan DFT dengan IDFT terletak pada pembagi dengan dan pangkat yang berupa minus pada , sehingga implementasi IDFT dapat dibuat berdasarkan implementasi DFT.

2.5 Transformasi Fourier Cepat

  Transformasi Fourier cepat(FFT) [2] adalah suatu algoritma yang digunakan untuk mengomputasi DFT dengan memanfaatkan sifat unik root of unity sehingga kompleksitas waktu menjadi ( ). Terdapat beberapa algoritma FFT seperti Cooley- Tukey, Schönhage

  • –Strassen, dan Fürer. Dalam konteks buku ini, algoritma FFT mengacu pada algoritma Cooley-Tukey [4], sehingga batas derajat diasumsi merupakan kelipatan dua.
Transformasi Fourier cepat menggunakan strategi divide and

  

conquer dengan membagi koefisien indeks genap dan ganjil fungsi

  polinomial ( ) dengan batas derajat menjadi sebagai berikut:

  2 /2−1

  • ( ) =

  2

4 −2

2 /2−1 ( 2, 9 )

  ( ) = + + +

  1

  3

5 −1

  Fungsi polinomial ( ) menyimpan seluruh koefisien genap fungsi polinomial

  ( ) sedangkan ( ) menyimpan seluruh koefisien ganjil fungsi polinomial ( ). Maka dapat dibentuk:

  2

  2

  ( 2, 10 ) ( ) = ( ) + ( )

  Pada komputasi DFT, nilai merupakan nth root of unity yang mewakili titik evaluasi pada fungsi polinomial

  ( ). Dengan sifat

  2 k k

  reduksi pada root of unity, diketahui bahwa merupakan ω

  (ω )

  n n/2

k

  yang juga merupakan subset dari . Dan juga dengan sifat refleksi ω

  

n

  • /2

  pada root of unity dimana , dapat dibentuk = − persamaan sebagai berikut:

  k 2k k 2k

  ( 2, 11 ) (ω ) = (ω ) + ω (ω )

  k+n/2 2k k 2k

  (ω ) = (ω ) − ω (ω ) Persamaan ( 2, 11 ) dapat direpresentasikan seperti pada dimana disebut sebagai operasi kupu-kupu(butterfly operation).

Gambar 2.13 Ilustrasi operasi kupu-kupu (Butterfly operation) Dengan begitu cukup melakukan evaluasasi terhadap titik ω

  n n/2−1

  hingga untuk mendapatkan hasil evaluasi dari titik ω

  ω

  n n n

  hingga . Kemudian untuk melakukan evaluasi dan ω

  n

  dapat dilakukan dengan cara yang sama, yaitu membagi- dua berdasarkan derajat yang bernilai genap dan ganjil seperti pada persamaan ( 2, 11 ) hingga derajat maksimal yang dimiliki adalah

  1. Dengan menggunakan cara tersebut, maka komputasi dapat dilakukan secara rekursif. Ilustrasi pembagian polinomial secara rekursif dapat dilihat pada

Gambar 2.14 Ilustrasi operasi kupu-kupu pada FFT dengan polinomial memiliki batas derajat 8 yang dilakukan secara rekursif

  dapat diperhatikan bahwa posisi koefisien tidak terletak secara berurutan berdasarkan batas derajat melainkan posisi koefisien bertukaran dengan posisi yang memiliki nilai posisi dengan bit terbalik(bit-reverse), sehingga dalam implementasi perlu dilakukan proses penukaran posisi koefisien terlebih dahulu. Dengan pendekatan divide and conquer ini, maka komputasi transformasi Fourier cepat dapat dilakukan dengan kompleksitas komputasi ( ).

  

2.6 Penyelesaian Permasalahan Maximum Edge of Powers

of Permutation

  Permasalahan Maximum Edge of Powers of Permutation dapat diselesaikan dengan menggunakan algoritma transformasi Fourier cepat untuk menghitung bobot sisi maksimum pada setiap permutasi siklus dari permutasi

  . Berikut adalah tahap-tahap dalam menyelesaikan permasalahan ini.

   Pembentukan permutasi siklus

  Pada tahap pertama, permutasi diubah bentuk dari notasi dua baris menjadi notasi siklus sehingga membentuk sejumlah permutasi siklus. Hal ini dilakukan untuk mempermudah perhitungan bobot sisi maksimum pada setiap siklus. Setiap permutasi siklus terdiri dari sejumlah simpul yang berurutan berdasarkan permutasinya. Ilustrasi perubahan notasi dapat dilihat pada

Gambar 2.15 Ilustrasi perubahan notasi permutasi

   menjadi notasi siklus

  Pada suatu pangkat permutasi , setiap simpul pada posisi akan memiliki sisi dengan simpul pada posisi

  • pada siklus dimana simpul tersebut berada, sehingga terbentuk suatu graf dengan sisi berjumlah
  • lebih besar dari pada ukuran siklus tersebut, maka nilai tersebut dimodulo dengan ukuran siklus. Hal ini terjadi karena hasil permutasi simpul pada posisi terakhir pada suatu siklus adalah simpul pada posisi awal. Selain itu, simpul pada suatu siklus tidak akan berhubungan atau memiliki sisi pada simpul dengan siklus yang berbeda pada pangkat permutasi berapapun. Ilustrasi graf yang terbentuk dari pangkat permutasi dapat dilihat pad

Gambar 2.16 Ilustrasi graf yang terbentuk dari pangkat permutasi

  Karena bobot sisi maksimum pada suatu pangkat permutasi dapat dihitung secara terpisah berdasarkan siklusnya, maka dilakukan perhitungan bobot sisi maksimum untuk setiap pangkat permutasi pada setiap siklus, kemudian digabungkan hasil perhitungan tersebut untuk mencari bobot sisi maksimum pada seluruh siklus. Untuk mendapatkan siklus-siklus tersebut dapat dicari dengan melakukan traversal berdasarkan permutasi pada simpul yang belum menjadi bagian dari siklus manapun. Traversal simpul

  

traversal . Setiap simpul yang dilewati pada traversal membentuk

suatu siklus dimana simpul diurutkan berdasarkan urutan traversal.

  Misal pada ke

  = {3,4,5,2,1}, maka dimulai dari simpul

  1

  3

  ke kemudian kembali ke simpul , sehingga terbentuk siklus

  5

  1

  ke (1,3,5). Kemudian selanjutnya dimulai dari simpul

  2