• Tidak ada hasil yang ditemukan

Jurnal Evolusi Volume 5 No evolusi.bsi.ac.id

N/A
N/A
Protected

Academic year: 2021

Membagikan "Jurnal Evolusi Volume 5 No evolusi.bsi.ac.id"

Copied!
6
0
0

Teks penuh

(1)

Analisa Algoritma Faktor Persekutuan Terbesar (FPB)

Menggunakan Bahasa Pemrograman C++

Fitri Dwi Lestari

Program Studi Manajemen Informatika, AMIK BSI Pontianak Fitridl02@gmail.com

Abstrak - The algorithm is said to be good if the algorithm can minimize the need for time and space . One type of algorithm that there is an algorithm to find the value of Greatest Common Divisor (GCD). Greatest Common Divisor (GCD) of two numbers is the largest positive integer that can divide two numbers depleted tersebut.Ada some algorithms that I use to find the value of the GCD as the Euclidean algorithm , the algorithm Stein , Brute Force algorithm , and the algorithm Dijkstra Algorithm Bishops . In this paper the authors analyze some of the algorithms used in the calculation of Greatest Common Divisor (GCD)and made in the programming language C ++ .Of some existing algorithms on calculation GCD numbers , Brute Force algorithm is quite efficient algorithms are used because we are not using complex calculations .

Keywords: Algorithms, FPB, Euclidean algorithm, Stein Algorithm, Brute Force Algorithm, Dijkstra's algorithm, Bishops Algorithm

Abstrak - Algoritma dikatakan baik jika algoritma dapat meminimalkan kebutuhan ruang dan waktu. Salah satu jenis algoritma yang ada algoritma untuk menemukan nilai Divisor umum Greatest (GCD). Greatest Divisor Umum (GCD) dari dua angka adalah bilangan bulat positif terbesar yang dapat membagi dua nomor habis tersebut.Ada beberapa algoritma yang saya gunakan untuk menemukan nilai GCD sebagai algoritma Euclidean, algoritma Stein, algoritma Brute Force, dan algoritma Dijkstra algoritma Uskup. Dalam tulisan ini penulis menganalisis beberapa algoritma yang digunakan dalam perhitungan Divisor umum Greatest (GCD) dan dibuat dalam bahasa pemrograman C ++. Dari beberapa algoritma yang ada pada nomor perhitungan GCD, Brute Force algoritma ini cukup efisien algoritma yang digunakan karena kita tidak menggunakan perhitungan yang rumit.

Kata kunci: Algoritma, FPB, Algoritma Euclidean, Algoritma Stein, Algoritma Brute Force, Algoritma Dijkstra, Algoritma Bishop

1. PENDAHULUAN

Seperti yang diketahui bersama bahwa algoritma merupakan suatu pemecahan masalah yang sering digunakan dalam kehidupan sehari-hari, algoritma juga biasanya dijadikan alternatif pencarian /perhitungan yang banyak digunakan dalam bentuk program, karna dianggap lebih efektif dan efisien. Salah satu permasalahan yang dapat dipecahkan dengan pencarian algoritma suatu bilangan yaitu perhitungan FPB (Faktor Persekutuan Terbesar).

Faktor Persekutuan Terbesar (FPB) merupakan dua bilangan bulat positif terbesar yang dapat membagi habis kedua bilangan tersebut. Dalam bahasa Inggris FPB biasa juga dikenal dengan Greatest Common Divisor (GCD). Dari perhitungan dua buah bilangan tersebut dicari persekutuan terbesar yang akan menjadi hasil akhir dari dua bilangan tersebut.

Dalam memecahkan suatu masalah pencarian nilai terbesar dibutuhkan sebuah algoritma penyelesaian secara komputasi. Algortima merupakan kumpulan beberapa instruksi atau perintah yang dibuat secara jelas dalam penyelesaian suatu masalah. Kumpulan instruksi atau perintah yang dimaksud dibentuk dari suatu bahasa pemrograman yang dapat dimengerti oleh komputer. Kumpulan instruksi atau perintah tersebut berupa langkah-langkah

atau tahapan-tahapan yang diberikan untuk menyelesaikan suatu pekerjaan atau suatu masalah secara cepat,mudah, dan efisien.

Untuk mencari sebuah FPB (Faktor Persekutuan Terbesar) dari dua buah bilangan bulat, kita dapat menggunakan beberapa algoritma diantaranya:

1. Algoritma Euclidean 2. Algoritma Stein 3. Algoritma Brute Force 4. Algoritma Dijkstra 5. Algoritma Bishops

Tujuan dari penelitian ini yaitu untuk mengetahui algoritma mana yang paling mudah penggunaannya dan perhitungan yang paling singkat dalam suatu FPB (Faktor Persekutuan Terbesar), serta di buat dalam bahasa pemrograman C++.

1.1 Algoritma

Algoritma pada dasarnya merupakan alur pikiran dalam menyelesaikan suatu pekerjaan, dan dituangkan dalam bentuk tertulis yang dapat dimengerti oleh orang lain

Menurut Utami dan Sukrisno (2005:20), “Algortima adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu atau metode dan tahapan sistematis dalam program.”

(2)

Menurut Rinaldi (2007:4), “Algoritma merupakan prosedur komputasi yang terdefinisi dengan baik yang menggunakan bebebrapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran atau lebih detailnya disimpulkan bahwa algortima adalah deretan langkah komputasi yang mentransformasikan masukan menjadi keluaran.”

Menurut Donald Kunth dalam buku Suarga (2012:4), Sebuah algorima juga harus memenuhi kriteria sebagai berikut:

1. Input

Suatu algoritma memiliki input atau kondisi awal sebelum dilaksanakan, bisa berupa nilai-nilai peubah yang diambil dari himpunan kusus.

2. Output

Suatu algoritma akan mengahsilkan output setelah dilaksanakan atau algoritma akan mengubah kondisi awal menjadi kondisi akhir, dimana nilai output diperoleh dari nilai input yang telah diproses melalui algoritma.

3. Definiteness

Langkah-langkah yang dituliskan dalam algoritma terdefinisi dengan jelas sehingga mudah dilaksanakan oleh pengguna algoritma.

4. Finiteness

Suatu Algoritma harus memberi kondisi akhir setelah jumlah langkah yang terbatas jumlahnya dilakukan terhadap setiap kondisi awal atau input yang diberikan. 5. Effectiveness

Setiap langkah dalam algoritma bisa dilaksanakan dalam suatu selang waktu tertentu sehingga pada akhirnya didapatkan suatu yang diharapkan.

6. Generality

Setiap langkah alhoritma berlaku untuk setiap himpunan input yang sesuai dengan persoalan yang diberikan, tidak hanya untuk himpunan tertentu.

1.2 Kompleksitas Algoritma

Terdapat dua macam kompleksitas algoritma, yaitu Kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu disimbolkan dengan T(n) dan kompleksitas ruang S(n). Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankkan algoritma sebagai fungsi dari ukuran masukan n. Komplesitas ruang, S(n) diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.

Dengan menggunakan besaran kompleksitas waktu/ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n(1). [4]

Setiap algoritma memiliki dua buah ciri khas yang dapat digunakan sebagai parameter pembanding, yaitu jumlah proses yang dilakukan dan jumlah memori yang digunakan untuk melakukan proses. Jumlah proses ini dikenal sebagai kompleksitas waktu yang disimbolkan dengan T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n, dimana ukuran masukan (n) merupakan jumlah data yang diproses oleh sebuah algoritma. Sedangkan jumlah memori dikenal sebagai kompleksitas ruang yang disimbolkan dengan S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat didalam algoritma sebagai fungsi dari masukan n.

Dengan menggunakan kompleksitas waktu atau kompleksitas ruang, dapat ditentukan laju peningkatan waktu atau ruang yang diperlukan algoritma, seiring dengan meningkatnya ukuran masukan (n).

Dalam setiap algoritma, terdapat berbagai jenis operasi, di antaranya :

a. Operasi baca tulis. b. Operasi aritmatika (+ - / *)

c. Operasi pengisian nilai (assignment) d. Operasi pengaksesan elemen larik e. Operasi pemanggilan fungsi ataupun

prosedur

Bedasarkan kodisi dari kompleksitas algortima ada 3 kondisi yang dilihat dari beberapa kasus yaitu :

a. Kondisi Best Case

Waktu tempuh yang bernilai minimum dari suatu fungsi F(N) untuk setiap input atau disebut juga suatu keadaan yang terbaik dari suatu proses di dalam algoritma. b. Kondisi Worst Case

Waktu tempuh yang bernilai maksimum dari suatu fungsi F(N) untuk setiap input atau keadaan ini disebut juga dengan keadaan analog terburuk.

c. Kondisi Avarage Case

Merupakan suatu keadaan dari suatu waktu tempuh yang equivalen dengan nilai eksperimentasi dari fungsi F(N) untuk setiap input.[5]

1.3 FPB (Faktor Persekutuan Terbesar) Menurut Erna (2011:7), “FPB adalah singkatan dari Faktor Persekutuan Terbesar.

(3)

Faktor Persekutuan Terbesar (FPB) dari dua bilangan adalah bilangan bulat positif terbesar yang dapat membagi habis kedua bilangan tersebut. Dalam bahasa Inggris FPB biasa juga dikenal dengan Greatest Common Divisor (GCD).”

1.4 Algoritma Euclidean

Algoritma Euclidean adalah metode yang efisien untuk menghitung pembagi umum terbesar (FPB) dari dua bilangan bulat tanpa meninggalkan sebuah sisa.

Algoritma Euclidean juga memiliki aplikasi teoritis dan praktis. Algoritma ini adalah elemen kunci dari algoritma RSA, sebuah enkripsi public-key metode yang luas digunakan dalam perdagangan elektronik. Hal ini digunakan untuk memecahkan persamaan Diophantine, Algoritma Euclidean juga dapat digunakan dalam metode rantai untuk mencari akar Sturm nyata dari polinomial, dan dalam beberapa algoritma faktorisasi bilangan bulat yang modern.

Konsep dari Algoritma Euclidean ini adalah menghitung bilangan yang lebih besar (m) dibagi dengan bilangan yang lebih kecil (n). Hasil sisa pembagian m dan n disimpan dalam sebuah bilangan r. Kemudian m diisi dengan nilai n dan n diisi dengan nilai r. Jika hasil sisa pembagian m dan n belum nol maka lakukan terus perulangan pembagian hingga sisanya nol. 1. Jika n=0 maka m adalah FPB(m,n); stop. Tetapi jika n ≠ 0 Lanjutkan ke langkah 2.

2. Bagilah m dengan n dan misalkan r adalah sisanya.

3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah 1. [4] Contoh: FPB (275,51); 275=5.51+ 20 51 = 2.20 + 11 20 = 1.11 + 9 11 = 1.9 + 2 9 = 4.2 + 1 2 = 1.1 + 1 1 = 1.1 + 0

Karena sisa terakhir adalah nol maka FPB dari 275 dan 51 adalah sisa sebelumnya yaitu 1. FPB(797, 522); 797 =1.522 + 275 522=1.275 + 247 275 =1.247 + 28 247 =1.28+ 23 28 = 1.23 + 5 23 = 4. 5 + 3 5 = 1. 3 + 2 3 = 1. 2 + 1 2 = 1.1 + 1 1 = 1.1 + 0

Karena sisa terakhir adalah nol maka FPB dari 797 dan 522 adalah sisa sebelumnya yaitu 1. 1.5 Algoritma Stein

Algoritma Stein(Algoritma FPB Biner) adalah algoritma yang menghitung pembagi umum terbesar dari dua bilangan bulat non-negatif dengan menerapkan identitas-identitas secara berulang kali.[3]

Konsep algoritma ini dipakai identitas yang berulang sebagai berikut:

1. gcd(0, v) = v, karena bilangan apapun membagi 0 dan v adalah bilangan terbesar yang membagi v. Sama halnya, gcd(u, 0) = u. gcd(0, 0) tidak dapat didefinisikan. 2. Jika u and v keduanya genap, maka gcd(u,

v) = 2·gcd(u/2, v/2), karena 2 adalah pembagi keduanya.

3. Jika u genap dan v ganjil, maka gcd(u, v) = gcd(u/2, v), karena 2 bukan pembagi keduanya. Sama halnya, jika u ganjil dan v genap, maka gcd(u, v) = gcd(u, v/2). 4. Jika u dan v keduanya ganjil, dan u ≥ v,

maka gcd(u, v) = gcd((u−v)/2, v). Jika keduanya ganjil dan u < v, maka gcd(u, v) = gcd((v-u)/2, u). Ini merupakan kombinasi satu langkah dari algoritma Euclid, yang menggunakan pengurangan setiap langkah, dan sebuah aplikasi dari langkah 3. Pembagian oleh 2 menghasilkan sebuah integer karena perbedaan dari dua angka ganjil adalah genap.

5. Ulangi langkah 3–4 sampai u = v, (atau satu langkah lagi) sampai u = 0. Dalam kasus ini, hasilnya adalah 2kv, di mana k

(4)

adalah faktor dari 2 yang ditemukan di langkah 2. [4] Contoh: Mencari FPB(2132, 2541); 1. FPB(2132, 2541) 2. FPB(2132, 2541) 3. FPB(1066, 2541) 4. FPB(533, 2541) 5. FPB(533, 1004) 6. FPB(533, 502) 7. FPB(533, 201) 8. FPB(166,201) 9. FPB(83,201) 10. FPB(83,59) 11. FPB(12,59) 12. FPB(6,59) 13. FPB(3,59) 14. FPB(3,28) 15. FPB(3,14) 16. FPB(3,7) 17. FPB(3,2) 18. FPB(3,1) 19. FPB(1,1) Maka FPB(2132, 2541 )=FPB(1,1)=1. 1.6 Algoritma Brute Force

Brute force adalah sebuah pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah (problem statement) dan definisi konsep yang dilibatkan Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung, dan dengan cara yang jelas (obvious way) meskipun bukan merupakan solusi yang paling mangkus.

Algoritma ini digunakan untuk menghitung bilangan bulat positif mulai dari n hingga kebawah sampai menemukan satu bilangan yang dapat membagi m dan n secara merata. Algoritma:

1- Gunakan dua bilangan positif m,n , dimana m<n.

2- Nilai i = m.

3- While (m mod i <> 0 or n mod i <> 0) do i=i-1; GCD = i; .[1] Contoh : M N I 4 11 4 3 2 1 GCD = 1 1.7 Algoritma Dijkstra

Algoritma ini dikembangkan oleh Dijkstra yang merupakan ahli matematika Belanda dan seorang ilmuwan komputer .

Konsep algoritma ini adalah : jika m > n , maka GCD ( m-n, n ) . dan jika m<n, maka GCD (M, N-M)

Algoritma ini dikatakan baik bahwa ia menggunakan algoritma struktur data rekursi [1] Algoritma: For m,n>0, GCD(m,n)= m if m=n GCD(m-n,n) if m>n Contoh : m N GCD 250 100 GCD (250,100) 150 100 GCD (150,100) 50 100 GCD (50,100) 50 50 GCD (50,50) FPB = 5 1.8 Algoritma Bishop’s

Konsep dari algoritma Bishop’s ini adalah jika angka bilangan besar dan kecil keduanya kelipatan k , maka besar - kecil merupakan kelipatan dari k.

Catatan: besar - kecil lebih kecil dari yang besar , jadi kami telah mengurangi masalah dan lebih mudah untuk dipecahkan.

Algoritma:

1. Masukkan dua bilangan bulat positif x,y 2. While ( x <> y ) If (x>y) then X=x-y Else { temp = y y=x x=temp } Return(x) [1]

(5)

Contoh: X Y 50 60 60 50 10 50 50 10 40 10 30 10 20 10 10 10 FPB = 10 1.9 Pemrograman C++

Menurut Joni dan Raharjo (2011:3) mengemukakan bahwa bahasa C merupakan bahasa yang powerful dan fleksibel yang telah terbukti dapat menyelesaikan program-program besar seperti pembuatan system operasi, pengolah kata, pengolahan gambar (seperti pembuatan game) dan juga pembuatan kompilator untuk bahasa pemrograman baru.

Joni dan Raharjo (2011:3) mengemukakan bahwa bahasa C merupakan bahasa yang portabel sehingga dapat dijalankan di beberapa sistem operasi yang berbeda. Sebagai contoh program yang kita tulis dalam sistem operasi Windows dapat kita kompilasi di dalam sistem operasi Linux

dengan sedikit ataupun tanpa perubahan sama sekali.

2. PEMBAHASAN

Pada pembahasan ini akan membahas tentang implementasi algoritma yang digunakan dalam perhitungan FPB dengan menggunakan bahasa pemrograman C++ . 3.1 Implementasi Program

3.1.1 Algoritma Euclidean

Berikut adalah penerapan algoritma euclidean menggunakan antar muka bahasa pemrograman C++, perhitungan menggunakan algoritma Euclidean pada C++:

Gambar 1. Implementasi Program Algoritma Euclidean

3.1.2 Algoritma Stein

Berikut adalah penerapan algoritma Stein menggunakan antar muka bahasa pemrograman C++, perhitungan menggunakan algoritma Stein pada C++:

Gambar 2. Implementasi Program Algoritma Stein

3.1.3. Algoritma Brute Force

Berikut adalah penerapan algoritma Brute Force menggunakan antar muka bahasa pemrograman C++,

perhitungan menggunakan algoritma Brute Force pada C++:

Gambar 3. Implementasi Program Algoritma Brute Force

3.1.4. Algoritma Dijkstra

Berikut adalah penerapan algoritma Dijkstra menggunakan antar muka bahasa pemrograman C++, perhitungan menggunakan algoritma Dijkstra pada C++:

Gambar 4. Implementasi Program Algoritma Dijkstra

(6)

3.1.5. Algoritma Bishops

Berikut adalah penerapan algoritma Bishops menggunakan antar muka bahasa pemrograman C++, perhitungan menggunakan algoritma Bishops pada C++:

Gambar 4. Implementasi Program Algoritma Bishops

3. KESIMPULAN

Dari hasil analisis tiap algoritma dalam menghitung nilai FPB dapat disimpulkan: 1. Diantara lima algoritma dalam proses

perhitungan Faktor Persekutuan Terbesar (FPB), algoritma Brute Force adalah algoritma yang sederhana dan mudah untuk dipahami, karna proses perhitungannya hanya mencari sisa bagi antara dua bilangan bulat positif.

2. Algoritma Stein memerlukan perhitungan yang kompleks dan cukup rumit untuk dipahami dibandingkan dengan algoritma lainnya.

3. Dari kompilasi yang dilakukan menghasilkan output yang sama tetapi dengan proses yang berbeda dari setiap algoritma yang digunakan.

4. DAFTAR PUSTAKA

[1] Altarawneh. 2011 . A Comparison of Several Greatest Common Divisor(GCD) Algorithms. Volume 26-No.5, Juli 2011 (http://www.ijcaonline.org/volume26/numb er5/pxc3874253.pdf, Diakses 20 Januari 2016)

[2] Himawati,Erna. 2011. Menghitung Faktor Persekutuan Terbesar(FPB) dan Kelipatan Persekutuan Terkecil (KPK). Jakarta: Be Champion.

[3] Joni, Budi Raharjo. 2011. Pemrograman C dan Implementasinya. Bandung: Informatika.

[4] Okharyadi. 2007. Kompleksitas Algoritma Euclidean dan Stein(FPB Biner)(http://informatika.stei.itb.ac.id/~rinal

di.munir/Matdis/2011- 2012/Makalah2011/Makalah-IF2091-2011-077.pdf, , Diakses 20 Januari 2016) [5] Ryan Rheinadi. 2010. Analisis Algoritma

Bubble Sort (http://informatika.stei.itb.ac.id/~rinaldi.mun

ir/Matdis/2009- 2010/Makalah0910/MakalahStrukdis0910-032.pdf , Diakses 20 Januari 2016)

[6] Suarga. 2012. Algoritma dan Pemrograman. Yokyakarta: Andi.

[7] Utami,Sukrisno. 2005. 10 Langkah Belajar Logika dan Algoritma Menggunakan Bahasa C dan C++ di GNU/Linux. Yokyakarta: Andi

[8] Widhaprasa. 2007. Penerapan Algoritma Brute Force Dalam Mencari Faktor Prima

Pada Suatu Bilangan (http://informatika.stei.itb.ac.id/~rinaldi.mu

nir/Stmik/2010- 2011/Makalah2010/MakalahStima2010-103.pdf, Diakses 19 Januari 2016)

Gambar

Gambar 2. Implementasi Program Algoritma  Stein

Referensi

Dokumen terkait

Adapun pendelegasian pemberian kewenangan pemberian izin berdasarkan Peraturan Menteri Kesehatan Republik Indonesia Nomor 006 Tahun 2012 tentang industri dan usaha obat

Pengantar Proses Stokastik B 3 VI Statistika 50 ONLINE Muhammad Hasan Sidiq Kurniawan, S.Si., M.Sc. Pengantar Proses Stokastik C 3 VI Statistika

menunjukan bahwa kualitas jaringan komputer LAN dan WLAN pada SOHO tersebut tergolong memuaskan, pengiriman data melalui file sharing dengan NAS lebih cepat

Penanda ISSR itu lebih cepat, lebih murah, memerlukan jumlah DNA yang sedikit [7] mampu melakukan pendeteksian genetik polimorfisme tanpa perlu lebih dahulu mengetahui susunan

Dari calon legislatif terpilih yang saya teliti menjadi anggota dewan pada periode 2014-2019 yaitu Diah Sunarsasi, dr.Suryaningsih, Riawan Woro (Partai Gerindra), Eny Triyuliastuti

Untuk melihat stress, displacement dan restrain load dapat digunakan Element Viewer dengan cara klik tom bol , maka akan muncul tabel seperti berikut di bagian bawah

Efek Pemberian Ekstrak Etanol Daun Talok (Muntingia calabura L.) terhadap Kadar Asam urat Serum Tikus Putih (Rattus norvegicus L.) Galur Wistar

Penyisihan kadar COD dan TSS yang akan dilakukan dalam penelitian ini menggunakan metode ozonasi berbasis ozon, yang merupakan salah satu teknologi pengolahan limbah yang