Anda di halaman 1dari 33

LEMBAR PENILAIAN

NIM

NAMA

Nilai
Makalah
30%

0810940069

SYAHYANGKA
ARDIAN

0810943027

AJENG
PAMBUKO A

0810943013

PRIMA
MAHENDRA B.
P.

0810943001

ADHI
PRASETYO R

0810943039

FIRDAUS
RISKIAN

0810940053

M. MAHMUDI

0810943029

ANDY HADI S.

0810943053

NURRAHMAH
S. YUNIAR

Presentasi
70%

NA

DAFTAR ISI
Halaman
LEMBAR PENILAIAN ....................................... 1
DAFTAR ISI ......................................................... 2
ABSTRAK............................................................. 3
BAB I PENDAHULUAN ....................................
1.1. Latar Belakang .......................................
1.2. Rumusan Masalah .................................
1.3. Tujuan ....................................................
1.4. Batasan Masalah ....................................

4
4
5
5
5

BAB II KAJIAN PUSTAKA ...............................

BAB III HASIL ANALISIS .................................


3.1. Contoh Kasus / Hitungan Manual .........
3.2. Flowchart dan Pseudocode ....................
3.3. Desain Interface .....................................
3.4. Listing Program .....................................
3.5. Penjelasan Program ...............................

8
8
10
20
20
30

BAB IV KESIMPULAN ...................................... 32


DAFTAR PUSTAKA

ABSTRAK
Dalam kehidupan nyata, sering terjadi adanya bentrokan
penyusunan jadwal. Jika dilihat secara individu, penyusunan
jadwal secara manual bukanlah hal yang sulit karena adanya
toleransi waktu dan jadwal perseorangan yang berbeda-beda.
Namun jika masalah penjadwalan tersebut menyangkut banyak
orang, maka hal tersebut menjadi sulit. Salah satu solusinya
adalah dengan teknik pewarnaan graf (Graph Coloring). Makalah
ini akan membahas mengenai solusi untuk masalah penyusunan
jadwal tersebut. Yaitu dengan teknik pewarnaan graf dan
algoritma-algoritma yang dapat digunakan dalam teknik
pewarnaan graf ini dengan menggunakan algoritma Welch
powell.

BAB I
PENDAHULUAN
1.1. Latar Belakang
Teori graf merupakan sebuah pokok bahasan yang
sudah tua usianya namun memiliki banyak terapan sampai
saat ini. Graf digunakan untuk merepresentasikan objek-objek
diskrit dan hubungan antara objek-objek tersebut. Graf pertama
kali digunakan untuk memecahkan masalah jembatan
Knigsberg pada tahun 1736. Pada tahun tersebut, seorang
matematikawan Swiss bernama L. Euler berhasil memecahkan
masalah jembatan Knigsberg tersebut. Ia memodelkan
masalah ini ke dalam bentuk graf dengan daratan (titik-titik
yang dihubungkan oleh jembatan) dimodelkan sebagai noktah
atau vertex dan jembatan dinyatakan sebagai garis atau edge.
Definisi sebuah graf itu sendiri
adalah sebagai pasangan
himpunan (V, E) yang dalam hal ini: V = himpunan tidak
kosong dari simpul-simpul (vertices atau node) dan E =
himpunan sisi (edges atau arcs) yang menghubungkan sepasang
simpul. Dalam notasi matematika, graf dapat ditulis dengan:
G = (V, E)
Sebuah graf dimungkinkan tidak mempunyai sisi satu buah pun
namun setiap simpulnya harus ada (minimal satu).
Dalam metode pewarnaan graf, terdapat beberapa
algortma-algoritma yang telah diterapkan. Algoritma-algoritma
ini
telah
banyak
digunakan
dalam pengembangan
berbagaimacam software penyusunan jadwal. Karena banyaknya
persoalan
penyusunan jadwal
yang
kompleks,
tidak
memungkinkan untuk melakukan pewarnaan graf secara
manual. Semakin banyak jumlah komponen-komponen yang
harus diperhitungkan dalam penyusunan sebuah jadwal, maka
semakin sulit penyusunan sebuah jadwal tesebut. Berikut ini
merupakan beberapa algoritma yang dapat digunakan dalam
metode pewarnaan graf. Algoritma
Welch-Powell
dapat

digunakan untuk mewarnai sebuah graf G secara efisien.


Algoritma ini tidak selalu memberikan jumlah warna minimum
yang diperlukan untuk mewarnai G, namun algoritma ini
cukup praktis untuk digunakan dalam pewarnaan simpul
sebuah graf. Algoritma Welch-Powell hanya cocok digunakan
untuk graf dengan orde yang kecil. Oleh karena itu algoritma
Welch-Powell hanya dapat menentukan batas atas warna.
1.2 Rumusan Masalah
1) Bagaimana cara membuat program dalam Algoritma
Welch-Powel untuk pewarnaan titik pada Graph.
2) Apa fungsi pewarnaan titik pada Graph.
3) Bagaimana cara pengamplikasian program ini dalam
kehidupan sehari-hari.

1.3 Tujuan
Mahasiswa dapat mengenal Delphi dan dapat
mengimplementasikan
Algoritma
Welch-Powell
untuk
Pewaranaan Titik Pada Graph serta mampu memanfaatkannya
dalam kehidupan sehari-hari dengan menggunakan program
Delphi.
1.4 Batasan Masalah
Dalam makalah ini kami membahas materi tentang
Algoritma Welch-Powel untuk pewarnaan titik pada Graph, oleh
karena itu kami tidak membahas tentang pembuatan matrik. Jadi
yang kami bahas hanyalah sebatas tentang pewarnaan titik pada
Graph

BAB II
KAJIAN PUSTAKA
Teori graf merupakan pokok bahasan yang sudah tua
usianya namun memiliki banyak terapan. Sampai saat ini graf
digunakan untuk merepresentasikan objek objek diskrit dan
hubungan antara objek objek tersebut. Representasi visual dari
graf adalah dengan menyatakan objek dengan simpul, noktah,
bulatan, titik, atau vertex, sedangkan hubungan antara objek
dinyatakan dengan garis atau edge. Salah satu aplikasi yang
berkaitan dengan graf adalah pewarnaan graf (graph colouring).
Pengertian pewarnaan graf adalah pemberian warna, yang
biasanya direpresentasikan sebagai bilangan terurut mulai dari 1,
pada objek tertentu pada graf. Objek tersebut dapat berupa
simpul, sisi, wilayah ataupun kombinasi ketiganya.
Ada tiga macam pewarnaan graf, yaitu :
1. Pewarnaan simpul (vertex colouring), merupakan pemberian
warna atau label pada setiap
simpul sehingga tidak ada 2
simpul bertetangga yang memiliki warna sama.
2. Pewarnaan sisi (edge coloring), merupakan pemberian warna
pada setiap sisi pada graf sehingga sisi-sisi yang berhubungan
tidak memiliki warna yang sama.
3. Pewarnaan wilayah (region colouring), merupakan pemberian
warna pada setiap wilayah pada graf sehingga tidak ada
wilayah yang bersebelahan yang memiliki warna yang sama.
Suatu graph G adalah suatu himpunan berhingga tak kosong
dari objek-objek yang disebut verteks (minimal tunggal) bersamasama dengan suatu himpunan yang anggotanya adalah pasangan
yang tak berurut dari verteks yang berbeda pada G yang disebut
edge (mungkin kosong), dan dinotasikan dengan G{V (G),E(G)}.
Jumlah warna minimum yang dapat digunakan untuk
mewarnai graf dinyatakan dengan bilangan kromatik, yang
disimbolkan dengan (G). Graf yang memiliki bilangan kromatik
1 adalah graf kosong, yaitu graf yang hanya terdiri dari sebuah

simpul. Sementara sembarang graf planar (graf yang dapat


digambar di bidang datar tanpa ada sisi yang menyilang di atas
sisi lainnya) dapat digambar hanya dengan menggunakan 4
warna.Dalam metode pewarnaan graf, terdapat beberapa
algoritma - algoritma yang telah diterapkan. Algoritma
algoritma ini telah banyak digunakan dalam pengembangan
berbagai macam software penyusunan jadwal. Karena banyaknya
persoalan penyusunan jadwal yang kompleks, tidak
memungkinkan untuk melakukan pewarnaan graf secara manual.
Semakin banyak jumlah komponen - komponen yang harus
diperhitungkan dalam penyusunan sebuah jadwal, maka semakin
sulit penyusunan sebuah jadwal tersebut.
Pewarnaan graf adalah metode pewarnaan elemen
sebuah graf yang terdiri dari pewarnaan vertex (simpul), sisi
(edge), dan wilayah (region).
Algoritma Welch - Powell merupakan salah satu
algoritma yang dapat digunakan dalam metode pewarnaan graf.
Algoritma Welch-Powell dapat digunakan untuk mewarnai
sebuah graf G secara efisien. Algoritma ini tidak selalu
memberikan jumlah warna minimum yang diperlukan untuk
mewarnai G, namun algoritma ini cukup praktis untuk digunakan
dalam pewarnaan simpul sebuah graf. Algoritma Welch-Powell
hanya cocok digunakan untuk graf dengan orde yang kecil. Oleh
karena itu algoritma Welch-Powell hanya dapat menentukan batas
atas warna. Langkah-langkahnya adalah sebagai berikut:
1. Urutkan semua simpul berdasarkan derajatnya, dari derajat
besar ke derajat kecil.
2. Ambil warna pertama (misalnya merah), warnai simpul
pertama yang sudah diurutkan berdasarkan derajatnya tadi.
Kemudian warnai simpul berikutnya yang tidak berdampingan
dengan simpul pertama tadi dengan warna yang masih sama
(merah).
3. Kemudian dilanjutkan dengan warna kedua, dan seterusnya,
sampai semua simpul telah diberi warna.

BAB III
PEMBAHASAN
3.1. Contoh Kasus / Hitungan Manual
Misal pada suatu tempat terdapat desa A,B,C,D,F dan G
di mana ke-6 desa tersebut supaya menarik akan diadakan sebuah
hiburan. Desa A terhubung dengan desa B,C,D,E dan F. karena A
merupakan desa yang mempunyai hubungan dengan desa lain
yang lebih banyak maka A ditentukan pilihan hiburannya terlebih
dahulu yaitu Band. Dan pada desa yang tidak bisa menjangkau
desa A secara langsung diberi hiburan yang sama pula.
Kemudian dari sisa desa yang ada yaitu desa B,C,D,E dan
F dicari desa yang mempunyai daerah jangkauan yang lebih
banyak dan lebih mudah dijangkau oleh desa lain yaitu desa E
dan diberi hiburan Campur Sari, kemudian dicari desa yang tidak
bisa menjangkau desa E secara langsung yaitu desa B dan C
sehingga diberi hiburan yang sama pula. Dan desa yang masih
tersisa yaitu desa D dan F dan kedua desa tersebut tidak bisa
menjangkau secara langsung satu sama lain maka sama yaitu
diadakan hiburan wayang kulit.
Dari beberapa uraian singkat di atas bisa digambarkan
denah tempatnya yaitu sbb.:

E
G

F
8

Dan apabila dibuat tabel maka:


Desa
A
B
C
D
E
F
G

Banyak jalan
5
2
3
3
4
3
2

Hiburan
Band
Campur sari
Wayang kulit
Campur sari
Wayang kulit
Band

Pada contoh kasus di atas apabila dijelaskan pada


program yaitu:
Desa dianalogikan sebagai lingkaran
Jalan dianalogikan sebagai garis
Hiburan dianalogikan sebagai warna
Banyak jalan dianalogikan sebagai degree
Dimana pada suatu lingkaran dipilih yang memiliki
degree yang paling banyak kemudian diberi warna dan dicari pula
lingkaran mana yang tidak terhubung langsung, kemudian diberi
warna yang sama, kemudian dilakukan langkah yang sama pula
terhadap lingkaran yang lain dengan warna yang berbeda.

3.2. Flowchart
Start
W: Array [0..4] of Tcolor
i,j,k,z,f,d,p,wrn : integer
dg,dk,ik,ft,wr:array[1..20]of integer
b,c,A:array[1..20,1..20]of integer

W[1]:=Red
W[2]:=Blue
W[3]:=Green
W[4]:=Yellow
W[5]:=Fuchsia
Jvertex=jumlah vertex t
For i:= to Jvertex-1
do
For j:=1 to Jvertex -1 do
A[i,j]:=0

next
next

10

Cgaris=lingkaran vertex

Cgaris:record

x,y:integer

For i:=1 to Jgaris-1 do

A[(garis [i].x,Cgaris[i].y]:=1

A[(garis [i].y,Cgaris[i].x]:=1

next

k:=1

11

For i:=1 to Jvertex-1


do
dg[k]:=0

For j:=1 co to Jvertex1 do


A[i,j]=0

A[i,j]=
1

dg[k]:=dg[k]+1

lk[k]:=dg[k]

next
k=k+1

next
12

k:=k-1

For i:=1 to k do

For j:=1 to 2 do

B[i,j]=i

J:=1

B[i,j]:=lk[i]

next

next

13

For i:=1 to (k-1) do

For j:=(i+1) to k do

dg[i]<d
g[j]

dk[i]:=dg[j]

dg[j]:=dg[i]

dg[i]:=dk[i]

next

next

14

For i:=1 to k do

z:=1

For j:=1 to k do

C[i,1]=B[j,i]

dg[i]=b[
j,i]

C[i,2]:=B[j,2]
Z:=z+1

B[j,1]:=0
z=z+1

next
next
15

Fz[1]:=0
P:=1
For z:=1 to k do
F:=1
For i:= 1 to k do

C[z,2]=
i
For j:=1 to k do

A[j,1]=
1
tidak

Ya

Cetak lingkaran
vertek [f] dengan
warna w[z mod 5]

16

Cetak f,menggunakan
warna,[z mod 5]

For d:=1 to k do
A[j,d]:=1
Next
F:= F+1

Next

Next

Next

End

17

Pseudocode
1.
2.
3.
4.
5.
6.
7.
8.
9.

10.
11.

12.

13.

Input vertex
W[1]clRed
W[2] clBlue
W[3] clGreen
W[4] clYellow
W[0] clFuchsia
for i1 to jVertex-1 do
a. for j1 to jVertex-1 do
1. A[i,j] 0
for i1 to jGaris-1 do
a. A[CGaris[i].x,CGaris[i].y] 1
b. A[CGaris[i].y,CGaris[i].x] 1
for i1 to jVertex-1 do
a. dg[k] 0
b. for j1 to jVertex-1 do
1. if A[i,j] 1 then
a. dg[k] dg[k]+1
b. lk[k] dg[k]
2. else
a. A[i,j] 0
b. kk+1
kk-1;
For i1 to k do
a. For j1 to 2 do
1. if j1 then
a. b[i,j] lk[i]
2. else
a. b[i,j] i
For i 1 to (k-1) do
a. For j (i+1) to k do
1. if dg[i]<dg[j] then
a. dk[i] dg[j]
b. dg[j] dg[i]
c. dg[i] dk[i]
For i 1 to k do

18

14.
15.
16.
17.

a. ZI
b. for j1 to k do
1. if (dg[i])=(b[j,1]) then
a. if z>I then
1. Zz+1
2. else
a. C[i,1] B[J,1]
b. C[i,2] B[J,2]
c. B[j,1] 0
d. ZZ+1
fz[1] 0
p1
wrn0
for z1 to k do
a. f1
b. for i1 to k do
1. if C[z,2]= i then
a. for j1 to k do
1. if A[j,i]=1 then
a. ff+1
2. else
a. Lingkaran[f]W[z mod 5])
b. Cetak lingkaran
c. for d1 to k do
1. A[j,d] 1
d. ff+1

3.3. Desain Interface

19

3.4. Listing Program


unit Unit1;
interface
uses
Windows,
Messages,
SysUtils,
Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ExtCtrls;

Variants,

type
TGaris = record
x,y,data1 : integer;
end;
TVertext = record
x,y,NoVertex : integer;

20

end;
TForm1 = class(TForm)
Panel3: TPanel;
Panel1: TPanel;
Image1: TImage;
Panel2: TPanel;
Button1: TButton;
Rb1: TRadioButton;
Rb2: TRadioButton;
Panel4: TPanel;
Panel7: TPanel;
Label3: TLabel;
Label4: TLabel;
Grid: TStringGrid;
Button3: TButton;
StringGrid1: TStringGrid;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var
Action: TCloseAction);
procedure Image1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
Bdg : TBitmap;
jVertex, L1, L2, jGaris : integer;
PVertex : Array[1..20] of TRect;
PGaris, CGaris : Array[1..20] of TGaris;
PVertexH: Array[1..20] of TVertext;
W : array[1..20] of integer;
JmlData : Integer;

Procedure

lingkaran(bidang:TBitmap;x,y:integer;
hrf:string; warna:TColor);
Procedure
BuatGaris(bidang:TBitmap;x1,y1,x2,y2:integer;
warna:TColor);

21

{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A:Array[1..20,1..20] of integer;
implementation
{$R *.dfm}
Procedure
TForm1.lingkaran(bidang:TBitmap;x,y:integer;
hrf:string; warna:TColor);
var
lb, tg : integer;
begin
//
Bidang.Canvas.Brush.Style := bsclear;
Bidang.Canvas.Pen.Color := warna;
Bidang.Canvas.Font.Color := warna;
lb := Bidang.Canvas.TextWidth(hrf);
tg := Bidang.Canvas.TextHeight(hrf);
Bidang.Canvas.Ellipse(x-10,y-10,x+10,y+10);
Bidang.Canvas.TextOut(x-(lb div 2),y-(tg
div 2),hrf);
end;
Procedure
TForm1.BuatGaris(bidang:TBitmap;x1,y1,x2,y2:inte
ger; warna:TColor);
var j:TPenMode;
begin
j := Bidang.Canvas.Pen.Mode;
Bidang.Canvas.Pen.Mode := pmXor;
Bidang.Canvas.Pen.Color := Warna;
Bidang.Canvas.MoveTo(x1,y1);
Bidang.Canvas.LineTo(x2,y2);
Bidang.Canvas.Pen.Mode := j;
end;

22

procedure TForm1.FormCreate(Sender: TObject);


begin
Bdg := TBitmap.Create;
Bdg.Width := Image1.Width;
Bdg.Height := Image1.Height;
Bdg.canvas.Brush.COlor := clBlack;
Bdg.Canvas.FloodFill(10,10,clBlack,fsborder);
Image1.Canvas.Draw(0,0,Bdg);
jVertex := 1;
jGaris := 1;
JmlData := 1;
Grid.Cells[0,0] := 'Vertex1';
Grid.Cells[1,0] := 'Vertex2';
W[1] := 0;
ListBox1.Visible:=False;
end;
procedure TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
begin
Bdg.free;
end;
procedure
TForm1.Image1MouseDown(Sender:
TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i, j, k,l : integer;
rgn : HRGN;
begin
if Rb1.Checked then
begin
PVertexH[jVertex].x := X;
PVertexH[JVertex].y := Y;
PVertexH[JVertex].NoVertex := JVertex;
Lingkaran(Bdg,x,y,IntToStr(jVertex),clWhite);
PVertex[jVertex].TopLeft := Point(x-10,y10);
PVertex[jVertex].BottomRight:=
Point(x+10,y+10);

23

Image1.Canvas.Draw(0,0,Bdg);
inc(jVertex);
end
else
//Mendeteksi
Posisi
Kursor
ditekan
For i := 1 to jVertex do
begin

pada

saat

rgn:=
CreateEllipticRgn(PVertex[i].Left,PVertex[i].Top
,PVertex[i].Right,PVertex[i].Bottom);
If (PtInRegion(rgn,x,y)) then
begin
if L1<>0 then
begin
L2 := i;
If L2=L1 then exit;
PGaris[jGaris].x := L1;
PGaris[jGaris].y := L2;
//Gambar Garis
if L1<L2 then
BuatGaris(Bdg,PVertex[L1].Left+10,PVertex[L1].To
p+10,
PVertex[L2].Left+10,PVertex[L2].Top+10,clLime)
else
BuatGaris(Bdg,PVertex[L1].Left+10,PVertex[L1].To
p+10,
PVertex[L2].Left+10,PVertex[L2].Top+10,clYellow)
;
//Gambar Ulang Lingkaran
Lingkaran(Bdg,PVertex[L1].left+10,PVer
tex[L1].Top+10,IntToStr(L1),clWhite);
Lingkaran(Bdg,PVertex[L2].left+10,PVer
tex[L2].Top+10,IntToStr(L2),clWhite);
Image1.Canvas.Draw(0,0,Bdg);

24

begin
//Mengurutkan data
k := 1;
For j := 1 to jVertex-1 do
For l := 1 to jGaris do
if PGaris[l].y=j then
begin
CGaris[k].x := PGaris[l].x;
CGaris[k].y := PGaris[l].y;
inc(k);
end;
PGaris := CGaris;
k := 1;
For j := 1 to jVertex-1 do
For l := 1 to jGaris do
if PGaris[l].x=j then
begin
CGaris[k].x := PGaris[l].x;
CGaris[k].y := PGaris[l].y;
inc(k);
end;
PGaris := CGaris;
//Tampilkan data di StringGrid
For j := 1 to jGaris do
begin
Grid.Cells[0,j]
IntToStr(PGaris[j].x);
Grid.Cells[1,j]
IntToStr(PGaris[j].y);

:=
:=

end;
end;
L1 := 0;
inc(jGaris);
end
else
begin
L1 := i;

25

Lingkaran(Bdg,PVertex[i].left+10,PVe
rtex[i].Top+10,IntToStr(i),clYellow);
Image1.Canvas.Draw(0,0,Bdg);
end;
break;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Kotak : TRect;
i : integer;
begin
Bdg.canvas.Brush.COlor := clBlack;
Kotak.TopLeft := Point(0,0);
Kotak.BottomRight
:=
Point(Image1.Width,Image1.Height);
Bdg.Canvas.FillRect(Kotak);
Image1.Canvas.Draw(0,0,Bdg);
for i := 1 to jGaris-1 do Grid.Rows[i].Clear;
jVertex := 1;
jGaris := 1;
StringGrid1.Visible:=false;
ListBox1.Visible:=False;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j,k,z,f,d,p,wrn:integer;
dg:array[1..20]of integer;
dk:array[1..20]of integer;
lk,fz,wr:array[1..20]of integer;
b,c:array[1..20,1..20]of integer;
W:array[0..4]of TColor;
begin
W[1]:=clRed;
W[2]:=clBlue;
W[3]:=clGreen;
W[4]:=clYellow;
W[0]:=clFuchsia;
StringGrid1.Visible:=True;

26

ListBox1.Visible:=True;
StringGrid1.RowCount:=jVertex ;
StringGrid1.Cells[0,0]:='Degre';
StringGrid1.Cells[1,0]:='Vertex';
ListBox1.Clear;
ListBox1.Items.Add('Identifikasi
Vertext');
ListBox1.Items.Add('');

warna

pada

for i:=1 to jVertex-1 do


for j:=1 to jVertex-1 do
Begin
A[i,j]:=0;
End;
for i:=1 to jGaris-1 do
Begin
A[CGaris[i].x,CGaris[i].y]:=1;
A[CGaris[i].y,CGaris[i].x]:=1;
End;
//mencari degre gto..
k:=1;
for i:=1 to jVertex-1 do
begin
dg[k]:=0;
for j:=1 to jVertex-1 do
begin
if A[i,j]= 1 then
begin
dg[k]:=dg[k]+1;
lk[k]:=dg[k];
end
else
begin
A[i,j]:=0;
end;
end;
k:=k+1;
end;

27

k:=k-1;
For i := 1 to k do
For j :=1 to 2 do
begin
if j=1 then
b[i,j]:=lk[i]
else
b[i,j]:=i;
end;
//mengurutkan degre
For i := 1 to (k-1) do
For j :=(i+1) to k do
if dg[i]<dg[j] then
begin
dk[i]:=dg[j];
dg[j]:=dg[i];
dg[i]:=dk[i];
end;
// penguutan antara degre dengan vertex
For i := 1 to k do
begin
Z:=I;
for j:=1 to k do
if (dg[i])=(b[j,1]) then
if z>I then
Z:=z+1
else
begin
C[i,1]:=B[J,1];
C[i,2]:=B[J,2];
B[j,1]:=0;
Z:=Z+1;
end;
end;
for i:=1 to k do
for j:=0 to 1 do
StringGrid1.Cells[j,i]:=IntToStr(C[i,j+1]);

28

fz[1]:=0;
p:=1;
wrn:=0;
for z:=1 to k do
begin
f:=1;
for i:=1 to k do
if C[z,2]= i then
for j:=1 to k do
if A[j,i]=1 then
f:=f+1
else
begin
Lingkaran(Bdg,PVertex[f].left+10,PVerte
x[f].Top+10,IntToStr(f),W[z mod 5]);
Image1.Canvas.Draw(0,0,Bdg);
ListBox1.Items.Add(IntToStr(f)+'
menggunakan warna '+IntToStr(z mod 5));
for d:=1 to k do
A[j,d]:=1;
f:=f+1;
end;
end;
end;
end.

3.5. Penjelasan Program


Misalkan kita ingin mewarnai simpul graf di bawah ini :

29

Gambar 1: Graf yang akan diwarnai simpulnya dengan


algoritma Welch-Powell
Langkah-langkah yang akan dilakukan adalah:
1. Urutkan simpul berdasarkan derajatnya dari besar ke kecil :
Simpul berderajat terbesar adalah E, yaitu 5 (mempunyai 5
ruas) kemudian simpul C berderajat 4, B,D,F masingmasing berderajat 3 dan A,H,G masing-masing berderajat 2.
Jadi Urutannya adalah : E,C,B,D,F,A,H,G
2. Ambil warna pertama, misalnya Merah. Beri warna Merah
simpul
E
(karena
E
adalah
simpul
urutan
pertama).Kemudian cari simpul yang tidak berdampingan
dengan simpul E, beri warna yang sama (merah).
3. Diberikan warna yang sama pada simpul A dan G dengan
warna simpul E yaitu merah karena simpul A dan G tidak
berdampingan dengan simpul E. sehingga diperolah urutan
simpul yang belum diberi warna adalah C, B, D, F, dan H.
4. Ambil warna kedua, misalnya Biru, warnai simpul C
( karena simpul C sekarang ada diurutan pertama).
Kemudian cari simpul yang tidak berdampingan dengan
simpul C, beri warna yang sama (Biru).
5. Diberikan warna yang sama pada simpul D dan H dengan
warna simpul C yaitu biru karena simpul D dan H tidak
berdampingan dengan simpul C. Sehingga diperoleh urutan
simpul yang belum diberi warna adalah B dan F.
6. Mengambil warna ketiga, misalnya warna hijau. Lalu warna
tersebut ditambahkan pada simpul B dan F (simpul B dan F
tidak bertetangga). Dan hasil pewarnaan graf tersebut
adalah:

30

Gambar 2: Graf yang telah diwarnai simpulnya dengan


algoritma Welch-Powell

BAB IV
KESIMPULAN
Dari uraian diatas, maka dapat disimpulkan bahwa :

31

1. Pewarnaan Graph adalah pemetaan warna-warna ke


verteks-verteks pada G sedemikian hingga tidak ada dua
verteks yang berbeda dan adjacent memiliki warna yang
sama.
2. Bilangan Kromatik dari graph adalah jumlah warna
minimum yang diperlukan untuk mewarnai graph.
3. Algoritma Welch-Powell dapat digunakan untuk
melakukan pewarnaan pada graph yang sederhana,
artinya graph yang memiliki jumlah verteks dan edge
yang kecil.

Daftar Pustaka
[1] Munir,Rinaldi. 2004. Diktat Kuliah Matematik
Diskrit. Departemen Teknik Informatika ITB

32

[2] Munir,Rinaldi. 2005.Diktat Kuliah Strategi


Algoritmik. Departemen Teknik Informatika ITB
[3] Bondy, J. A. dan Murty, U. S. R, Graph Theory
With Aplications, The MacmillanPress Ltd, 1976.
[4] Chartrand, G. dan Lesniak, L., Graphs and
Digraphs, Edisi Kedua, Wasworthand Brooks/Cole
Advanced Books and Software, California, 1986.
[5] Deo, N. Graph Theory With Applications To
engineering and Computer science,Prentice Hall of
India Private Limited, New Delhi-110001, 1980.
[6] Wikipedia, Graph Coloring,
http://en.wikipedia.org/wiki/Graph_coloring
Tanggal akses: 5 Mei 2009 pukul 13.10 WIB.

33

Anda mungkin juga menyukai