Anda di halaman 1dari 60

Logika &

Algoritma

Riski Annisa, M.Kom


KATA PENGANTAR

Puji syukur penulis panjatkan kehadirat Allah SWT, yang telah memberikan rahmat
dan hidayahnya sehingga modul praktek matakuliah Logika dan Algoritma ini dapat
terselesaikan dengan baik. Selanjutnya modul ini disusun untuk memberikan gambaran bagi
mahasiswa yang mempelajari Logika dan Algoritma karena modul ini disertai contoh kasus,
sehingga lebih memudahkan dalam memahami materi melalui soal studi kasus.

Tak lupa penulis mengucapkan banyak terima kasih kepada semua pihak yang telah
membantu dengan tenaga dan pikirannya, terima kasih juga kepada rekan–rekan instruktur,
dosen dan semuanya yang tidak bisa disebutkan satu persatu, yang selalu mendukung penulis
sehingga modul ini sehingga dapat selesai sesuai yang kita inginkan semua.

Penulis menyadari masih banyak kekurangan dalam penyusunan modul ini. Untuk itu
saran dan kritik yang membangun sangat penulis harapkan guna perbaikan dan
pengembangan modul ini ke depan.

Akhir kata penulis berharap semoga modul praktek matakuliah Logika dan Algoritma
ini dapat dipergunakan sebaik-baiknya dan dapat dijadikan referensi untuk mahasiswa umum
yang ingin mempelajari materi tersebut.

LOGIKA DAN ALGORITMA

ii | P a g e
DAFTAR ISI

KATA PENGANTAR ............................................................................................................ ii


DAFTAR ISI .......................................................................................................................... 1
BAB 1 Dasar Logika dan Algoritma ...................................................................................... 1
BAB 2 Konsep Algoritma dan Tipe Data ............................................................................... 7
BAB 3 Flowchart .................................................................................................................. 12
BAB 4 Struktur Branching ................................................................................................... 17
BAB 5 Looping .................................................................................................................... 21
BAB 6 Rekursif .................................................................................................................... 25
BAB 7 Metode Divide & Conquer ....................................................................................... 32
BAB 8 Metode Sorting ......................................................................................................... 35
BAB 9 Tehnik Searching ...................................................................................................... 41
BAB 10 Metode Greedy ....................................................................................................... 48
BAB 11 Pewarnaan .............................................................................................................. 53
DAFTAR PUSTAKA ........................................................................................................... 57

1|Page
BAB 1

Dasar Logika dan Algoritma

Deskripsi
Membahas tentang logika dan algoritma, program dan bahasa pemrograman, tahapan analisa
algoritma dan sifat-sifat algoritma

Tujuan Pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan algoritma pada kegiatan sehari-hari
2. Menjelaskan program dan bahasa pemrograman
3. Menjelaskan tahapan analisa algoritma
4. Menjelaskan sifat-sifat algoritma

1.1. Pengertian Logika


Pengertian algoritma sangat lekat dengan kata logika, yaitu kemampuan seorang manusia
untuk berfikir dengan akal tentang suatu permasalahan menghasilkan sebuah kebenaran,
dibuktikan dan dapat diterima akal, logika seringkali dihubungkan dengan kecerdasan,
seseorang yang mampu berlogika dengan baik sering orang menyebutnya sebagai pribadi
yang cerdas. Dalam menyelesaikan suatu masalahpun logika mutlak diperlukan.

Logika identik dengan masuk akal dan penalaran. Penalaran adalah salah satu bentuk
pemikiran. Pemikiran adalah pengetahuan tak langsung yang didasarkan pada pernyataan
langsung pemikiran mungkin benar dan mungkin juga tak benar.

Logika berasal dari dari bahasa Yunani yaitu LOGOS yang berarti ilmu. Logika dapat
diartikan ilmu yang mengajarkan cara berpikir untuk melakukan kegiatan dengan tujuan
tertentu. Algoritma berasal dari nama seorang Ilmuwan Arab yang bernama Abu
JafarMuhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar Wal Muqabala.
Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian lambat laun
menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma.Algoritma dapat

1|Page
diartikan urutan penyelesaian masalah yang disusun secara sistematis menggunakan bahasa
yang logis untuk memecahkan suatu permasalahan.

1.2. Pengertian Algoritma

Menurut Rinaldi Munir, algoritma adalah urutan langkah-langkah logis penyelesaian


masalah yang disusun secara sistematis. Menurut Kamus Besar Bahasa Indonesia, definisi
algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalh. Langkah-
langkah tersebut harus logis berarti nilai kebenarannya harus dapat ditentukan benar atau
salah.

Tujuan dari belajar logika dan algoritma adalah agar dapat membiasakan diri melakukan
suatu perencanaan apabila menyelesaikan suatu masalah.Karena suatu permasalahan yang
diselesaikan dengan suatu perencanaan yang matang maka akan mendapatkan solusi yang
lebih optimal dibandingkan menyelesaikan masalah tanpa menggunakan suatu perencanaan.

Menurut Donald E. Knuth, algoritma memiliki 5 ciri-ciri penting yaitu:

1. Finiteness (keterbatasan), algoritma harus berakhir setelah mengerjakan sejumlah


langkah proses
2. Definiteness (kepastian), setiap langkah harus didefinisikan secara tepat dan tidak
berarti ganda.
3. Input (masukan), algoritma memiliki nol atau lebih data masukan (input).
4. Output (keluaran), algoritma memiliki nol atau lebih hasil keluaran (output).
5. Effectiveness(efektifitas), algoritma harus efektif, langkah-langkah algoritma
dikerjakan dalam waktu yang wajar.

Algoritma mempunyai sifat sebagai berikut:

1. Tidak bergantung dari suatu bahasa tertentu


2. Tidak menggunakan sintax atau simbol dari bahasa tertentu
3. Memiliki notasi penulisan yng digunakan untuk seluruh bahasa
4. Dapat merepresentasikan langkah kejadian yang logis dan bisa diterapkan pada
kejadian sehari-hari

2|Page
Selain 5 ciri penting diatas, Ciri-ciri algoritma yang baik:

1. Tepat sasaran
2. Flexible dan portable
3. Bersih dari kesalahan sistem ataupun logic
4. Efektif
5. Efisien dan cepat
6. Dapat didokumentasi
7. Tidak ambigu
8. Harus berhenti setelah mengerjakan sejumlah langkah terbatas.

Langkah algoritma terdiri dari 3 struktur dasar:

1. Runtunan (Sequence) : merupakan deretan intruksiyng dikerjakan secara berurutan.


Apabila urutan pemrosesan berubah mengakibatkan hasil juga akan berubah.
2. Pemilihan (Selection) : merupakan instruksi yang dapat dikerjakan pada suatu
persyaratan tertentu. Apabila persyaratan benar maka intruksi dapat dilaksanakan,
dan apabila persyaratan salah maka intruksi tidak dikerjakan. Nama lain dari
persyaratan dikenal dengan istilah kondisi.
3. Pengulangan (Repetition) : merupakan suatu proses yang dilakukan untuk
mengerjakan intruksi yang sama secara berulang. Akhir dari perulangan ditentukan
sesuai jumlah yang ditentukan ataupun sesuai dengan kondisi yang ditentukan
perulangannya.

Maka dri itu algoritma adalah urutan langkah-langkah terbatas yang disusun secara sistematis
dan menggunakan bahasa yang logis dengan tujuan menyelesaikan suatu masalah tertentu.
Sementara program adalah kumpulan instruksi berupa pernyataan yang ditulis dengan
menggunakan bahasa pemrograman yang melibatkan pemilihan struktur data. Beberapa
pakar komputer menyatakan program dengan formula Program = Algoritma + Bahasa
Pemrograman.

1.3. Bahasa Pemrograman dan Program

3|Page
Bahasa adalah suatu sistem untuk berkomunikasi. Bahasa tertulis menggunakan huruf untuk
membentuk kata. Dlaam ilmu komputer, bahasa manusia disebut bahasa alamiah (natural
language), dimana komputer tidak bisa memahaminya, sehingga diperlukan suatu bahasa
komputer.

Program adalah sekumpulan intruksi yang merupakan penyelesaian masalah. Program yang
dimasukkan kedalam komputer kemudian komputer akan mengerjakan intruksi-intruksi di
dalam program tersebut lalu memberikan hasil atau keluaran yang diinginkan. Agar program
dapat dikerjakan komputer, program harus ditulis dalam suatu bahasa yang dimengerti oleh
komputer. Dikarenakan komputer adalah mesin maka program harus ditulis dalam bahasa
yang khusus dibuat untuk berkomunikasi dengan komputer. Bahasa komputer yang
digunakan dalam menulis program dinamakan bahasa pemrograman.

Bahasa pemrograman dan algoritma berhubungan sangat erat pada sebuah program.
Algoritma yang baik tanpa pemilihan struktur datayang tepat akan membuat program
menjadi kurang baik, demikian juga sebaliknya. Jika dihubungkan dengan program, maka
pembuatan algoritma harus memperhatikan kaidah:

1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasapemrograman


manapun, artinya penulisan algoritma independen daribahasa pemrograman dan
komputer yang memprosesnya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan samakarena
algoritmanya sama.

Algoritma dibuat untuk membantu kita dalam mengkonversikan suatu permasalahan ke


dalam bahasa pemrograman. Algoritma merupakan hasil pemikiran konseptual, supaya
dapatdilaksanakan oleh komputer, algoritma harus diterjemahkan ke dalamnotasi bahasa
pemrograman. Ada beberapa hal yang harus diperhatikan pada penerjemahan tersebut, yaitu:

1. Pendeklarasian variabel : Variabel dibutuhkan oleh program dalam rangka


menyimpan data masukan, memproses dan mendapatkan hasil komputasi.

4|Page
2. Pemilihan tipe data : Apabila dalam proses pembuatan program ternyata
membutuhkanpendeklarasian variabel maka diwajibkam memilih tipe data, karena
setiap variabel pasti membutuhkan tipe data ketika dideklarasikan.
3. Pemakaian atau pemilihan instruksi : Terdapat beberapa macam instruksi dalam
bahasa pemrograman (sequence, selection dan repetition), urutan langkah dalam
algoritma dapat diterjemahkan menjadi salah satu atau beberapa instruksi tersebut.
4. Aturan sintaksis : Pada saat menuliskan program kita terikat dengan aturan sintaksis
dalam bahasa pemrograman yang akan digunakan. Setiap bahasa pemrograman
memiliki aturan penulisan sintaks-nya sendiri.
5. Tampilan hasil : Pada saat membuat algoritma kita tidak memikirkan tampilan hasil
yang akan disajikan. Hal teknis semacam ini diperhatikan ketika
mengkonversikannya menjadi program.
6. Cara pengoperasian compiler atau interpreter : Bahasa pemrograman yang digunakan
termasuk dalam kelompok compiler atau interpreter. Masing-masing memiliki cara
pengoperasian yang bisa jadi berbeda.

Bahasa pemrograman adalah kumpulan perintah bermakna, terstruktur (sintax) yang dapat
dimengerti komputer yang digunakan dalam penyelesaian masalah. Dalam pengertian lain
pemrograman yang mencakup kegiatan :

a. Pembuatan program, termasuk analisis kebutuhan


b. Keseluruhn tahapan dalam perencanan, perancangan, dan implementasi
c. Pengkodean atau penulisan program (coding)
d. Pengujian berdasarkan rancangan tertentu

Komputer adalah mesin pemroses. Agar dapat dikerjakan oleh komputer, algoritma harus
ditulis dalam notasi bahasa pemrograman berupa instruksi yang dapat dipahami oleh
komputer sehingga dinamakan program. Jadi program adalah perwujudan atau implementasi
teknis algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga dapat
dilaksanakan oleh komputer. Program ditulis dengan menggunakan salah satu bahasa
pemrograman. Kegiatanmembuat program disebut pemrograman (programming). Orang
yangmenulis program disebut pemrogram (programmer). Tiap-tiap langkah didalam program

5|Page
disebut pernyataan atau instruksi. Jadi, program tersusunatas sederetan instruksi. Bila suatu
instruksi dilaksanakan, maka operasi-operasiyang bersesuaian dengan instruksi tersebut
dikerjakan komputer.

Seperti yang telah diketahui bahwa komputer memerlukan instruksi berupa langkah-langkah
perintah sehingga sebuah prosedur dapat dijalankan. Prosedur yang berisi langkah-langkah
penyelesaian masalah inilah yang disebut dengan algoritma. Jadi, sebelum memasuki tahap
pemrograman komputer dengan menggunakan bahasa pemrograman,sebaiknya mempelajari
algoritma yang merupakan pengantar kepada pemrograman komputer tersebut.

Sampai saat ini terdapat puluhanbahasa pemrogram, antara lain bahasa Assembly, Fortran,
Cobol, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, CSMP, Simscript, GPSS,
Dinamo, dan lain-lain. Berdasarkanterapannya, bahasa pemrograman dapat digolongkan atas
dua kelompokbesar:

1. Bahasa pemrograman bertujuan khusus. Yang termasuk kelompokini adalah Cobol


untuk terapan bisnis dan administrasi. Fortran untuk terapan komputasi ilmiah,
bahasa Assembly untuk terapan pemrogramanmesin, Prolog untuk terapan
kecerdasan buatan, bahasa-bahasasimulasi, dan sebagainya.
2. Bahasa pemrograman bertujuan umum, yang dapat digunakan untukberbagai
aplikasi. Yang termasuk kelompok ini adalah bahasa Pascal, Basic, Java, dan C. Tentu
saja pembagian ini tidak kaku. Bahasabertujuan khusus tidak berarti tidak bisa
digunakan untukaplikasi lain. Cobol misalnya, dapat juga digunakan untuk
terapanilmiah, hanya saja kemampuannya terbatas. Yang jelas, bahasapemrograman
yang berbeda dikembangkan untukbermacam-macam terapan yang berbeda pula.

6|Page
BAB 2

Konsep Algoritma dan Tipe Data

Deskripsi
Membahas tentang konsep algoritma yang terdiri dari algoritma peubah, algorima pertukaran dan
analisa algoritma

Tujuan pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan algoitma peubah
2. Menjelaskan algoritma pertukaran
3. Menjelaskan analisa algoritma

Algoritma pertukaran dua buah nilai sama seperti algoritma mempertukarkan isi dari dua buah ember.
Algoritma pertukaran membutuhkan sebuah peubah bantu sebagai tempat penampungan sementara.
Algoritma adalah urutan penyelesaian masalah yang di deskripsikan secara logis untuk memecahkan
suatu masalah. Dalam ilmu komputer Algoritma dikenal dengan langkah-langkah komputasi yang
terdiri dari masukan dan keluaran. Karena itu Algoritma biasanya dijadikan dasar atau pengantar
bahasa pemrograman (misalnya Pascal) dalam study yang berkecimpung atau berhubungan dengan
ilmu komputer. Misalnya Teknik Informatika.
Seperti yang telah diketahui bahwa komputer memerlukan instruksi yang berupa langkah-langkah
pengurutan sehingga sebuah prosedur dapat dijalankan. Nah, prosedur yang berisi langkah-langkah
penyelesaian masalah inilah yang disebut dengan Algoritma. Jadi, Sebelum masuk kepada tahap
pemrograman komputer dengan bahasa pascal/lainnya ada baiknya mempelajari Algoritma yang
merupakan pengantar kepada pemrograman komputer tersebut. Algoritma terdiri dari beberapa notasi
yaitu Deskriptif, Bagan-alir, dan Pseudo-Code. Namun yang paling mirip dengan bahasa
pemrograman pascal adalah notasi Pseudo-Code.

ALGORITMA PE-UBAH
Adalah Variabel yang nilainya BUKAN konstanta (selalu berubah – sesuai
dengan kondisi Variabel terkini)
Sintaks : P = Q
Algoritma : P  Q

7|Page
Arti : Bahwa Nilai P diberi harga Nilai Q
Nilai P akan SAMA DENGAN nilai Q, & Nilai Q TETAP

ALGORITMA PERTUKARAN
Berfungsi mempertukarkan masing-masing isi Variabel sedemikian sehingga
nilai dari tiap Variabel akan berubah/bertukar.

Contoh Soal:
1. Diketahui P=0, Q=5 dan R=10. Diberikan Algoritma P=Q,Q=R, mk Nilai P,Q,R
sekarang?
Jawaban :
Diketahui P = 0, Q = 5, R = 10
P = Q → Pada saat ini nilai dari Variabel P akan diberi nilai dari Variabel Q (P = 5)
Q = R → Pada saat ini nilai dari Variabel Q akan diberi nilai dari Variabel R (Q =
10)
Maka nilai P, Q dan R sekarang adalah P = 5, Q = 10 dan R = 10
2. Diketahui Algoritma P=10, P=P+1 dan Q = P Berapakan Nilai P dan Q ?
……………
Jawaban
Algoritma:
P = 10 → Pada saat ini nilai dari Variabel P akan diberi nilai 10
P = P + 1 → Pada saat ini nilai dari Variabel P yang baru adalah nilai dari variabel P
yang lama ditambah 1 (10 + 1 = 11)
Q = P → Pada saat ini nilai dari variabel Q diberi nilai dari variabel P yang baru (Q
=11)
3. Diketahui 3 variabel peubah P,Q dan R. Agar isi Q ditaruh di P, isi R ditaruh di Q
dan isi P ditaruh di R, maka Algoritma yang dapat ditulis adalah : ……….
Jawaban
Agar isi Q ditaruh di P, algoritma yang dapat ditulis adalah (P  Q atau P=Q) Agar
isi R ditaruh di Q, algoritma yang dapat ditulis adalah (Q  R atau Q=R)
Agar isi P ditaruh di R, algoritma yang dapat ditulis adalah (R  P atau R=P)
4. Diketahui 2 peubah K = 10 dan L = 20. Buat Algoritma untuk mempertukarkan isi
K dan L. : ……………
Jawaban
Untuk menyelesaikan algoritma pertukaran, dibutuhkan satu buah peubah (variabel)
tambahan untuk menyimpan nilai dari salah satu peubah. Algoritma pertukaran
untuk masalah diatas adalah (dimisalkan variabel tambahan adalah T).
T = K → Pada algoritma ini nilai dari variabel T (variabel tambahan) akan diisi
dengan nilai dari variabel K (T = 10)
K = L → Pada algoritma ini nilai dari Variabel K akan diisi dengan variabel L (K =
20)

8|Page
L = T –> Pada algoritma ini nilai dari Variabel L akan diisi dengan variabel T (L =
10)
Setelah algoritma ini dijalankan dapat dilihat bahwa algorita diatas telah
mempertukarkan nilai dari variabel-variabel tersebut. Sebelumnya variabel K = 10
dan L = 20, menjadi variabel K = 20 dan L = 10

Analisa algoritma lainnya.


1. Seorang Petani akan berpergian ke kota dengan membawa seekor kambing, Anjing
dan Rumput Yang ketiganya memliki berat yang tidak jauh berbeda, ditengah jalan
petani harus menyebrangi sungai dengan menggunakan perahu dan untuk
melaluinya petani tersebut tidak diperbolehkan membawa sekaligus awaannya
mengingat kapasitas kekuatan perahu tersebut, dan untuk melaluinya petani harus
membawa satu persatu bawaannya . Ditanya: berapa kali petani tersebut harus
melalui jembatan dengan memperhatikan bahwa kambing makan rumput, anjing
makan kambing ? Visualisasi

2. Bagaimana caranya untuk menyeberangkan tiga orang rahib yang sedang dikejar
oleh Tiga orang kanibal ke sisi pulau yang ada diseberangnya
Dengan catatan :
Bila misionarisnya Lebih sedikit dari dari kanibal, maka misionaris tersebut akan
dimakannya. Visualisasi

3. Ada sebuah keluarga terdiri dari 5 orang akan menyeberang melewati jembatan
pada malam hari dengan bantuan lampu yang hanya bisa bertahan 30 detik

9|Page
Dengan catatan :
Setiap orang mempunyai kecepatan yang berbedabeda ( 1,3,6,8 dan 12 detik). beda
Apabila yang melewati
jembatan ada 2 orang maka kecepatannya akan dihitung berdasarkan yang paling
lambat Visualisasi

4. Bagaimana caranya untuk memindahkan katak dari sisi kanan ke sisi kiri dan
sebaliknya. Catatan : pemindahan dilakukan hanya bisa melewati 1 katak
Visualisasi.

5. Algoritma Pertukaran Isi Bejana Diberikan dua buah bejana, A dan B; bejana A
berisi larutan berwarna merah, bejana B berisi larutan berwarna biru. Buatlah
pseudocode untuk menukarkan isi kedua bejana itu sedemikian sehingga bejana A
berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah.

10 | P a g e
11 | P a g e
BAB 3

Flowchart

Deskripsi
Membahas tentang pembuatan flowchart dari algoritma dan pembuatan program dari flowchart
yang ada

Tujuan Pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Membuat flowchart dari algoritma
2. Membuat program berdasarkan flowchart

3.1.Flowchart

Flowchart adalah cara penulisan algoritma dengan menggunakan notasi grafis.


Flowchart merupakan gambar atau bagan yang memperlihatkan urutan atau langkah-
langkah dari suatu program dan hubungan antar proses beserta pernyataannya. Gambaran
ini dinyatakandengan simbol. Dengan demikian setiap simbol menggambarkan
prosestertentu. Sedangkan antara proses digambarkan dengan garis penghubung. Dengan
menggunakan flowchart akan memudahkan kita untuk melakukanpengecekan bagian-
bagian yang terlupakan dalam analisis masalah. Disamping itu flowchart juga berguna
sebagai fasilitas untuk berkomunikasiantara pemrogram yang bekerja dalam tim suatu
proyek. Flowchart menolong analis dan programmer untuk memecahkan masalah kedalam
segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain
dalam pengoperasian.

Flowchart program menggambarkan urutan instruksi yang digambarkan dengan simbol


tertentu untuk memecahkan masalah dalam suatu program. Dalam flowchart program
mengandung keterangan yang lebih rinci tentang bagaimana setiap langkah program atau
prosedur seharusnya dilaksanakan. Flowchart ini menunjukkan setiap langkah program atau
prosedur dalam urutan yang tepat saat terjadi.Programmer menggunakan flowchart program

12 | P a g e
untuk menggambarkan urutan instruksi dari program komputer.Analis Sistem menggunakan
flowchart program untuk menggambarkan urutan tugas-tugas pekerjaan dalam suatu
prosedur atau operasi.

Dalam pembuatan flowchart program tidak ada rumus atau patokan yang bersifat mutlak.
Karena flowchart merupakan gambaran hasil pemikirandalam menganalisis suatu masalah
yang nantinya akan diubah menjadi program komputer. Sehingga flowchartyang dihasilkan
dapat bervariasi antara satu pemrogram dengan yang lainnya. Namum demikian terdapat
beberapa anjuran yang harus diperhatikan, yaitu :

1. Flowchart digambarkan di suatu halaman dimulai dari sisi atas ke bawah dan dari sisi
kiri ke kanan.
2. Aktivitas yang digambarkan harus didefinisikan dengan menggunakan bahasa dan
simbol yang tepat dan definisi ini harus dapat dimengerti oleh pembacanya.
3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas. Hanya terdapat
satu titik awal dan satu titik akhir.
4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata
kerja, misalkan MENGHITUNG NILAI RATA-TARA.
5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
6. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan
hatihati. Percabangan-percabangan yang memotong aktivitas yang sedang
digambarkan tidak perlu digambarkan pada flowchart yang sama. Simbol konektor
harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau
hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.
7. Gunakan simbol-simbol flowchart yang standar.

3.2.Simbol-simbol Flowchart

Simbol-simbol flowchart yang biasanya dipakai adalah simbol-simbol flowchart standar


yang dikeluarkan oleh ANSI dan ISO. Tabel 2.2 merupakan beberapa simbol flowchart yang
digunakan dalam menggambar suatu flowchart.

13 | P a g e
Simbol Ketererangan
Proses/prosessing, satu atau beberapa himpunan penugasan
yang akan dilaksanakan secara berurutan.
Input / Output data yg akan dibaca & dimasukan ke dalam
memori komputer dari suatu alat input
Terminal, berfungsi sebagai awal (berisi ‘Start’) sebagai akhir
(berisi ‘End’) dari suatu proses alur.
Decision (kotak keputusan) berfungsi utk memutuskan
arah/percabangan yg diambil sesuai dgn kondisi yg dipenuhi,
yaitu Benar/Salah. (dibahas dalam struktur branching).
Subroutine digunakan untuk menjalankan proses suatu bagian
(sub program) atau prosedur

Preparation digunakan untuk pemberian harga awal

On page Connector/penghubung, digunakan untuk


menghubungkan diagram alur yang terputus dimana bagian
tersebut masih berada pada halaman yang sama
Off page Connector, Untuk menghubungkan sambungan dari
bagian flowchart yang terputus dimana sambungannya berada
pada halaman lain

Flowline, menunjukkan bagian arah instruksi dijalankan

3.3. Jenis Flowchart

Flowchart sendiri terdiri dari lima jenis, masing-masing jenis memiliki karakteristik
dalam penggunaanya. Berikut adalah jenis-jenisnya:

14 | P a g e
1. Flowchart dokumen
Pertama ada flowchart dokumen (document flowchart) atau bisa juga disebut dengan
paperwork flowchart. Flowchart dokumen berfungsi untuk menelusuri alur form dari
satu bagian ke bagian yang lain, termasuk bagaimana laporan diproses, dicatat, dan
disimpan.
2. Flowchart program
Selanjutnya kita akan membahas flowchart program. Flowchart ini menggambarkan
secara rinci prosedur dari proses program. Flowchart program terdiri dari dua macam,
antara lain: flowchart logika program (program logic flowchart) dan flowchart program
komputer terinci (detailed computer program flowchart).
3. Flowchart proses
Flowchart proses adalah cara penggambaran rekayasa industrial dengan cara merinci dan
menganalisis langkah-langkah selanjutnya dalam suatu prosedur atau sistem.
4. Flowchart sistem
Yang keempat ada flowchart sistem. Flowchart sistem adalah flowchart yang
menampilkan tahapan atau proses kerja yang sedang berlangsung di dalam sistem secara
menyeluruh. Selain itu flowchart sistem juga menguraikan urutan dari setiap prosedur
yang ada di dalam sistem.
5. Flowchart skematik
Terakhir ada flowchart skematik. Flowchart ini menampilkan alur prosedur suatu sistem,
hampir sama dengan flowchart sistem. Namun, ada perbedaan dalam penggunaan
simbol-simbol dalam menggambarkan alur. Selain simbol-simbol, flowchart skematik
juga menggunakan gambar-gambar komputer serta peralatan lainnya untuk
mempermudah dalam pembacaan flowchart untuk orang awam.

15 | P a g e
16 | P a g e
BAB 4

Struktur Branching

Deskripsi
Membahas tentang konsep struktur branching bersyarat if, if else, if elif else dan nested if

Tujuan pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan struktur percabangan if
2. Menjelaskan struktur percabangan if else
3. Menjelaskan struktur percabangan if elif else
4. Menjelaskan struktur Percabangan nested if

4.1. Percabangan (Branching)


Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu
kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan
yang ada di dalam blok if akan diproses dan dikerjakan.
Pernyataan dilaksanakan jika dan hanya jika kondisi yang diinginkan terpenuhi, jika tidak
program tidak memberikan hasil apa-apa. Struktur if dibentuk dari pernyataan if dan sering
digunakan untuk menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau
bernilai benar, maka pernyataan yang ada di dalam blok if akan diproses dan dikerjakan.
Bentuk umum struktur kondisi if untuk satu kasus : Pernyataan dilaksanakan jika dan hanya
jika kondisi yang diinginkan terpenuhi, jika tidak program tidak memberikan hasil apa-apa.

4.2. Percabangan IF
Pada percabangan jenis ini, hanya ada satu kondisi yang menjadi syarat untuk melakukan
satu buah atau satu blok instruksi. Format umum dari algoritma percabangan dengan satu
kondisi adalah sebagai berikut: IF kondisi THEN instruksi ENDIF Arti dari format di atas,
jika “kondisi” bernilai benar atau tercapai, maka aksi dikerjakan. Sedangkan jika bernilai

17 | P a g e
salah, maka instruksi tidak dikerjakan dan proses langsung keluar dari percabangan dan
kembali lagi ke kondisi awal.
Struktur Percabangan if adalah struktur percabangan yang digunakan untuk satu pilihan
keputusan. Jika kondisi True/benar maka statement dikerjakan, Jika kondisi False/salah maka
statement tidak dikerjakan.

4.3. Percabangan IF..ELSE


Struktur Percabangan if ... else adalah percabangan yang akan menyeleksi kondisi jika
bernilai True/benar maka statement1 dijalankan, jika kondisi bernilai False/salah maka
statement2 dijalankan. Pada percabangan jenis ini, ada dua kondisi yang menjadi syarat untuk
dikerjakannya salah satu dari dua instruksi. Kondisi ini bisa bernilai benar atau salah.

18 | P a g e
4.4. Percabangan if ... elif ... else
Digunakan untuk menguji lebih dari 2 kondisi, bila kondisi1 benar maka statement1
dikerjakan, bila salah menuju ke kondisi2 . Bila kondisi2 benar maka statement2 dikerjakan,
jika salah maka statemen3 dikerjakan.

19 | P a g e
4.5. Percabangan nested if
Secara sederhana, IF bersarang atau nested IF adalah penggunaan struktur IF di dalam IF.
Kondisi seperti ini sering digunakan untuk kode program yang sudah cukup kompleks.

20 | P a g e
BAB 5

Looping

Deskripsi
Membahas tentang instruksi looping (perulangan) yaitu statement for, while dan
nested while

Tujuan pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan perulangan for
2. Menjelaskan perulangan while
3. Menjelaskan perulangan nested while/for

Pengulangan (loop) merupakan bentuk yang sering ditemui di dalam suatu program
aplikasi. Di dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan
menggunakan pernyataan For, While-Do, dan Repeat Until. Perulangan proses, akan
melakukan proses berulang-ulang selama kondisi masih bernilai True (atau dimana nilai
batas yang ditentukan belum tercapai, dan kondisi akan berhenti jika keadaan berubah
menjadi False (atau nilai batas telah tercapai)
Instruksi pengulangan (repetition) adalah instruksi yang dapat mengulangi
melaksanakan sederetan instruksi lain berulangkali sesuai dengan persyaratan yang
ditentukan.
Struktur instruksi perulangan pada dasarnya terdiri atas:
1. Kondisi perulangan. Suatu kondisi yang harus dipenuhi agar perulangan dapat terjadi
2. Badan (body) perulangan. Deretan instruksi yang akan diulang-ulang pelaksanaannya
3. Pencacah (counter) perulangan. Suatu variabel yang nilainya harus berubah agar
perulangan dapat terjadi dan pada akhirnya membatasi jumlah perulangan yang dapat
dilaksanakan

Dalam dunia programming, Looping adalah sebuah urutan perintah yang secara
menerus diulang hingga suatu kondisi tercapai. Kondisi yang dimaksud disini dapat dalam

21 | P a g e
bentuk yang berbeda-beda seperti; mendapatkan data dan merubah data, dan apakah sebuah
nilai sudah mencapai jumlah yang ditentukan.

Terdapat dua jenis loop yang dibedakan menurut kendali pernyataan dari sebuah program:

1. Entry controlled loop


2. Exit controlled loop
Dalam sebuah entry controlled loop, sebuah kondisi dieksekusi sebelum sebuah
badan dari loop. Hal ini juga disebut sebagai pre-checking loop. Sedangkan dalam exit
controlled loop, sebuah kondisi diperiksa setelah mengeksekusi badan dari loop – atau yang
biasanya disebut post-checking loop.

Setelah mengetahui pengertian looping, ada baiknya anda untuk mengetahui jenis-
jenis looping dan apa perbedaan dari tiap-tiap looping tersebut yang akan kita bahas pada
bagian berikut:

5.1. Perulangan Loop

Bentuk pernyataan ini for for (ekspresi1; ekspresi2; ekspresi3) pernyataan;


• ekspresi1 : initial value variabel pengendali loop.
• ekspresi2 : continue condition, kondisi yang dipakai untuk melanjutkan loop.
• ekspresi3 : pengatur kenaikan nilai variabel pengendali loop.

Ketiga ekspresi dalam for tersebut harus dipisahkan dengan tanda titik koma (;). Dalam hal
ini pernyataan bisa berupa tunggal maupun jamak. Jika berbentuk jamak, maka pernyataan
tersebut harus diletakkan di antara kurung kurawal buka ({) dan kurung kurawal tutup (}).

Berikut ini penggambaran urutan proses dalam perulangan for:

22 | P a g e
5.2. Perulangan While
while menyediakan mekanisme untuk mengulang pernyataan-pernyataan dalam body loop
selama kondisi dalam while masih bernilai TRUE. Di dalam perulangan while, sebuah
pernyataan harus mengubah nilai kondisi untuk memungkinkan perulangan selesai. Bentuk
umum dari perulangan while:

dan

5.3. Perulangan Do While


Pernyataan do while memungkinkan perulangan berlanjut selama kondisi dalam while
masih bernilai TRUE (non-zero). Bentuk umum dari perulangan do while adalah

23 | P a g e
24 | P a g e
BAB 6

Rekursif

Deskripsi
Membahas tentang struktur rekusif seperti fungsi pangkat, faktorial, fibonancy dan menara hanoi

Tujuan Pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan teknik rekursif untuk fungsi pangkat
2. Menjelaskan teknik rekursif untuk faktorial
3. Menjelaskan teknik rekursif untuk fibonancy
4. Menjelaskan teknik rekursif untuk menara hanoi

Rekursif berarti bahwa suatu proses bisa memanggil dirinya sendiri. Rekursif adalah
kemampuan suatu rutin untuk memanggil dirinya sendiri. Dalam Rekursif sebenarnya
terkandung pengertian prosedur dan fungsi. Perbedaannya adalah bahwa rekursif bisa
memanggil ke dirinya sendiri, tetapi prosedur dan fungsi harus dipanggil lewat pemanggil
prosedur dan fungsi. Rekursif merupakan teknik pemrograman yang penting dan beberapa
bahasa pemrograman mendukung keberadaan proses rekursif ini. Dalam prosedur dan fungsi,
pemanggilan ke dirinya sendiri bisa berarti proses berulang yang tidak bisa diketahui kapan
akan berakhir.

Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam
pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub
program antara lain adalah :

1. meningkatkan readibility, yaitu mempermudah pembacaan program


2. meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modul-modul
atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga
mempermudah pengecekan, testing dan lokalisasi kesalahan.

25 | P a g e
3. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali
dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah
yang semestinya diulang-ulang.

Sub Program Rekursif adalah sub program yang memanggil dirinya sendiri selama
kondisi pemanggilan dipenuhi. Dengan melihat sifat sub program rekursif di atas maka sub
program rekursif harus memiliki :

1. kondisi yang menyebabkan pemanggilan dirinya berhenti (disebut kondisi khusus


atau special condition)
2. pemanggilan diri sub program (yaitu bila kondisi khusus tidak dipenuhi)

Secara umum bentuk dari sub program rekursif memiliki statemen kondisional :

if kondisi khusus tak dipenuhi

then panggil diri-sendiri dengan parameter yang sesuai

else lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi

Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah
penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu
permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program
rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara
algoritmis (dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori,
waktu eksekusi sub program) sub program rekursif sering bersifat tidak efisien.

Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan
perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula
permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif (misalnya
dalam algoritma pengurutan dan pencarian).

6.1. Fungsi Pangkat

Dalam fungsi pangkat xy , kita tahu bahwa semua bilangan selain 0, jika dipangkatkan
dengan 0 nilainya sama dengan 1. Jika x dipangkatkan dengan y, dengan y lebih dari 0, maka

26 | P a g e
hasilnya sama dengan x dikalikan dengan x dipangkatkan y – 1. Jika dituliskan dalam notasi
matematika definisinya

𝑥 𝑦 = 1, 𝑗𝑖𝑘𝑎 𝑦 = 0
𝑥 𝑦 = 𝑥 ∗ 𝑥 𝑦−1 , 𝑗𝑖𝑘𝑎 𝑦 > 0

dilihat di atas pada definisi y > 0, bentuk pemangkatan muncul kembali di sisi kanan. Itulah

yang disebut rekursif.

Definisi rekursif selalu dimulai dengan kasus penyetop, penghenti, atau kasus dasar dari
suatu permasalahan, dalam hal ini terjadi ketika nilai y = 0. Definisi rekursif yang lebih
kompleks mengandung inti dari permasalahan yang akan dipecahkan, namun lebih
sederhana. Dalam hal ini yang tadinya x dipangkatkan dengan y, kini bentuk pemangkatan
menjadi lebih sederhana, yaitu y – 1. Hal ini dimaksudkan untuk “menggiring” masalah
kompleks ke kasus dasar atau penyetop rekursinya.

6.2. Faktorial

Nilai faktorial secara rekursif dapat ditulis sebagai

0!=1

N ! = N x (N-1) !

yang secara pemrograman dapat ditulis sebagai

Faktorial(0) = 1 (1)

Faktorial(N) = N*Faktorial(N-1) (2)

Persamaan (2) di atas adalah contoh hubungan rekurens (recurrence relation), yang berarti
bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama dengan
argumen yang lebih kecil. Persamaan (1) tidak bersifat rekursif, disebut nilai awal atau basis.
Setiap fungsi rekursif paling sedikit mempunyai satu nilai awal, jika tidak fungsi tersebut
tidak bisa dihitung secara eksplisit.

6.3. Fibonancy

27 | P a g e
Bilangan Fibbonacci didefinisikan sebagai berikut

1 1 2 3 5 8 13 21 34 55 89…

dari barisan tersebut dapat dilihat bahwa bilangan ke-N (N>2) dalam barisan dapat dicari dari
dua bilangan sebelumnya yang terdekat dengan bilangan N, yaitu bilangan ke-(N-1) dan
bilangan ke- (N-2), sehingga dapat dirumuskan sebagai

Fibbonacci(1) = 1 (1)

Fibbonacci(2) = 1 (2)

Fibbonacci(N) = Fibbonacci(N-1) + Fibbonacci(N-2)


(3)

Dengan persamaan (1) dan (2) adalah basis dan persamaan (3) adalah rekurensnya. Dalam
beberapa situasi, pemecahan secara rekursif maupun secara iteratif mempunyai keuntungan
dan kekurangan yang bisa saling diperbandingkan. Adalah cukup sulit untuk menentukan
mana yang paling sederhana, paling jelas, paling efisien dan paling mudah disbanding yang
lain. Boleh dikatakan pemilihan cara iterative maupun rekursif merupakan kesenangan
seorang programmer dan tergantung konteks permasalahan yang akan dipecahkan sesuai
dengan kesanggupan yang bersangkutan.

6.4. Menara Hanoi

Barisan rekursif yang telah dibahas sebelumnya dapat diaplikasikan untuk


menyelesaikan berbagai masalah kalkulus, teori bilangan, dan kombinatorika. Salah satunya
adalah untuk menentukan langkah paling sedikit dalam menyelesaikan permainan Menara
Hanoi.
Menara Hanoi merupakan salah satu permainan yang mana
terdiri dari tiga tiang dan sejumlah piringan (paling sedikit
satu) dengan ukuran berbeda-beda yang bisa dimasukkan ke
tiang mana saja. Di awal permainan, piringan tertumpuk
secara rapi dan berurutan berdasarkan ukurannya dalam salah
satu tiang. Piringan terkecil diletakkan paling atas, dan piringan terbesar diletakkan paling

28 | P a g e
bawah sehingga membentuk kerucut. Tujuan dari permainan ini adalah untuk memindahkan
seluruh tumpukan piringan tadi ke tiang yang lain, tapi harus mengikuti aturan berikut:

a. Dalam satu waktu hanya boleh memindahkan satu piringan;


b. Memindahkan piringan paling atas dari satu tiang dan memasukkannya ke tiang yang
lain;
c. Tidak boleh meletakkan piringan di atas piringan lain yang lebih kecil ukurannya.
[Wikipedia]

Jika menara Hanoi hanya memiliki satu piringan, maka cara memindahkan piringan tersebut
ke tiang yang lain sangat mudah. Perhatikan gambar berikut:

Kita hanya melakukan satu kali perpindahan piringan. Jika menara Hanoi memiliki dua
piringan, maka kita lakukan perpindahan sebagai berikut:

Perhatikan bahwa kita melakukan dua kali langkah yang sama seperti pada menara Hanoi
dengan satu piringan, dan langkah terakhir memindahkan piringan terkecil di tempat teratas.
Secara matematis, banyaknya langkah dapat dituliskan
2(1) + 1 = 3
Jadi, kita melakukan 3 kali perpindahan. Jika menara Hanoi memiliki tiga piringan, maka
cara untuk memindahkan ketiga piringan tersebut ke tiang yang lain adalah sebagai berikut:

29 | P a g e
Perhatikan bahwa kita melakukan dua kali langkah yang sama seperti pada menara hanoi
dengan dua piringan, dan langkah terakhir meletakkan piringan terkecil di tempat teratas,
dituliskan:
2(2(1) + 1) + 1 = 7
Jadi kita melakukan 7 kali perpindahan.
Sekarang misalkan 𝑓(𝑛) menyatakan langkah paling sedikit yang dibutuhkan untuk
menyelesaikan menara Hanoi yang memiliki 𝑛 buah piringan. Berdasarkan percobaan
sebelumnya diperoleh
𝑓(1) = 1
𝑓(2) = 2𝑓(1) + 1 = 2(1) + 1 = 3
𝑓(3) = 3𝑓(2) + 1 = 2(3) + 1 = 7
yang mana merupakan barisan rekursif. Berapa langkah paling sedikit untuk menyelesaikan
menara Hanoi yang memiliki 4 buah piringan? Kita dapat melihat polanya dengan mudah.
Untuk 𝑛 buah piringan maka kita punya rumus rekursif
𝑓(1) = 1 dan 𝑓(𝑛) = 2𝑓(𝑛 − 1) + 1 untuk 𝑛 = 2,3,4, …
Belum lengkap rasanya jika tidak disertai bentuk eksplisit dari rumus rekursif tersebut. Untuk
mencarinya, pandang barisan rekursif berikut:
𝑓(𝑛) = 2𝑓(𝑛 − 1) + 1
2𝑓(𝑛 − 1) = 22 𝑓(𝑛 − 2) + 2
22 𝑓(𝑛 − 2) = 22 𝑓(𝑛 − 3) + 22
.
.
.
2𝑛−3 𝑓(3) = 2𝑛−2 𝑓(2) + 2𝑛−3
2𝑛−2 𝑓(2) = 2𝑛−1 𝑓(1) + 2𝑛−2

30 | P a g e
Jumlahkan setiap baris untuk mendapatkan

Perhatikan bahwa merupakan deret geometri berhingga

dengan rasio yang memiliki jumlah . Karena , jadi dapat


dituliskan sebagai

Akhirnya kita mendapatkan bentuk eksplisit dari sebagai


, untuk
Dari sini kita tahu bahwa langkah paling sedikit untuk menyelesaikan menara Hanoi
dengan 5 piringan adalah sebanyak langkah. Sekarang, bisakah teman-
teman menyusun menara Hanoi dengan 5 buah piringan tersebut hanya dengan 31 langkah

31 | P a g e
BAB 7

Metode Divide & Conquer

Deskripsi
Membahas tentang metode divide dan conquer

Tujuan pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan metode merge sort
2. Menjelaskan metode quick sort

Divide and Conquer dulunya adalah strategi militer yang dikenal dengan nama divide ut
imperes. Sekarang strategi tersebut menjadi strategi fundamental di dalam ilmu komputer
dengan nama Divide and Conquer. Divide adalah membagi persoalan menjadi beberapa
berupa masalah yang memiliki kemiripan dengan persoalan semula namun berukuran lebih
kecil (idealnya berukuran hampir sama). Conquer (solve) adalah menyelesaikan masing-
masing berupa masalah (secara langsung atau secara rekursif). Kombinasinya keduanya
mengabungkan solusi masing-masing berupa masalah sehingga membentuk solusi persoalan
semula.

32 | P a g e
Obyek persoalan yang dibagi : masukan (input) atau instances persoalan yang berukuran n
seperti:

• tabel (larik),
• matriks,
• eksponen,
• dll, bergantung persoalannya.

Tiap-tiap berupa masalah mempunyai karakteristik yang sama (the same type) dengan
karakteristik masalah asal. Sehingga metode Divide and Conquer lebih natural diungkapkan
dengan skema rekursif.

7.1. Merge Sort

Merge Sort Menggabungkan dua array yang sudah terurut (Utami, 2017)

Prinsip kerjanya:

1. Kelompokkan deret bilangan kedalam 2 bagian, 4 bagian, 8 bagian, ......dst → (2n)


2. Uruntkan secara langsung bilangan dalam kelompok tersebut.
3. Lakukan langkah diatas untuk kondisi bilangan yang lain sampai didapatkan urutan
yang optimal.

33 | P a g e
7.2. Quick Sort

Quick Sort Merupakan metode sort tercepat, Quicksort diperkenalkan oleh C.A.R.
Hoare. Quicksort partition exchange sort, karena konsepnya membuat bagian-bagian, dan
sort dilakukan perbagian. Pada algoritma quick sort, pemilihan pivot merupakan hal yang
menentukan apakah algoritma quicksort tersebut akan memberikan performa terbaik atau
terburuk (Nugraheny, 2018).

Misal ada N elemen dalam keadaan urut turun, adalah mungkin untuk mengurutkan
N elemen tersebut dengan N/2 kali, yakni pertama kali menukarkan elemen paling kiri
dengan paling kanan, kemudian secara bertahap menuju ke elemen yang ada di tengah. Tetapi
hal ini hanya bisa dilakukan jika tahu pasti bahwa urutannya adalah urut turun.

Secara garis besar metode ini dijelaskan sebagai berikut, misal: akan mengurutkan
vektor A yang mempunyai N elemen. Pilih sembarang dari vektor tersebu, biasanya elemen
pertama misalnya X. Kemudian semua elemen tersebut disusun dengan menempatkan X pada
posisi J sedemikian rupa sehingga elemen ke 1 sampai ke j-1 mempunyai nilai lebih kecil
dari X dan elemen ke J+1 sampai ke N mempunyai nilai lebih besar dari X. Dengan demikian
mempunyai dua buah subvektor, subvektor pertama nilai elemennya lebih kecil dari X,
subvektor kedua nilai elemennya lebih besar dari X. Pada langkah berikutnya, proses diatas
diulang pada kedua subvektor, sehingga akan mempunyai empat subvektor. Proses diatas
diulang pada setiap subvektor sehingga seluruh vektor semua elemennya menjadi terurutkan.

34 | P a g e
BAB 8

Metode Sorting

Deskripsi
Membahas tentang metode sorting selection sort, bubble sort, dan insertion sort

Tujuan pembelajaran
Setelah melakkan bagian ini mahasiswa mampu:
Menjelaskan metode sorting dengan selection sort
Menjelaskan metode sorting dengan bubble sort
Menjelaskan metode sorting dengan insertion sort

Pengurutan data dalam struktur data sangat penting terutama untuk data yang beripe
data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan
descending (urut turun). Pengurutan (Sorting) adalah proses pengurutan data yang
sebelumnya disusun secara acak sehingga tersusun secara teratur menurut aturan tertentu.

Contoh:

Data Acak : 5 6 8 1 3 25 10

Ascending : 1 3 5 6 8 10 25

Descending : 25 10 8 6 5 3 1

8.1. Selection Sort

Selection sort merupakan kombinasi antara sorting dan searching. Untuk setiap proses, akan
dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan
dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan
dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]),
pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua

35 | P a g e
(data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks
pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.

Contoh : 22 10 15 3 8 2

Iterasi 1:

Langkah 1 : 22 10 15 3 8 2

Langkah 2 : 22 10 15 3 8 2

Langkah 3 : 2 10 15 3 8 22

Langkah 4 : Ulangi langkah 2 dan 3

Iterasi 2

Langkah 1 : 2 10 15 3 8 22

Langkah 2 : 2 10 15 3 8 22

Langkah 3 : 2 3 15 10 8 22

Langkah 4 : Ulangi langkah 2 dan 3

Iterasi 3

Langkah 1 : 2 3 15 10 8 22

Langkah 2 : 2 3 15 10 8 22

Langkah 3 : 2 3 8 10 15 22

Langkah 4 : Ulangi langkah 2 dan 3

Iterasi 4

Langkah 1 : 2 3 8 10 15 22

Langkah 2 : 2 3 8 10 15 22

Langkah 3 : 2 3 8 10 15 22

36 | P a g e
Langkah 4 : Ulangi langkah 2 dan 3

Iterasi 5

Langkah 1 : 2 3 8 10 15 22

Langkah 2 : 2 3 8 10 15 22

Langkah 3 : 2 3 8 10 15 22

Langkah 4 : Ulangi langkah 2 dan 3

Iterasi 6

Langkah 1 : 2 3 8 10 15 22

Langkah 2 : 2 3 8 10 15 22

Langkah 3 : 2 3 8 10 15 22

Langkah 4 : Ulangi langkah 2 dan 3

8.2. Bubble Sort

Bubble sort merupakan metode sorting termudah, diberi nama “Bubble” karena proses
pengurutan secara berangsur- angsur bergerak/berpindah ke posisinya yang tepat, seperti
gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan
cara membandingkan elemen sekarang dengan elemen berikutnya. Jika elemen sekarang
lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar, jika pengurutan
ascending. Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen
tersebut ditukar, jika pengurutan descending. Algoritma ini seolah-olah menggeser satu per
satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika
satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya.
Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada
pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.

Contoh : 22 10 15 3 8 2

37 | P a g e
Iterasi 1:

Langkah 1 : 22 10 15 3 8 2

Langkah 2 : 22 10 15 3 8 2

Langkah 3 : 22 10 15 3 2 8

Langkah 4 : Ulangi langkah 2 dan 3

Hasil iterasi 1 : 2 22 10 15 3 8

Iterasi 2

Langkah 1 : 2 22 10 15 3 8

Langkah 2 : 2 22 10 15 3 8

Note: 8>3, maka 8 tidak pindah, untuk selanjutnya bandingkan data sebelumnya

yaitu 3.

Langkah 3 : 2 3 22 10 15 8

Langkah 4 : Ulangi langkah 2 dan 3

Lakukan Iterasi selanjutnya sampai iterasi ke- 6

Iterasi 3

Langkah 1 : 2 22 10 15 3 8

Langkah 2 : 2 3 22 10 15 8

Langkah 3 : 2 3 8 22 10 15

Langkah 4 : 2 3 8 22 10 15

Iterasi 4

Langkah 1: 2 22 10 15 3 8

Langkah 2: 2 3 22 10 15 8

38 | P a g e
Langkah 3: 2 3 8 22 10 15

Langkah 4: 2 3 8 22 10 15

Langkah 5: 2 3 8 10 22 15

8.3. Insertion Sort


Insertion sort mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu
diambil dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data ke-
2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan
(diinsert) diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-elemen lain akan
bergeser ke belakang.
Insertion Sort Pengurutan data yang membandingkan data dengan dua elemen data pertama,
kemudian membandingkan elemen-elemen data yang sudah diurutkan, kemudian
perbandingan atara data tersebut akan terus diulang hingga tidak ada elemen data yang
tersisa. Mirip dengan cara mengurutkan kartu, perlembar yang diambil & disisipkan (insert)
ke tempat yang seharusnya.

Contoh : 22 10 15 3 8 2

Iterasi 1

Langkah 1: 22 10 15 3 8 2

Langkah 2: 22 10 15 3 8 2

Langkah 3: 10 22 15 3 8 2

Langkah 4: Ulangi langkah 2 dan 3

Iterasi 2

Langkah 1: 10 22 15 3 8 2

39 | P a g e
Langkah 2: 10 22 15 3 8 2

Langkah 3: 10 15 22 3 8 2

Langkah 4: Ulangi langkah 2 dan 3

Lakukan Iterasi selanjutnya sampai iterasi ke- 6

Catatan : Setiap ada pemindahan, maka elemen yang sudah ada akan di-insert sehingga akan
bergeser ke belakang.

40 | P a g e
BAB 9

Tehnik Searching

Deskripsi
Membahas tentang metode searching (sequential search/linier search, teknik StraitMaxMin, binary
search, dan teknik D and C)

Tujuan pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan teknik sequential search/linier search
2. Menjelaskan teknik StraitMaxMin
3. Menjelaskan binary search
4. Menjelaskan teknik D and C

Permasalahan pencarian adalah merupakan yang sering dijumpai oleh peneliti di


bidang Kecerdasan Buatan. Permasalahan ini merupakan hal penting dalam menentukan
keberhasilan system kecerdasan buatan. Dalam bab ini akan dipelajari 3 bagian dalam metode
pencarian, yang pertama adalah metode yang sederhana yang hanya berusaha mencari
kemungkinan penyelesaian. Pengertian Teknik Searching adalah teknik dalam memilih dan
menyeleksi sebuah elemen dari beberapa elemen yang ada.

9.1. Teknik Sequential Search/Linier Search

Teknik Sequential Search/Linier Search dilakukan untuk data yang belum terurut/yang sudah
terurut. Pencarian yang dimulai dari record-1 diteruskan ke record selanjutnya yaitu record-
2, ke-3,..., sampai diperoleh isi record sama dengan informasi yang dicari (Nilai X).

Algortimanya:

1. Tentukan I = 1
2. Ketika Nilai (I) <> X Maka Tambahkan I = I +1
3. Ulangi langkah No. 2 sampai Nilai(I) = X

41 | P a g e
4. Jika Nilai (I) = N+1 Maka Cetak “Pencarian Gagal” selain itu Cetak “Pencarian
Sukses “

Contoh1:

Data A = { 10, 4, 9, 1, 15, 7 }

Dicari 15

Langkah pencariannnya:

Langkah 1: A[1] = 10

Langkah 2: 10 <> 15, maka A[2] = 4

Langkah 3: ulangi langkah 2

Langkah 2: 4 <> 15, maka A[3] = 9

Langkah 2: 9 <> 15, maka A[4] = 1

Langkah 2: 1 <> 15, maka A[5] = 15

Langkah 2: 15 = 15

Langkah 4: “Pencarian Sukses”

Contoh2:

Apabila ditemukan kondisi:

Nilai (i) = N + 1, maka pencarian tidak ditemukan atau gagal.

Dikarenakan jumlah elemen adalah N, N + 1 artinya data yang dicari bukan

merupakan elemen data dari N.

9.2. Teknik StraitMaxMin

Teknik StraitMaxMin dilakukan untuk menentukan/mencari elemen max&min. Pada


Himpunan yang berbentuk array linear. Waktu tempuh/time complexity yang digunakan

42 | P a g e
untuk menyelesaikan pencarian hingga mendapatkan solusi yang optimal terbagi atas best
case, average case dan worst case.

a. Best Case
Keadaan yang tercapai jika elemen pada himpunan A disusun secara increasing
(menaik). Dengan perbandingan waktu n - 1 kali satuan operasi.

Contoh :

Terdapat himpunan A yang berisi 4 buah bilangan telah disusun secara increasing
dengan A[0]=2, A[1]=4, A[2]=5, A[3]=10. Tentukan/cari Bilangan Max&Min serta
jumlah operasi perbandingan yang dilakukan.

Penyelesaian Best Case: Untuk masalah tersebut dapat digunakan procedure


STRAITMAXMIN yang menghasilkan bilangan Min=2 & bilangan Max=10,
Operasi perbandingan data mencari bilangan MaxMin dari himpunan tersebut (n-1)
=3 kali operasi perbandingan.

Penyelesaian Best Case detail:

Contoh: A = { 2, 4, 5, 10 }

Operasi Perbandingan : 4 – 1 = 3

b. Worst Case

Worst case terjadi jika elemen dalam himpunan disusun secara decreasing (menurun).
Dengan Oprasi perbandingan sebanyak 2(n-1) kali satuan operasi.

Contoh :

43 | P a g e
Mencari elemen MaxMin & jumlah oprasi perbandingan yang dilakukan terhadap
himpunan A yang disusun decreasing. A[0]=80, A[1]=21, A[2]=6, A[3]=-10

Penyelesaian Worst Case : Untuk masalah tersebut dengan proses STRAITMAXMIN


adalah elemen max=80 & elemen min=-10, Operasi perbandingan untuk elemen
Maxmin tersebut adalah 2(4-1) = 6 kali satuan operasi. Penyelesaian Worst Case
Detail:

c. Average Case

Average case dilakukan jika pencarian elemen MaxMin dilakukan pada elemen dalam
himpunan yang tersusun secara acak (tidak decreasing/tidak increasing). Jumlah oprasi
Perbandingan yang dilakukan adalah rata-rata waktu tempuh best case & worst case,
yaitu ½ [ (n-1) + 2(n-1) ] = ( 3n/2 -1 ) kali.

Contoh:

Pada himpuan A yg berisi { 5,-4, 9,7 } dilakukan pencarian elemen max & min dengan
menggunakan proses STRAITMAXMIN. Berapa elemen maxmin yang didapatkan &
jumlah oprasi perbandingan yang dilakukan.

Penyelesaian:

44 | P a g e
Elemen max=9, & elemen min=-4. Jumlah operasi perbandingan adalah ( 3. 4/2 - 1) =
5 kali satuan operasi.

9.3. Binary Search

Binary Search (Untuk data yang sudah terurut) Digunakan mencari sebuah data pada
himpunan data-data yang tersusun secara urut, yaitu data yang telah diurutkan dari besar ke
kecil/sebaliknya. Proses dilaksanakan pertama kali pada bagian tengah dari elemen
himpunan, jika data yang dicari ternyata < elemen bagian atasnya, maka pencarian dilakukan
dari bagian tengah ke bawah.

Algoritma Binary Search

1. Low = 1 , High = N
2. Ketika Low <= High Maka kerjakan langkah No .3, Jika tidak Maka kerjakan langkah
No.7
3. Tentukan Nilai Tengah dengan rumus : (Low + High) Div 2
4. Jika X < Nilai Tengah, Maka High = Mid –1, Ulangi langkah 1
5. Jika X > Nilai Tengah, Maka Low = Mid +1, Ulangi langkah 1
6. Jika X = Nilai Tengah, Maka Nilai Tengah = Nilai yang dicari
7. Jika X > High Maka Pencarian GAGAL

Contoh:

Data A = { 1, 3, 9, 11, 15, 22, 29, 31, 48 }

Dicari 3

Langkah Pencariannya:

Langkah 1: Low = 1 dan High = 9

Langkah 2: Low <= High (jika YA ke L-3, jika TDK ke L-7)

Langkah 3: Mid = (1+10) div 2 = 5 yaitu 15

45 | P a g e
Langkah 4: 3 < 15, maka High = 5 – 1 = 4 yaitu 11

Langkah 1: Low = 1 dan High = 4

Langkah 2: Low <= High

Langkah 3: Mid = (1+4) div 2 = 2 yaitu 3

Langkah 4: 3 < 3, ke langkah 5

Langkah 5: 3 > 3, ke langkah 6

Langkah 6: 3 = 3 (Pencarian berhasil)

9.4. Teknik D AND C

Teknik D AND C dengan Prinsip Dasar Metode Devide & akan dapat dipecahkan suatu
permasalahan proses Searching elemen Max&Min dengan teknik D and C.

Contoh :

Tentukan elemen MaxMin suatu array A yang terdiri dari 9 bilangan :

A[1] = 22, A[4] = -8, A[7] = 17

A[2] = 13, A[5] = 15, A[8] = 31

A[3] = -5, A[6] = 60, A[9] = 47

Penyelesaian Teknik D and C

A= {22,13, -5, -8, 15, 60, 17, 31, 47}

46 | P a g e
Penyelesaian Teknik D AND C : Lalu Proses tree call dr setiap elemen yg ditunjuk pada
bagan tree tersebut diatas. Dengan cara, membalik terlebih dahulu posisi tree dari bawah ke
atas. Lalu mengisinya dengan elemen-elemnnya sesuai dengan bagan tree. Perhatikan bagan
tree call ini :

A = { 22, 13, -5, -8, 15, 60, 17, 31, 47 }

Posisi penggabungan → Max, Min

47 | P a g e
BAB 10

Metode Greedy

Deskripsi
Membahas tentang metode greedy (optimal on tape storage dan knapsack problem) untuk
menyelesaikan masalah dan membahas tentang penyelesaian dengan algortima pemrograman greedy

Tujuan Pembelajaran
Setelah melakukan bagian ini mahasiswa mampu:
1. Menjelaskan tentang metode greedy optimal on tape storage untuk menyelesaikan masalah
2. Menjelaskan tentang metode greedy knapsack problem untuk menyelesaikan masalah
3. Menjelaskan model graph pada metode greedy untuk travelling salesman problem
4. Menjelaskan model graph pada metode greedy untuk shortest path problem
5. Menjelaskan model graph pada metode greedy untuk minimun spanning tree

Metode Greedy digunakan untuk memecahkan persoalan optimasi. Persoalan


optimasi adalah persoalan mencari solusi optimum. Persoalan optimasi ada 2 yaitu persoalan
Maksimasi dan persoalan Minimasi. Arti kata Greedy adalah rakus, tamak. Contoh Masalah
Optimasi Pada Kasus Penukaran Uang, Diberikan uang senilai A. Tukar A dengan koin-koin
uang yang ada. Berapakah jumlah minimum koin yang diperlukan untuk penukaran uang
tersebut. Ini adalah contoh Persoalan Minimasi.

Contoh: Terdapat koin 5, 10, 25, 50. Jika sejumlah uang sebesar 65 ingin ditukarkan dengan
koin, berapa minimal koin yang didapat.

65 = 5 + 5 + … + 5 (13 koin)

65 = 10 + 5 + 5 + 5 + 5 + .. + 5 (12 koin)

65 = 10 + 10 + 5 + 5 + 5 + .. + 5 (11 koin)

65 = 10 + 10 + .. + 10 + 5 (7 koin)

65 = 25 + 25 + 10 + 5 (4 koin)

48 | P a g e
65 = 50 + 5 + 5 + 5 (4 koin)

65 = 50 + 10 + 5 (3 koin)

Minimum: 65 = 50 + 10 + 5 (3 koin)

Jika pertanyaannya berapa maksimal koin yang didapat maka jawabannya adalah 13 koin
dengan kombinasi 5 + 5 + 5 + 5 + .. + 5

Algoritma greedy membentuk solusi langkah per langkah. Pada setiap langkah
terdapat banyak pilihan yang perlu dieksplorasi. Sehingga, pada setiap langkah harus dibuat
keputusan yang terbaik dalam menentukan pilihan (keputusan yang telah diambil pada suatu
langkah tidak dapat diubah lagi pada langkah selanjutnya). Pada setiap langkah membuat
pilihan optimum lokal dengan harapan bahwa langkah sisanya mengarah kesolusi optimum
global.

Metode GREEDY digunakan dalam penyelesaian masalah-masalah :

1. Optimal On Tape Storage Problem


Permasalahan bagaimana mengoptimalisasi storage/memory dalam komputer agar
data yg disimpan dapat termuat dengan optimal. Misalkan terdapat n program yang
akan disimpan didalam pita (tape). Pita tsb mempunyai panjang maks. sebesar L,
masing-masing program yang akan disimpan mempunyai panjang L1 ,L2 ,L3 ...,Ln .
Cara penyimpanan adalah penyimpanan secara terurut (sequential).
Persoalan : Bagamana susunan penyimpanan program 2 tersebut sehingga
L 1 + L 2 + L 3 + ... + L n = L ?
Contoh soal : Misal terdapat 3 buah program (n=3) yg masing-masing mempunyai
panjang program (I 1 ,I 2 ,I 3 )=(5,10,3). Tentukan urutan penyimpanannya secara
berurutan (sequential) agar optimal....!
Penyelesaiannya : Dari 3 program tersebut akan didapat 6 buah kemungkinan order,
yang didapat dari nilai faktorial 3 →3! (ingat faktorial n!).

49 | P a g e
2. Knapsack Problem
Knapsack adalah tas atau karung. Karung digunakan memuat objek, tentunya tidak
semua objek dapat ditampung di dalam karung. Karung hanya dapat menyimpan
beberapa objek dengan total ukurannya (weight) lebih kecil atau sama dengan ukuran
kapasitas karung. Permasalahan pada knapsack problem adalah bagaimana obyek-
obyek tersebut dimuat/dimasukan kedalam ransel (knapsack) yang mempunyai
kapasitas max=M, sehingga timbul permasalahan sbb:
a. Bagaimana memilih obyek yang akan dimuat dari n obyek yang ada sehingga
nilai obyek termuat jumlahnya sesuai dgn kapasitas(<= M)
b. Jika semua obyek harus dimuat kedalam ransel maka berapa bagian dari setiap
obyek yang ada dapat dimuat kedalam ransel sedemikian sehingga nilai kum.
maks. & sesuai dgn kapasitas ransel?

10.1. Travelling Salesman Problem

Untuk menentukan waktu perjalanan seorang salesman seminimal mungkin.

Permasalahan : Setiap minggu sekali, seorang petugas kantor telepon berkeliling untuk
mengumpulkan coin-coin pada telepon umum yang dipasang diberbagai tempat. Berangkat
dari kantornya, ia mendatangi satu demi satu telepon umum tersebut dan akhirnya kembali
ke kantor lagi. Masalahnya ia menginginkan suatu rute perjalanan dengan waktu minimal.

50 | P a g e
Misalnya: Kantor pusat adalah simpul 1 dan misalnya ada 4 telepon umum, yang kita
nyatakan sebagai simpul 2, 3, 4 dan 5 dan bilangan pada tiap-tiap ruas menunjukan waktu (
dalam menit ) perjalanan antara 2 simpul .

Langkah penyelesaian:

1. Dimulai dari simpul yang diibaratkan sebagai kantor pusat yaitu simpul 1
2. Dari simpul 1 pilih ruas yang memiliki waktu yang minimal.
3. Lakukan terus pada simpul–simpul yang lainnya tepat satu kali yang nantinya Graph
akan membentuk Graph tertutup karena perjalanan akan kembali ke kantor pusat.
4. Problema diatas menghasilkan waktu minimalnya adalah 45 menit dan diperoleh
perjalanan sbb :

10.2. Shortest Path Problem

Shortest Path Problem adalah permasalahan menghitung jalur terpendek dari sebuah graph.
Shortest Path Problem adalah sebuah permasalahan untuk menemukan sebuah jalan antara 2
vertex, dimana weight dari unsur pokok diminimalisasi. Salah satu contoh dari shortest path
problem yang paling sering dibahas adalah Travelling Salesman Problem dimana

51 | P a g e
permasalahan tersebut adalah permasalahan untuk menemukan jarak terpendek untuk
memutari semua vertex yang ada dan kemudian kembali pada titik awal pencarian rute.
Kriteria untuk permasalahan Shortest Path problem tersebut :

a. Setiap ruas pada graph harus mempunyai nilai (label graph)


b. Setiap ruas pada graph tidak harus terhubung (unconnected)
c. Setiap ruas pada graph tersebut harus mempunyai arah (graph berarah).

10.3. Minimum Spanning Tree


Minimum Spanning Tree adalah mencari minimum biaya (cost) spanning tree dari setiap ruas
(edge) graph yang membentuk pohon (tree). Pohon Rentang (Spanning Tree) pada suatu
graph adalah subgraph minimal yang menghubungkan semua simpul pada graph. Apabila
graph tersebut adalah graph berbobot (Weighted Graph), kemudian dari pohon rentang yang
dimiliki oleh graph didefinisikan sebagai penjumlahan dari bobot – bobot seluruh cabang
pada pohon rentang maka akan diperoleh pohon rentang yang memiliki bobot. Pohon rentang
yang memiliki bobot terkecil pada suatu graph berbobot disebut Pohon rentang Minimum
(Minimum spanning tree). Solusi dari permasalahan ini:

1. Dengan memilih ruas suatu graph yang memenuhi kriteria dari optimisasi yang
menghasilkan biaya minimum.
2. Penambahan dari setiap ruas pada seluruh ruas yang membentuk graph akan
menghasilkan nilai/biaya yang kecil (minimum cost).

52 | P a g e
BAB 11

Pewarnaan

Deskripsi
Membahas tentang pewarnaan atau coloring untuk memecahkan masalah

Tujuan Pembelajaran
Setelah melakukan bagian ini mahasiswa mampu menjelaskan tentan konsep greedy pada
pewarnaan untuk menyelesaikan masalah

Dalam kehidupan sehari-hari sering kali kita dipusingkan oleh rumitnya penjadwalan,
misalnya jika kita harus membuat jadwal ujian dimana ada beberapa mahasiswa yang
mengikuti beberapa mata kuliah, tentunya agar mahasiswa tersebut dapat mengikuti semua
ujian, maka mata kuliah yang diambil secara bersamaan oleh satu siswa tersebut tidak boleh
dijadwalkan pada hari dan jam yang sama. Atau misalnya kita mendapatkan proyek untuk
membuat lampu lalulintas di sebuah perlimaan, maka kita harus mengatur nyala lampu
merah dan hijau agar tidak terjadi tabrakan. Saat ini kita akan belajar bersama salah satu
metode untuk mengatasi permasalahan tersebut dengan metode pewarnaan (Coloring).

Pewarnaan titik / simpul adalah memberikan warna pada titik – titik pada graph
sedemikian sehingga setiap dua titik yang bertetangga (berhubungan langsung) mempunyai
warna yang berbeda. Dua titik yang bertetangga (berhubungan langsung) adalah dua titik
yang dihubungkan oleh sebuah sisi. Pewarnaan (coloring) merupakan problema pemberian
warna kepada semua simpul, sedemikian sehingga 2 simpul yang berdampingan (ada ruas
menghubungkan ke dua simpul tersebut) mempunyai warna yang berbeda. Banyak warna
yang dipergunakan, diminta seminimal mungkin.

Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara


objek-objek. Representasi visual dari graf adalah dengan menyatakan objek dengan simpul,
noktah, bulatan, titik, atau vertex, sedangkan hubungan antara objek dinyatakan dengan garis
, edge atau ruas. Pewarnaan graf adalah proses pelabelan setiap simpul dalam graf dengan
label tertentu (warna) sehingga tidak ada dua simpul bertetangga yang memiliki warna sama.

53 | P a g e
Warna yang kita gunakan untuk mewarnai objek diusahakan seminimal mungkin. Jumlah
warna minimum yang dapat digunakan untuk mewarnai simpul disebut bilangan kromatik.

Beberapa contoh permasalahan yang bisa diselesaikan dengan pewarnaan adalah


Pengaturan Warna Pada Lampu Lalu Lintas. Permasalahan pada pembuatan lampu lalu lintas
pada sebuah jalan simpang 5, kita akan mencoba menentukan jalur mana yg bisa berjalan
dengan memberi lampu hijau, dan memberi lampu merah agar kendaraan pada lintasan yg
lain berhenti, tujuannya adalah agar tidak terjadi tabrakan mari kita lihat contoh gambar
berikut:

Dari gambar diatas dapat kita peroleh informasi, bahwa jalur yang boleh melintas adalah
dari A ke B, A ke C, A ke D, B ke C, B ke D, E ke B, E ke C, dan E ke D. Setelah kita tahu
jalur yang boleh dilewati kita akan menempuh langkah sebagai berikut:

1. Membuat simpul sebagai simbol dari semua jalur yag diperboleh. letak masing-
masing simpul bebas. lihat gambar berikut:

2. Menentukan ruas untuk menghubungkan 2 simpul yang saling melintas atau


bersebrangan, pada gambar 1 diatas terlihat bahwa jalur AB, dan BD, saling
berseberangan, maka kita hubungkan simpul AB dam BD dengan garis yang disebut

54 | P a g e
ruas, dan kita akan memberikan ruas pada semua jalur yang bersebrangan, mari kita
lihat gambar 3 berikut:

3. pada diatas kita telah menghubungkan semua jalur yang saling melintas, langkah
berikutnya adalah memberikan warna pada masing-masing simpul yang terhubung
dengan ruas atau garis, ketentuan pemberian warnanya adalah
a. Gunakan Warna seminimal mungkin
b. Simpul yang berdampingan atau /Terhubung langsung dengan ruas, tidak
boleh berwarna sama
c. Berikan warna yang sama pada simpul yang tidak terhubung secara langsung
d. Simpul yang tidak terhubung dengan ruas atau simpul bebas, berarti lintasan
tersebut boleh berlaku lampu hijau terus.
e. Awal pewarnaan Bebas

Dari diatas, semua simpul telah diwarnai, dari gambar ersebut simpul EC berwarna
kuning sendiri, hal ini dikarenakan simpul EC terhubung secara langsung dengan
simpul AD yang berwarna merah, dan terhubung dengan simpul BD yang berwarna
coklat, jadi kita harus memberi warna selain coklat dan merah, dalam hal ini kita pilih
warna kuning, sementara simpul ED, AB, BC , jadi ke 3 simpul tersebut kita beri
warna yang sama, selain merah, coklat dan kuning tentunya, pada contoh diatas kita

55 | P a g e
beri warna hijau. Simpul ED, AB, BC adalah simpul bebas (simpul yang tidak
terhubung dengan simpul lain) yang berarti jalur tersebut tidak ada jalur yang saling
melintas artinya ketiga ruas bebas itu bisa berlaku lampu hijau terus.
4. Langkah berikutnya adalah mengelompokan simpul berdasarkan warna
Merah → AC, AD
Coklat → BD, EB
Kuning → EC
Hijau → ED, AB, BC
Dari langkah-langkah diatas kita bisa mendapatkan 3 fase pola lampu lalu lintas
sebagai berikut:
Hijau : AC, AD, ED, AB, BC
Merah : BD, EB, EC
Hijau : BD, EB, ED, AB, BC
Merah : AC,AD, EC
Hijau : EC, ED, AB, BC
Merah : AC,AD, BD, EB

56 | P a g e
DAFTAR PUSTAKA

Mesran. Pengantar Logika & Algoritma. (2019). Medan: Green Press.


Afrianto, I. (2012). Penyelesaian Masalah Minimum Spanning Tree (Mst) Menggunakan Ant
Colony System (ACS). Komputa: Jurnal Ilmiah Komputer dan Informatika, 1(2).
Annisa, R., & Anna, A. (2019). Pemanfaatan Graf Dalam Pengaturan Warna Lampu Lalu
Lintas Menggunakan Algoritma Welch Powell. TEKNIKA, 13(1), 18-23.
A.S, Rosa. 2018. Logika Algoritma dan Pemrograman Dasar. Modula. Bandung.
Dwi Yuniarti, Wenty. 2019. Dasar-dasar Pemrograman Dengan Python. Deepublish
Publisher. Yogyakarta
Harumy, T.Hendry Febriana, dkk. 2016. Belajar Dasar Algoritma dan Pemrograman C++.
Deeppublish. Yogyakarta
Jud. (2017). Mastering Phyton. CV Jubilee Solusi Enterprise.
Munir, Rinaldi. 2016. Algoritma dan Pemrograman Dalam Bahasa Pascal, C Dan C++ Edisi
Keenam. Informatika Bandung.
Kadir, Abdul. 2019. Logika Pemrograman Python. Elex Media Komputindo. JakartaJubilee
Enterprise. 2017. Otodidak Pemrograman Python. Elex Media Komputindo.Jakarta
Sjukani, Moh. 2013. Algoritma (Algoritma & Struktur Data 1) dengan C, C++ dan Java Edisi
8. Mitra Wacana Media. Jakarta.
Sitorus, lamhot. (2015). Algoritma dan Pemrograman ( arie pramesta (ed.)). CV. Andi Offset.
Supardi, Yuniar. 2020. Semua Bisa Menjadi Programmer Pyhon Case Study. Elex Media
Komputindo. Jakarta
Swastika, Windra. 2018. Pengantar Algoritma dan Penerapannya pada Python. Ma Chung
Press, Malang

57 | P a g e

Anda mungkin juga menyukai