• Tidak ada hasil yang ditemukan

Deskripsi Algoritma Pelabelan Total Ajaib Titik pada Graf Roda

Dalam dokumen PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI (Halaman 70-81)

BAB IV ALGORITMA PELABELAN TOTAL AJAIB TITIK PADA GRAF

C. Deskripsi Algoritma Pelabelan Total Ajaib Titik pada Graf Roda

Pada sub-bab ini akan dibahas algoritma pelabelan pada graf roda.

Diagram alir yang telah dibuat, selanjutnya dikembangkan dalam algoritma pelabelan. Seperti diagram alirnya, algoritma pelabelan dibangun secara global dengan nama label. Sub-program dari label adalah label_awal, label_tengah, dan label_akhir. Sub-program interval menampilkan batas nilai konstanta k.

Gambar 4.6 Diagram alir sub-program label_akhir

label_akhir

a=0 p=0 x=a+p+sum(s)

a=random(3n+1) d=random(3n+1)

x=a+p+sum(s) a<>d

s(n)=a h=p v(n)=D(1)

Masukan program pelabelan adalah nilai n yang menyatakan banyaknya titik pada sikel. Keluaran proses ini adalah label-label untuk semua sisi (spokes), sisi pada sikel (rims), dan titik (vertices). Nilai n merupakan masukan untuk menentukan rentang nilai konstanta ajaib k. Batas bawah dan batas atas ditentukan berdasarkan perhitungan dasar dan perhitungan yang memperhatikan struktur graf roda. Keluarannya berupa batas nilai konstanta k.

Proses selanjutnya, nilai konstanta ajaib k dipilih dan diinputkan untuk proses pelabelan. Nilai n dan k merupakan variabel global yang akan dibaca oleh semua perintah dalam pelabelan. Sub-program label_awal dipanggil untuk memperoleh label-label awal untuk elemen 𝑠1, π‘Ÿ1, π‘Ÿπ‘›, dan 𝑣1. Proses pelabelan dilanjutkan dengan memanggil sub-program label_tengah.

Keluaran sub-program ini berupa label-label 𝑠𝑖, π‘Ÿπ‘–, π‘Ÿπ‘–βˆ’1, dan 𝑣𝑖 dengan 2 ≀ 𝑖 ≀ 𝑛 βˆ’ 1. Sub-program label_akhir dipanggil untuk memperoleh label 𝑠𝑛 dan 𝑣𝑛. Berikut ini algoritma pelabelan pada graf roda :

Langkah 1 : baca nilai n

Langkah 2 : memanggil fungsi interval. Menampilkan batas nilai k Langkah 3 : input nilai k yang dipilih

Langkah 4 : memanggil fungsi label_awal. Menyimpan label 𝑠1, π‘Ÿ1, π‘Ÿπ‘›, dan 𝑣1. Mengurangkan label yang sudah dipakai dari label yang tersedia.

Langkah 5 : memanggil fungsi label_tengah.

Menyimpan label 𝑠𝑖, π‘Ÿπ‘–, π‘Ÿπ‘–βˆ’1,𝑣𝑖. Mengurangkan label yang sudah dipakai dari label yang tersedia.

Langkah 6 : menjumlah semua label 𝑠𝑖 dengan 1 ≀ 𝑖 ≀ 𝑛 βˆ’ 1 pada variabel bobot.

Menentukan label terkecil, disimpan pada variabel kecil.

Menentukan (n-i) label terkecil, menjumlahkannya, dan disimpan pada variabel jarijari. bobot+kecil+jarijari=

minbobot. Bila nilai minbobot lebih besar dari nilai k maka langkah 5 diulang. Bila sebaliknya, lanjut ke langkah 7 Langkah 7 : memanggil fungsi label_akhir. Menyimpan label 𝑠𝑛 , 𝑣𝑛. Langkah 8 : menentukan label titik pusat melalui pusat = k – bobot Langkah 9 : menampilkan label pusat, label 𝑠𝑖, π‘Ÿπ‘–, 𝑣𝑖 dengan1 ≀ 𝑖 ≀ 𝑛 βˆ’ 1

Dalam algoritma pelabelan terdapat beberapa program. Selanjutnya, sub-program ini akan disebut fungsi. Berikut ini algoritma dari setiap fungsi yang terdapat pada algoritma pelabelan graf roda.

1. Algoritma fungsi interval

Fungsi interval dipanggil setelah nilai n diinputkan. Keluaran fungsi interval adalah batas bawah dan batas atas nilai k. Berikut ini algoritma fungsi interval :

Langkah 1 : baca nilai n,

Jika 𝑛 < 3, tampilkan β€žtidak ada pelabelanβ€Ÿ

Jika 𝑛 > 12, tampilkan β€žtidak ada pelabelanβ€Ÿ

Jika 3 ≀ 𝑛 ≀ 11, lanjut langkah 2

Langkah 2 : nilai n disubstitusikan ke 13𝑛2 𝑛+1 2+11𝑛+2< 𝑛+2(𝑛+1) 2 .

Jika salah : batas bawah = 𝑛+2 (𝑛+1)

2 , batas atas = 7𝑛 + 6. Jika benar : batas bawah = 13𝑛2+11𝑛+2

2 𝑛+1 , batas atas lanjut langkah 3

Langkah 3 : nilai n disubstitusikan ke 17𝑛2+15𝑛 +2

2 𝑛 +1 < 7𝑛 + 6,

Jika salah : batas atas = 7𝑛 + 6

Jika benar : batas atas = 17𝑛2+15𝑛 +2

2 𝑛 +1

Langkah 4 : tampilkan batas bawah dan batas atas untuk nilai n yang diinputkan

2. Algoritma fungsi label_awal

Fungsi label_awal mencari empat buah label secara acak untuk 𝑠1, π‘Ÿ1, π‘Ÿπ‘›, dan 𝑣1. Variabel sementara yang digunakan untuk memperoleh label awal adalah a,b,c,dan d. Label – label yang diperoleh disimpan pada 𝑠1, π‘Ÿ1, π‘Ÿπ‘›, dan 𝑣1sebagai array. Semua label yang telah digunakan pada proses label awal akan dikurangkan dari himpunan label – label yang tersedia. Cara ini digunakan untuk menghindari label yang sama digunakan lebih dari satu kali. Langkah-langkah dalam fungsi label_awal sebagai berikut :

Langkah 1 : inisialisasi a, b, c, dan d Langkah 2 : temp οƒŸ a + b + c + d

Langkah 3 : ulang hingga syarat temp ~= k terpenuhi Langkah 4 : a οƒŸ random(3n+1)

b οƒŸ random(3n+1) c οƒŸ random(3n+1)

d οƒŸ random(3n+1)

Langkah 5 : jika a < > b < > c < > d, temp οƒŸ a + b + c + d Langkah 6 : akhiri perulangan

Langkah 7 : s(1) οƒŸa r(1) οƒŸb r(n) οƒŸc v(1) οƒŸd

Langkah 8 : setdiff(M,[a b c d])

Label yang tersedia untuk pelabelan adalah 1,2,3, . . ,3𝑛 + 1 dinyatakan pada matriks M. Pelabelan total ajaib titik pada graf roda melibatkan empat elemen yakni 𝑠𝑖, π‘Ÿπ‘–, π‘Ÿπ‘–βˆ’1, dan 𝑣𝑖 dengan 1 ≀ 𝑖 ≀ 𝑛, sehingga dibutuhkan variabel sementara selama proses perulangan.

Keempat variabel tersebut adalah a, b, c, dan d.

Langkah pertama pada algoritma label_awal adalah tahap inisialisasi a, b, c, dan d. Pada tahap ini semua variabel sementara diberi nilai nol sebagai nilai awal. Program pelabelan mengenali variabel a, b, c, dan d dengan nilai nol.

Langkah kedua, menyediakan variabel temp untuk menampung hasil penjumlahan nilai variabel a, b, c, dan d. Karena nilai awal variabel a, b, c, dan d adalah nol, maka variabel temp memiliki nilai awal nol.

Langkah ketiga, perintah-perintah yang dinyatakan setelah langkah ketiga akan diulang sampai syarat temp = k terpenuhi. Perulangan dilakukan sampai jumlah keempat variabel yang ditampung pada variabel

temp sama dengan nilai konstanta k yang diinputkan. Bila syarat temp = k belum terpenuhi, perulangan dilakukan mulai dari langkah pertama.

Langkah keempat, memberi nilai variabel a, b, c, dan d dengan label yang tersedia secara acak. Perintah random(3n+1) adalah perintah untuk mengacak bilangan dari 1 sampai (3n+1).

Langkah kelima, jika keempat variabel memiliki nilai yang berbeda, maka temp menyimpan hasil penjumlahan keempat bilangan tersebut. Bila ada bilangan yang sama maka proses diulangi dari langkah pertama.

Langkah keenam, bila syarat temp = k sudah terpenuhi maka perulangan akan diakhiri.

Langkah ketujuh, label-label yang diperoleh dari perulangan disimpan pada variabel s, r, dan v sebagai array, khususnya dalam bentuk matriks. Variabel s kolom 1 atau 𝑠1 diberi nilai oleh label a. Variabel π‘Ÿ1 diberi nilai oleh label b. Nilai label c disimpan pada variabel r kolom ke n atau π‘Ÿπ‘›. Nilai variabel d disimpan pada variabel 𝑣1.

Langkah kedelapan, label-label yang sudah disimpan, dikurangkan dari matriks M dengan perintah setdiff(M,[a b c d]).

3. Algoritma fungsi label_tengah

Bilangan-bilangan yang diperoleh pada fungsi label_awal dapat disebut sebagai label inisial. Label inisial diasumsikan memiliki susunan benar,

sehingga label berikutnya dapat ditentukan. Label-label untuk

sub– program label_tengah dipilih dari sisa label yang tersedia. Perulangan pada proses label_tengah dilakukan untuk memperoleh label sisi (spoke), satu sisi pada sikel (rim), dan label titik (vertex) secara acak. Setiap label yang telah digunakan tidak dapat digunakan lagi.

Langkah-langkah fungsi label_tengah : Langkah 1 : baca variabel a, b, c, dan d.

a οƒŸ 0 b οƒŸ 0 c οƒŸ r(i-1) d οƒŸ 0

Langkah 2 : temp οƒŸ a + b + c + d

Langkah 3 : ulang hingga syarat temp ~= k terpenuhi Langkah 4 : a οƒŸ random(numel(B))

b οƒŸ random(numel(B)) d οƒŸ random(numel(B))

Langkah 5 : jika a < > b < > c < > d, temp οƒŸ a + b + c + d Langkah 6 : akhiri perulangan

Langkah 7 : s(i) οƒŸa r(i) οƒŸb r(i-1) οƒŸc v(i) οƒŸd

Langkah 8 : setdiff(D,[a b c d])

jarijari = jumlah (n – i ) label terkecil

bobot = jumlah label s(i) kecil = label terkecil

minbobot = jarijari + bobot + kecil Langkah 9 : jika minbobot>k, ulangi dari langkah 1 Langkah 10 : s(i) οƒŸa

r(i) οƒŸb v(i) οƒŸd

Label-label yang belum digunakan disimpan pada matriks dengan nama berbeda untuk menghindari salah baca.

Langkah pertama, inisialisasi variabel sementara. Variabel a, b, dan d diberi nilai nol, sedangkan c membaca nilai label π‘Ÿπ‘–βˆ’1 yang diperoleh dari label_awal.

Langkah kedua, hasil penjumlahan label a, b, c, dan d disimpan pada variabel temp.

Langkah ketiga, perintah-perintah yang dinyatakan setelah langkah ketiga akan diulang sampai syarat temp = k terpenuhi. Perulangan dilakukan sampai jumlah keempat variabel yang ditampung pada variabel temp sama dengan nilai konstanta k yang diinputkan. Bila syarat temp = k belum terpenuhi, perulangan dilakukan mulai dari langkah pertama.

Langkah keempat, memberi nilai variabel a, b, dan d dengan label yang belum digunakan secara acak. Perintah random(numel(B)) adalah perintah untuk mengacak bilangan dari 1 sebanyak elemen matriks B.

Langkah kelima, jika keempat variabel memiliki nilai yang berbeda, maka hasil penjumlahan keempat bilangan tersebut disimpan pada variabel temp. Bila ada bilangan yang sama maka proses diulangi dari langkah pertama.

Langkah keenam, perulangan diakhiri bila syarat temp = k sudah terpenuhi.

Langkah ketujuh, label-label yang diperoleh dari perulangan disimpan. Label s(i) diisi label a, label r(i) diisi label b, dan label v(i) diisi label d.

Langkah kedelapan, label-label yang diperoleh pada langkah 7 dikurangkan dari label yang tersedia. Label yang tersisa perlu dipastikan dapat digunakan sebagai label. Variabel minbobot menyatakan hasil penjumlahan dari variabel jarijari, bobot, dan kecil. Variabel jarijari menyatakan hasil penjumlahan (n – i ) label terkecil dari label yang belum digunakan. Variabel bobot menyatakan hasil penjumlahan semua label sisi (spoke). Variabel kecil menyatakan label terkecil dari label yang belum digunakan.

Langkah kesembilan, jika nilai minbobot lebih besar dari nilai konstanta k, maka proses pelabelan diulangi dari langkah pertama. Namun, jika nilai minbobot lebih kecil atau sama dengan nilai k maka proses dilanjutkan langkah kesepuluh.

Langkah kesepuluh, label-label yang diperoleh disimpan pada variabel 𝑠𝑖, π‘Ÿπ‘–, dan 𝑣𝑖 dengan 2 ≀ 𝑖 ≀ 𝑛 . Proses label_tengah diulang sebanyak (n – 1) kali.

4. Algoritma fungsi label_akhir

Pada akhir proses pelabelan label_tengah, terdapat tiga elemen yang belum dilabeli. Elemen tersebut adalah 𝑠𝑛, 𝑣𝑛 dan h. Label untuk ketiga elemen graf roda tersebut ditentukan pada fungsi label_akhir.

Langkah 1 : baca variabel a dan p.

a οƒŸ 0 p οƒŸ 0

Langkah 2 : x οƒŸ a + p + jumlah label s

Langkah 3 : ulang hingga syarat x ~= k terpenuhi Langkah 4 : a οƒŸ random(numel(D))

p οƒŸ random(numel(D))

Langkah 5 : jika a < > p, x οƒŸ a + p + jumlah label s Langkah 6 : akhiri perulangan

Langkah 7 : s(n) οƒŸa h οƒŸp

Langkah 8 : v(n) οƒŸlabel yang tersisa

Label yang tersisa diacak untuk melabeli 𝑠𝑛, 𝑣𝑛, dan h. Langkah pertama, membaca variabel a dan p. Variabel a dan p diberi nilai nol.

Keluaran fungsi label_akhir adalah label s dan v dengan indeks n serta label titik tengah (h).

Langkah pertama, inisialisasi variabel sementara. Variabel a dan p diberi nilai nol, variabel p akan menyatakan label titik tengah.

Langkah kedua, hasil penjumlahan label sisi jari-jari (s), a, dan p disimpan pada variabel x.

Langkah ketiga, perintah-perintah yang dinyatakan setelah langkah ketiga akan diulang sampai syarat x = k terpenuhi. Bila syarat x = k belum terpenuhi, perulangan dilakukan mulai dari langkah pertama.

Langkah keempat, memberi nilai variabel a dan p dengan label yang belum digunakan secara acak. Perintah random(numel(D)) adalah perintah untuk mengacak bilangan sebanyak elemen matriks D.

Langkah kelima, jika kedua variabel memiliki nilai yang berbeda, maka hasil penjumlahannya disimpan pada variabel x. Bila ada bilangan yang sama maka proses diulangi dari langkah pertama.

Langkah keenam, perulangan diakhiri bila syarat x = k sudah terpenuhi.

Langkah ketujuh, variabel s(n) diisi oleh nilai label a dan variabel h diisi oleh nilai label p.

Langkah kedelapan, memberi label v (n) dengan sisa label pada matriks D. Semua label yang telah disimpan pada variabel s, r, v, dan h ditampilkan pada akhir fungsi.

Dalam dokumen PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI (Halaman 70-81)

Dokumen terkait