CLIQUE TERBOBOT MAKSIMUM
4.1 Konstruksi Tabel Optimal
(G) ∑ (G(Bi))
Sebelum branch-and-bound, algoritma TOC menghitung beberapa nilai yang diperlukan untuk menghitung batas atas. Dalam branch-and-bound, algoritma TOC menghitung batas atas dengan cepat berdasarkan akibat 2.
4.1 Konstruksi Tabel Optimal
Mengingat graf tak berarah G = (V, E), algoritma TOC membagi V menjadi B1, B2, . . ., Bk (deskripsi akan ditampilkan dalam 4.3). Setiap Bi disebut blok. Ukuran setiap blok tidak boleh lebih dari panjang CPU satu kata untuk menghindari loop yang tidak perlu. Kemudian, blok diimplementasikan dalam satu vektor kata bit. Dalam algoritma TOC, subset vertex diwakili oleh himpunan blok dan diimplementasikan dalam array bit vektor.
Setelah membagi V dan membuat blok, pemetaan antara bit-bit dan vertex-vertex adalah tetap. Dan matriks adjacency dibangun sesuai dengan pemetaan. Baris sesuai dengan
vi memiliki N(vi) sebagai himpunan blok. Dengan rekonstruksi ini, operasi AND untuk menghitung S N(v)(S V) dapat segera dilakukan. Dalam branch-and-bound, operasi ini muncul dalam masing-masing cabang. Oleh karena itu rekonstruksi ini penting.
Untuk semua i, algoritma TOC menghitung bobot solusi optimal dari semua graf bagian yang disebabkan oleh semua himpunan bagian dari Bi dan menyimpannya pada tabel. Tabel ini disebut tabel optimal. Algoritma untuk membuat tabel optimal ditunjukkan pada Gambar 3.
Vektor bit merupakan himpunan bagian dari blok dan juga mewakili indeks dari tabel optimal. Oleh karena itu batas atas subset dari setiap blok dapat diperoleh dalam O (1) kali. Di baris 10 dari Gambar 3, perpotongan dihitung (N(v) himpunan). Hal ini dapat dihitung dengan hanya satu operasi AND, dan hasilnya juga vektor bit satu kata. Setiap tabel Optimal membutuhkan memori O(2l ) ukuran ketika ukuran blok adalah l. Oleh karena itu ukuran blok harus didefinisikan dengan tepat.
Diberikan suatu himpunan bagian vertex
S = B′1 + B′2 + B′3 + . . . + B′k, suatu batas atas dari (G(S))
function make_ table(B1 + B2 + . . .+ Bk) input: a partition V = B1 + B2 + . . . + Bk output: the optimal table
1: for i from 1 to k do 2: table[i][0] 0 3: for j from 1 to do
4: bj 2j-1 (a bit vector only jthbit is 1) 5: bj+1 2j(a bit vector only (j +1)thbit is 1) 6: v jth vertex in Bi
7: for set from bjto bj+1 do 8: unused table[i][set - bj] 9: used table[i][N(v) set] + w[v] 10: if used > unused then
11: table[i][set] used
12: else
13: table[i][set] unused
14: end if 15: end for
102
Prosiding Seminar Nasional Matematika dan Pendidikan Matematika, Internalisasi Nilai-nilai Berfikir Matematis Dalam Perannya di Era Masyarakat Ekonomi ASEAN (MEA) 16: end for17: end for 18: return table
Gambar 3: Algoritma Untuk Mengkonstruksi Tabel Optimal
dapat dihitung dengan akibat 2 sebagai berikut.
batas atas = table[1][B′1] + table[2][B′2]+. . .+
table[k][B′k] = ∑ [ ]
Bobot solusi optimal dari setiap blok dapat dihitung dalam O(1) dengan mengacu pada tabel optimal. Jadi batas atas ini dapat dihitung di O(k). Langkah-langkah dari algoritma TOC adalah sebagai berikut.
1. Membuat partisi V = B1 + B2 +. . . + Bk. 2. Merekonstruksi matriks adjacency.
3.Membuat tabel optimal dengan pemrograman dinamis.
4. Branch-and-bound.
Algoritma TOC juga menggunakan pencarian backtrack. Algoritma membuat barisan vertex dengan menghubungkan semua blok dan menetapkan nomor vertex sebagai
v1, v2, . . . , vn ke barisan. Maka dapat digunakan pencarian backtrack dengan tabel optimal.
4.2 Contoh
Kami menunjukkan contoh algoritma kami bekerja pada graf yang ditunjukkan pada Gambar 1. Contoh ini didasarkan pada V
partisi berikut = B1 + B2.
Dengan menerapkan V dalam array yang ukurannya 2 sebagai berikut.
V [1] = 1111(2) = 15(10)
V [2] = 1111(2) = 15(10)
Setiap bit dari V [1] adalah bersesuaian dengan v1, v3, v5, v7 dari kiri. Dan setiap bit dari V [2] adalah bersesuaian dengan v2, v4, v6,
v8 dari kiri. Matriks adjacency direkonstruksi untuk bi vektor ini ditunjukkan pada Gambar 4. Gambar 5 dan Gambar 6 menunjukkan pelaksanaan oleh satu kata untuk setiap blok. Tabel optimal ditunjukkan pada Gambar 7.
v1 v3 v5 v7 v2 v4 v6 v8 v1 v3 v5 v7 v2 v4 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0
Pendidikan Matematika Universitas Muhammadiyah Purworejo,
Ruang Seminar UMP, Sabtu, 28 Mei 2016
103
v6v8
0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0
Gambar 4: Rekonstruksi Matriks Adjacency
B1 B2 v1 v3 v5 v7 v2 v4 v6 v8 0001 1001 0010 1110 0100 0110 1000 1011 1101 0100 0110 1010 0111 0100 1001 0000
Gambar 5: Implementasi Matriks Adjacency (Biner)
Implementasikan himpunan bagian vertex oleh sebuah array yang ukurannya 2 sebagai berikut.
S[1] = 1001(2) = 9(10)
S[2] = 1100(2) = 12(10)
Dapat dapat dihitung S' = S N[v1] = sebagai berikut. B1 B2 v1 v3 v5 v7 v2 v4 v6 v8 1 9 2 14 4 6 8 11 13 4 6 10 7 4 9 0
Gambar 6: Implementasi Dari Matriks Adjacency (Desimal) B1 B2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 0 5 7 6 3 6 7 2 8 5 8 8 11 8 11 4 1 9 7 6 3 9 7 4 9 9 9 8 11
104
Prosiding Seminar Nasional Matematika dan Pendidikan Matematika, Internalisasi Nilai-nilai Berfikir Matematis Dalam Perannya di Era Masyarakat Ekonomi ASEAN (MEA) 15 9 11Gambar 7: Tabel Optimal
S′[1] = 1001(2) & 0001(2) = 0001(2) = 1(10)
S′[2] = 1100(2) & 1001(2) = 1000(2) = 8(10)
Batas atas S dapat dihitung dengan tabel optimal sebagai berikut.
batas atas = table[1][9] + table[2][12] = 9 + 9
= 18
Batas atas dari of S′ dapat dihitung sebagai
berikut.
batas atas = table[1][1] + table[2][8] = 5 + 1
= 6
Algorithm Tabel Optimal Clique(TOC) function main
input: a vertex-weighted undirected graph
G = (V;E)
output: the maximum weight clique
1: do vertex coloring and make a partition of
V .
2: record 0
3: stop decide by edge density
4: for i from to stop do 5: expand(Vi,0) 6: c[i] record
7: end for 8: expand(V, 0)
9: return the maximum weight clique
function expand (S;weight)
input: a vertex subset S, the forming clique weight
weight
1: if = 0 then
2: if weight > record then 3: record weight 4: end if 5: return 6: end if 7: while > 0 do 8: i min fk j vk 2 Sg 9: upper 0
10: for i from 1 to number of blocks in S do 11: upper upper + table[i][Bi] 12: end for
13: if weight + upper record then 14: return
15: end if
16: if weight + c[i] record then 17: return
Pendidikan Matematika Universitas Muhammadiyah Purworejo,
Ruang Seminar UMP, Sabtu, 28 Mei 2016
105
18: end if19: S S \ vi
20: expand(S N(vi);weight + w[vi]) 21: end while
22: return
Gambar 10: Algoritma (TOClique)
5. KESIMPULAN
Penulis mengusulkan batas atas dari clique berbobot maksimum dihitung dengan tabel optimal dan algoritma berdasarkan branch-and-bound menggunakan batas atas. Untuk graf tak berarah G = (V, E), algoritma TOC membagi V ke beberapa subset dan membuat subgraf yang ditimbulkannya. Telah dibuktikan bahwa jumlah bobot clique berbobot maksimum dari subgraf merupakan batas atas dari clique berbobot maksimum dari G. Algoritma TOC menghitung beberapa nilai yang digunakan dalam menghitung batas atas dengan pemrograman dinamis dan menyimpan semua hasil. Dan batas atas dapat dihitung dengan cepat dalam branch-and-bound tersebut. Dapat dikonfirmasikan bahwa algoritma TOC lebih cepat dan efisien dari algoritma lain dengan eksperimen komputer.
References:
[1] D. Kumlander, “On importance of a special sorting in the maximum-weight clique algorithm based on colour classes,” Proc. of the second international conference on Modelling, Computation and Optimization in Information Systems and Management Sciences Communications in Computer
and Information Science, vol.14, 2008, pp.165-174.
[2] D. Kumlander, “Network resources for the maximum clique finding problem” http://www.kumlander.eu/graph/
[3] E. Tomita, Y. Sutani, T. Higashi, S. Takahashi, M. Wakatsuki, “A simple and faster branchand-bound algorithm for finding a maximum clique,” Proc. of the 4th InternationalWorkshop,WALCOM Algorithms and Computation, Lecture Notes in Computer Science, vol.5942,2010, pp.191-203.
[4] K. Yamaguchi, S. Masuda, “A new exact algorithm for the maximum weight clique problem,” Proc. of the 23rd International Technical Conference on Circuits/Systems, Computers and Communications, 2008, pp.317 - 320. [5] P.R.J. O¨ sterga°rd, “A new algorithm for
the maximum-weight clique problem,” Nordic Journal of Computing, vol.8, 2001, pp.424-436.
[6] P.R.J. streg rd, “Cliquer homepage” httpμ //users.tkk.fi/˜pat/cliquer.html [7] S. Shimizu, K. Yamaguchi, T. Saitoh, S.
Masuda, “Some improvements on Kumlander‟s maximum weight clique extraction algorithm,” Proc. of the International Conference on Electrical, Computer, Electronics and Communication Engineering 2012, World Academy of Science, Engineering and Technology, Issue 72, 2012, pp.307-311.