Page 1
Tugas II Kercerdasan Buatan
SEARCHING AND SORTING
Diajukan untuk memenuhi Tugas Mata KuliahKecerdasan Buatan (Artificial Intelligent)
Oleh :Nama : Steven LimNPM : 1421021
JURUSAN TEKNIK ELEKTROFAKULTAS TEKNIK INDUSTRI
UNIVERSITAS INTERNASIONAL BATAM
Page 3
Bab ILandasan Teori
1.1 Searching
Permasalahan pencarian adalah merupakan yang
sering dijumpai oleh peneliti di bidang Kecerdasan
Buatan. Permasalahan ini merupakan hal penting
dalam menentukan keberhasilan system kecerdasan
buatan.
Gambar 1.1. Pembagian Metode Searching.
Searching adalah cara pencarian data dengan
menelusuri kembali data-data tersebut. Data yang
dicari dapat berupa array dalam memory atau bisa
juga pada file di external storage.
Searching sendiri dapat dibagi menjadi 3
bagian yaitu :
(a) Sequential Search.
(b) Binary Search.
3
Page 4
1.1.1. Sequential Search.
Sequential search adalah suatu cara pencarian
data dalam array satu dimensi. Data yang
dicari akan ditelusuri dalam semua elemen-
elemen array dari awal sampai akhir, dan data
tersebut tidak perlu diurutkan terlebih
dahulu.
Dalam sequential search terdapat 2 kemungkinan
yang akan terjadi dalam waktu pencarian data,
yaitu :
a) kemungkinan terbaik (Best
Case).
Hal ini terjadi jika data yang
dicari terletak pada indeks array
terdepan, sehingga waktu yang
dibutuhkan untuk mencari data
sedikit.
b) Kemungkinan Terburuk (Worst Case).
Hal ini terjadi jika data yang
dicari terletak pada indeks array
terakhir, sehingga waktu yang
dibutuhkan untuk mencari data
sangat lama.
1.1.2. Binary Search.
4
Page 5
Binary search adalah teknik pencarian data
dengan cara membagi dua data setiap kali
terjadi proses pencarian untuk menemukan data
pada sebuah Array.
Pencarian data biner (Binary Search) bertujuan
untuk :
Memperkecil Jumlah operasi
pembandingan yang harus dilakukan
antara data yang dicari dengan data
yang ada. Khususnya data yang sangat
besar ukurannya.
Beban komputansi menjadi lebih kecil
karena pencarian dilakukan dari
depan, tengah, dan belakang.
Prinsip dasar dari Binary Search adalah
melakukan pembagian ruang pencarian secara
berulang-ulang sampai data di temukan atau
sampai ruang pencarian tidak dapat dibagi
lagi.
Syarat utama untuk pencarian biner adalah
data harus di sorting terlebih dahulu. Karena
data harus terlebih dahulu di sorting, ini
kan membuat algoritma menjadi lebih sulit.
1.2. Sorting.
5
Page 6
Pengurutan data (sorting) didefinisikan
sebagai suatu proses untuk menyusun kembali
humpunan obyek menggunakan aturan tertentu.
Ada dua macam urutan yang biasa digunakan
dalam proses pengurutan yaitu :
Urut naik (ascending) yaitu dari data
yang mempunyai nilai paling kecil sampai
paling besar.
Urut turun (descending) yaitu data yang
mempunyai nilai paling besar sampai
paling kecil.
Ada beberapa keuntungan yang dapat kita
peroleh pada data yang telah terurut, yaitu mudah
dalam pencarian data, perbaikan kesalahan data,
disisipi data baru atau menghapus data tertentu.
Terdapat beberapa metode pada pengurutan,
metode yang akan dibahas pada laporan ini adalah
Bubble Sorting, Selection Sorting, Insertion Sorting, Merge Sorting,
dan Quick Sorting.
1.2.1. Bubble Sorting
Bubble Sort adalah salah satu algoritma
untuk sorting data, atau kata lainnya
mengurutkan data dari yang terbesar ke yang
terkecil atau sebaliknya (Ascending atau
Descending).
Bubble sort (metode gelembung) adalah
metode/algoritma pengurutan dengan dengan
6
Page 7
cara melakukan penukaran data dengan tepat
disebelahnya secara terus menerus sampai bisa
dipastikan dalam satu iterasi tertentu tidak
ada lagi perubahan. Jika tidak ada perubahan
berarti data sudah terurut. Disebut
pengurutan gelembung karena masing-masing
kunci akan dengan lambat menggelembung ke
posisinya yang tepat.
Metode pengurutan gelembung (Bubble Sort)
diinspirasikan oleh gelembung sabun yang
berada dipermukaan air. Karena berat jenis
gelembung sabun lebih ringan daripada berat
jenis air, maka gelembung sabun selalu
terapung ke atas permukaan. Prinsip di atas
dipakai pada pengurutan gelembung.
Algoritma bubble sort adalah salah satu
algoritma pengurutan yang paling simple, baik
dalam hal pengertian maupun penerapannya. Ide
dari algoritma ini adalah mengulang proses
pembandingan antara tiap-tiap elemen array dan
menukarnya apabila urutannya salah.
Pembandingan elemen-elemen ini akan terus
diulang hingga tidak perlu dilakukan
penukaran lagi. Algoritma ini termasuk dalam
golongan algoritma comparison sort, karena
menggunakan perbandinagn dalam operasi antar
elemenya.
7
Page 8
1.2.2. Selection Sorting.
Pengertian dari selection sort adalah
mencari elemen yang tepat untuk diletakkan di
posisi yang telah diketahui, dan
meletakkannya di posisi tersebut setelah data
tersebut ditemukan.
Selection Sort Membandingkan elemen yang
sekarang dengan elemen yang berikutnya sampai
dengan elemen yang terakhir. Jika ditemukan
elemen lain yang lebih kecil dari elemen
sekarang maka dicatat posisinya dan kemudian
ditukar.
Pengurutan data dalam struktur data
sangat penting untuk data yang beripe data
numerik ataupun karakter.Pengurutan dapat
dilakukan secara ascending (urut naik) dan
descending (urut turun).
1.2.3. Insertion Sorting.
Insertion sort adalah sebuah metode
pengurutan data dengan menempatkan setiap
elemen data pada pisisinya dengan cara
melakukan perbandingan dengan data – data
yang ada. Ide algoritma dari metode insertion
sort ini dapat dianalogikan sama seperti
mengurutkan kartu, dimana jika suatu kartu
dipindah tempatkan menurut posisinya, maka
kartu yang lain akan bergeser mundur atau
8
Page 9
maju sesuai kondisi pemindahanan kartu
tersebut. Dalam pengurutan data, metode ini
dipakai bertujuan untuk menjadikan bagian
sisi kiri array terurutkan sampai dengan
seluruh array diurutkan.
1.2.3.1. Penganalogian Insertion menggunakan
Kartu
Berikut menjelaskan bagaimana
algoritma Insertion Sort bekerja dalam
pengurutan kartu, Anggaplah kita ingi
mengurutkan satu set kartu dari kartu yang
bernilai paling kecil hingga yang paling
besar.
a) Dimulai dengan posisi tangan
kosong, dan semua kartu berada
diatas meja. Dan anggaplah kita
akan menyusun kartu ke tangan
kiri kita.
b) Mengambil kartu pertama dari
meja dan meletakannya ke tangan
kiri.
c) Mengambil Kartu kedua dan
membandingkanya dengan kartu
yang sudah ada ditangan kiri.
d) Jika kartu yang diambil dari
meja memenuhi syarat
perbandingan, maka kartu
9
Page 10
tersebut akan diletakan didepan
kartu yang dibandingkan, serta
kartu yang lain yang telah
dibandingkan akan bergeser
mundur (ke belakang).
Proses ini akan berlangsung sampai
semua kartu akan terurutkan dengan benar
sesuai criteria pengurutannya.
Demikian juga halnya dalam
pengurutan data. Jika data sudah ada, maka
pengurutan dimulai dengan mengambil satu
data dan membandingkannya dengan data-data
yang ada didepannya. Jika data yang
diambil memenuhi syarat perbandingan, maka
data yang diambil tersebut akan diletakan
di depan data yang dibandingkan, kemudian
data-data yang dibandingkan akan bergeser
mundur.
1.2.4. Merge Shorting.
Merge sort merupakan algoritma pengurutan
dalam ilmu komputer yang dirancang untuk
memenuhi kebutuhan pengurutan atas suatu
rangkaian data yang tidak memungkinkan untuk
ditampung dalam memori komputer karena
jumlahnya yang terlalu besar. Algoritma ini
ditemukan oleh John von Neumann pada tahun
1945.
10
Page 11
Algoritma pengurutan data merge sort
dilakukan dengan menggunakan cara divide and
conquer yaitu dengan memecah kemudian
menyelesaikan setiap bagian kemudian
menggabungkannya kembali. Pertama data
dipecah menjadi 2 bagian dimana bagian
pertama merupakan setengah (jika data genap)
atau setengah minus satu (jika data ganjil)
dari seluruh data, kemudian dilakukan
pemecahan kembali untuk masing-masing blok
saSetelah itu digabungkan kembali dengan
membandingkan pada blok yang sama apakah data
pertama lebih besar daripada data ke-
tengah+1, jika ya maka data ke-tengah+1
dipindah sebagai data pertama, kemudian data
ke-pertama sampai ke-tengah digeser menjadi
data ke-dua sampai ke-tengah+1, demikian
seterusnya sampai menjadi satu blok utuh
seperti awalnya. Sehingga metode merge sort
merupakan metode yang membutuhkan fungsi
rekursi untuk penyelesaiannya. Dengan hal ini
deskripsi dari algoritma dirumuskan dalam 3
langkah berpola divide-and-conquer sampai hanya
terdiri dari satu data tiap blok.
1.2.5. Quick Sorting
Quick Sort adalah Algorima Sorting yang
dikembangkan oleh Tony Hoare yang, secara
11
Page 12
kasus rata-rata, membuat pengurutan O(n log n)
untuk mengurutkan n item. Algoritma ini
sering disebut dengan Partition-Exchange Sort atau
serindg disebut Sorting Pergantian Pembagi.
12
Page 13
Bab IIAnalisa Data
2.1 Analisa Algoritma Data Searching.
Searching yang digunakan pada laporan kali
ini adalah metode Sequential Searching.
Gambar 2.1 Form Program Yang Dijalankan
(Searching).
Gambar diatas adalah contoh program yang
sudah selesai di coding. Di dalam form tersebut
terdapat box dan tombol-tombol(Buttons) yang
memiliki fungsinya sendiri.
Load Button berfungsi untuk menjalan kan
form/program dengan data yang telah di input
13
Page 14
dalam coding. Search button digunakan untuk
menemukan data pada textbox yang kita inginkan.
Textbox dibagi menjadi dua dimana textbox dengan
ukuran space yang lebih kecil berfungsi sebagai
input batasan angka yang diinginkan dimana pada
kasus ini yang menjadi batasan adalah NPM dari
penulis dan textbox yang dan textbox dengan
ukuran space yang lebih besar berfungsi untuk
memunculkan data yang kita ingin temukan. Listbox
yang ada di pojok kanan bawah berfungsi untuk
menampilkan data yang muncul secara acak.
14
Page 15
Pada program ini, masukanlah inputan data,
paa kasus ini penyulis menggunakan Nomor
Mahasiswa (NPM) sebagai inputan pada textbox 1
yang berfungsi sebagi pembatas. Setelah inputan
dimasukan gunakan button Load Data untuk
memnunculkan data yang akan muncul di listbox
satu dimana data(n) yang muncul adalah random(n+
+). Saat melakukan searching data, bila data
ditemukan maka akan muncul respond dimana
disebutkan bahwa “element is present in the array”
sedanhgkan bila data tidak diitemukan , maka
respond dari program adalah “element is not present in
the array”.
15
Page 16
Gambar 2.2 Flowchart Searching.
2.2 Analisa Algoritma Data Sorting
2.2.1 Bubble Sorting.
Bubble Sorting mengurutkan data dengan cara
membandingkan elemen sekarang dengan elemen
berikutnya. Jika elemen sekareang lebih besar
dari elemen berikutnya maka, maka kedua
16
Page 17
elemen tersebut akan ditukar. Algoritma ini
seolah olah menggeser satu per satu elemen
dari kanan ke kiri atau kiri ke kanan,
tergantunbg jenis pengurutanya. Bubble sort
akan berhenti ketika semua array telah di
periksa.
Algoritma bubble sort adalah salah satu
algoritma pengurutan yang paling simple, baik
dalam hal pengertian maupun penerapannya. Ide
dari algoritma ini adalah mengulang proses
pembandingan antara tiap-tiap elemen array dan
menukarnya apabila urutannya salah.
Pembandingan elemen-elemen ini akan terus
diulang hingga tidak perlu dilakukan
penukaran lagi. Algoritma ini termasuk dalam
golongan algoritma comparison sort, karena
menggunakan perbandinagn dalam operasi antar
elemenya.
Berikut merupakan contoh coding dari
bubble sorting :
17
Page 18
Gambar 2.3 Hasil Program Bubble Sorting.
Pada program bubble sorting,masukan data
inputan yang akan berfungsi sebagai batasan
data. Setelah data inputan dimasukan Nama dan
Target akan muncul serta di listbox satu akan
18
Page 19
muncul data random yang belum terurut. Click
bubble click button akan memindahkan data di
listbox satu ke listbox dua yang kemudian akan di
susun menggunakan metode bubble sort yang
kemudian akan di tampilkan hasilnya pada
graphics chart.
Berikut adalah algoritma dari Bubble
sorting :
1. Membandingkan data a dengan data (a+1).
Jika tidak sesuai maka data akan ditukar.
Dalam kasus ini, algoritma yang digunakan
adalah Ascending. Maka kondisi yang tidak
sesuai adalah ketika data ke a lebih besar
dari data ke (a+1).
2. Membandingkan data (a+1) dengan data (a+2).
Kita melakukan perbandingan ini sampai data
terakhir.
3. Proses akan terus berlangsung hingga tidak
ditemukan lagi data yang tidak sesuai. hal
ini dikarenakan adanya coding yang
dimaksudkan agar data akan terus di sort
sampai data sudah sesuai.
19
Page 20
Gambar 2.4 Flowchart Bubble Sorting
2.2.2 Selection Sorting.
Algoritma sorting sederhana yang lain
adalah Selection Sort. Ide dasarnya adalah
melakukan beberapa kali pass untuk melakukan
penyeleksian elemen struktur data. Untuk
sorting ascending (menaik), elemen yang
paling kecil di antara elemen-elemen yang
belum urut, disimpan indeksnya, kemudian
dilakukan pertukaran nilai elemen dengan
20
Page 21
indeks yang disimpan tersebut dengan elemen
yang paling depan yang belum urut.
Sebaliknya, untuk sorting descending
(menurun), elemen yang paling besar yang
disimpan indeksnya kemudian ditukar.
21
Page 22
Berikut merupakan contoh dari coding selection sort :
Sama seperti bubble sort dari awal
program . yang berbeda hanyalah cara sorting
yang dilakukan oleh selection sort berikut
adalah algoritma dari selection sort.
22
Page 23
1. Temukan nilai yang paling minimum
(atau sesuai keinginan) di dalam
struktur data. Jika ascending, maka
yang harus ditemukan adalah nilai yang
paling minimum. Jika descending, maka
temukan nilai yang paling maksimum.
2. Tukar nilai tersebut dengan nilai pada
posisi pertama di bagian struktur data
yang belum diurutkan.
3. Ulangi langkah di atas untuk bagian
struktur data yang tersisa.
Gambar 2.3 Hasil Program Selection Sorting.
2.2.3 Insertion sorting.
23
Page 24
Cara kerja insertion sort sebagaimana
namanya. Pertama-tama, dilakukan iterasi,
dimana di setiap iterasi insertion sort
memindahkan nilai elemen, kemudian
menyisipkannya berulang-ulang sampai ke
tempat yang tepat. Begitu seterusnya
dilakukan. Dari proses iterasi, seperti
biasa, terbentuklah bagian yang telah di-
sorting dan bagian yang belum.
Masih sama , dalam program ini masih
menggunakan cara yang sama dalam langkah
kerjanya namun perbedaanya adalah da;lam
system sortya.
Berikut adalah coding yang ada pada
program insertion sort.
24
Page 25
Algoritma Insertion Sort dapat dirangkum
sebagai berikut:
1. Simpan nilai Ti kedalam variabel
sementara, dengan i = 1.
25
Page 26
2. Bandingkan nilainya dengan elemen
sebelumnya.
3. Jika elemen sebelumnya (Ti-1) lebih besar
nilainya daripada Ti, maka tindih nilai
Ti dengan nilai Ti-1 tersebut. Decrement
I (kurangi nilainya dengan 1).
4. Lakukan terus poin ke-tiga, sampai Ti-1 ≤
Ti.
5. Jika Ti-1 ≤ Ti terpenuhi, tindih nilai di
Ti dengan variabel sementara yang
disimpan sebelumnya.
6. Jika masih ada data yang harus di sort,
maka Ulangi langkah dari poin 1 di atas
dengan I di-increment (ditambah satu).
Gambar 2.4 Hasil Program Insertion Sorting.
2.2.4 Merge Sorting.
26
Page 27
Algoritma pengurutan data merge sort
dilakukan dengan menggunakan cara divide and
conquer yaitu dengan memecah kemudian
menyelesaikan setiap bagian kemudian
menggabungkannya kembali. Pertama data
dipecah menjadi 2 bagian dimana bagian
pertama merupakan setengah (jika data genap)
atau setengah minus satu (jika data ganjil)
dari seluruh data, kemudian dilakukan
pemecahan kembali untuk masing-masing blok sa
Setelah itu digabungkan kembali dengan
membandingkan pada blok yang sama apakah data
pertama lebih besar daripada data ke-
tengah+1, jika ya maka data ke-tengah+1
dipindah sebagai data pertama, kemudian data
ke-pertama sampai ke-tengah digeser menjadi
data ke-dua sampai ke-tengah+1, demikian
seterusnya sampai menjadi satu blok utuh
seperti awalnya. Sehingga metode merge sort
merupakan metode yang membutuhkan fungsi
rekursi untuk penyelesaiannya. Dengan hal ini
deskripsi dari algoritma dirumuskan dalam 3
langkah berpola divide-and-conquer sampai
hanya terdiri dari satu data tiap blok.
Berikut Adalah contoh coding dari merge
sort.
27
Page 28
public void MergeSort(int[] input, int left,
int right)
{
timer = 0;
timer1.Enabled = true;
if (left < right)
{
int middle = (left + right) /
2;
MergeSort(input, left,
middle);
MergeSort(input, middle + 1,
right);
//Merge
int[] leftArray = new
int[middle - left + 1];
int[] rightArray = new
int[right - middle];
Array.Copy(input, left,
leftArray, 0, middle - left + 1);
Array.Copy(input, middle + 1,
rightArray, 0, right - middle);
int i = 0;
28
Page 29
int j = 0;
for (int k = left; k < right
+ 1; k++)
{
if (i ==
leftArray.Length)
{
input[k] =
rightArray[j];
j++;
}
else if (j ==
rightArray.Length)
{
input[k] =
leftArray[i];
i++;
}
else if (leftArray[i] <=
rightArray[j])
{
input[k] =
leftArray[i];
i++;
}
else
{
29
Page 30
input[k] =
rightArray[j];
j++;
}
}
Delay(0.2);
listBox2.Items.Clear();
chart1.Series[0].Points.Clear
();
listBox2.Items.Add("---Merge
Sort---");
for (i = 0; i < sort.Length;
i++)
{
listBox2.Items.Add(" (" +
i + ") " + (sort[i]));
chart1.Series[0].Points.A
ddXY(i, sort[i]);
}
}
}
private void Quick_Btn_Click(object
sender, EventArgs e)
{
timer = 0;
timer1.Enabled = true;
30
Page 31
chart1.Series[0].Points.Clear();
for (i = 0; i < sample.Length; i+
+)
{
sort[i] = sample[i];
chart1.Series[0].Points.AddXY
(i, sort[i]);
}
listBox2.Items.Clear();
listBox2.Items.Add("---Quick
Sort---");
chart1.Series[0].Points.Clear();
int right = sample.Length - 1;
int left = 0;
Quicksort(sort, left, right);
timer1.Enabled = false;
textBox1.Text = timer.ToString();
timer = 0;
}
Dari coding diatas dapat dilihat bahwa
data akan di sort dengan cara membagi 2 data
tersebut lalu akan di gabungkan atau disebut
divide-and-conquer.
Algoritma Merge Sort sederhananya, dapat
ditulis berikut:
31
Page 32
1. Bagi list yang tak terurut menjadi
dua sama panjang atau salah satunya
lebih panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list
secara rekursif sampai didapatkan list
dengan ukuran 1.
3. Gabung 2 sublist kembali menjadi satu
list terurut.
Gambar 2.5 Merge Sorting.
2.2.5 Quick Sorting
Quick Sort adalah algoritma sorting yang
terkenal yang dirancang oleh C.A.R. Hoare
pada tahun 1960 ketika bekerja untuk
32
Page 33
perusahaan manufaktur computer saintifik
kecil, Elliott Brothers. Algoritma ini
rekursif, dan termasuk paradigma algoritma
divide and conquer.
Algoritma ini terdiri dari 4 langkah
utama:
1. Jika struktur data terdiri dari 1 atau 0
elemen yang harus diurutkan, kembalikan
struktur data itu apa adanya.
2. Ambil sebuah elemen yang akan digunakan
sebagai pivot point (poin poros).
(Biasanya elemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian –
satu dengan elemen-elemen yang lebih
besar daripada pivot point, dan yang
lainnya dengan elemen-elemen yang lebih
kecil daripada pivot point.
4. Ulangi algoritma secara rekursif terhadap
kedua paruh struktur data.
Bab IIIKesimpulan
Dari Laporam diatas dapat disimpulkan, bahwa dalam
hal melakukan pencarian menggunakan program diatas,
33
Page 34
bahwa dalam pencarian yang kita inginkan, namun saat
pencarian yang kita masukan tidak sesuai data yang ada
pada list box , akan menyebabkan error yang merspond
dengan “element not present in the array” bila hal
tersebut diperiksa karena data hanya mampu diambil 100
data sehingga dari range 1-1421021 tidak bisa
ditampilkan semuanya.
Sedangkan dalam semua metode sorting, hamper
semuanya sama. Namun yang membuat berbeda dalam setiap
sort adalah metodenya.
Pada bubble sorting, data akan di sort berdasarkan
dengan jenis pengurutan seperti ascending atau
descending bila ascending maka data (a+1) haruas lah
lebih besar dari data a.
Pada selection sort, data akan di seleksi.element
akan di sorting dengan cara menyimpan data dibelkang
pada indeks yang akan ditukar dengan data di depan yang
belum diurut
Pada insertion sort, ddata yang diambil untuk di
tukarkan posisinya akan digantikan dengan data
disebelahnya yang akan bergerak maju atau mundur
berdasrkan jenis pengurutanya.
Dan metode Quick dan merge sort sama, menggunakan
data divided and conquer ,namun pada merge data akan
digabungkan saat data sudah din bagi menjadi 2,
sedangkan pada quick sort menggunakn poros atau satu
titik sebagai data tengahnya.
34
Page 35
Dari semua metode yang paling mudah digunakan
adalah merge, karena m,enurut penulis bila mengguanakn
data yang besar akan membuat data atau range data
menjadi lebih kecil sehingga lebih mudah di urutkan.
35
Page 36
Daftar Pustaka.
Wikipedia, the free encyclopedia. Suyanto. 2014. Artificial Inteligent Revisi kedua Fahmy, Wahyu. Kompleksitas Algoritma Sorting yang
Populer Dipakai www.kael9001.blogspot.com www.google.co.id (Images)
36