Anda di halaman 1dari 10

UAS

ALGORITMA DAN STRUKTUR DATA


Dosen: MUSTAKIM, ST,M.Kom

MODEL PENCARIAN DAN PENGURUTAN

NAMA

: Muhammad Safrudin

NIM

: 11553105339

PROGRAM STUDI SISTEM INFORMASI


FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI SULTAN SYARIF KASIM
RIAU
2016

A.BINARY SEARCH
Proses pencarian Binary search hanya dapat dilakukan pada kumpulan data yang
sudah diurutkan terlebih dahulu. Jika terdapat N buah data yang akan diolah, data
yang dicari akan dibandingkan dengan data ke-N jika data ke-N lebih besar dari data
yang dicari maka akan dilakukan pembagian data menjadi dua bagian. Pencarian
biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar daripada
posisi akhir.
Algoritmanya :
Prinsip dari Binary search dapat dijelaskan sebagai berikut :
a. Mula-mula diambil posisi awal 0 dan posisi akhir = N-1, kemudian dicari posisi
data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang
dicari dibandingkan dengan data tengah.
b. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah 1.
c. Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama
dengan posisi tengah +1.
d. Jika data sama, berarti data ditemukan.

Simulasinya
Contoh:
Misalnya data yang dicari 17 (A=awal, T=tengah, R=akhir):
0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A
T
R
Karena 17 > 15 (data tengah), maka: awal = tengah + 1
0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A T R
Karena 17 < 23 (data tengah), maka: akhir = tengah 1
0 1 2 3 4 5 6 7 8
3 9 11 12 15 17 23 31 35
A=T=R
Karena 17 = 17 (data tengah), maka KETEMU dan proses berhenti.

B.BEST FIRST SEARCH


Metode best-first search ini merupakan kombinasi dari
beberapa kelebihan teknik depth first search dan breadth first search.
Algoritma dari best first search adalah sbb:
Tidak seperti Depth-First Search (DFS) atau Breadth-First Search BFS), Best-First Search
adalah algoritma pencarian dengan menggunakan heuristic. Berikut adalah contoh
penggunaan metode BFS untuk permasalahan Arad-Bucharest.

Berikut ini adalah peta Sebagian daerah Indonesia dengan jarak jalan-jalan yang
menghubungkan kota-kota dalam km.

Adapun jarak kota-kota terhadap kota Bucharest jika ditarik garis lurus (perkiraan atau h(n))
adalah sebagai berikut :

Kota

Estimasi Awal ke Tujuan

Kupang

2000

Soe

2110

Kefa

2200

Atambua

2230

Toraja

Malang

1800

Surabaya

1700

Makasar

500

Ambon

300

Nabire
2300
Permasalahannya adalah untuk mencari jalan terdekat dari kota Kupang menuju kota
Toraja dengan menggunakan metoda Best First Search dan A*.
Heuristik yang digunakan adalah jarak kota-kota terhadap kota Bucharest jika ditarik
garis lurus (perkiraan) yang jaraknya seperti yang tertera di atas dengan asumsi kota
terhubung yang letaknya paling dekat dengan kota Bucharest adalah jalan yang paling
optimal.
Diagram pohon langkah-langkah penelusuran dengan metode Best First Search adalah
sebagai berikut :
Langkah 1

perkiraan jarak dari kupang ke toraja bila di tarik garis lurus

Cabang atau pilihan jalan yang dapat di lalui dari kota kupang menuju toraja
Langkah 3

Memilih Cabang yang memiliki Estimasi jarak terdekat dengan kota tujuan(toraja).
Yaiti makasar, maka kita ambil lagi cabang atau pilihan jalan yang dapat di lalui dari kota
makasar. namun ternyata dari kota makasar terdapa jalan yang langsung menuju ke toraja,
maka selesai...
Dari Langkah-langkah di atas, dengan metode Best First Search didapatkan kota-kota yang
harus dilalui untuk mendapatkan jalan yang paling dekat jaraknya dari Kupang ke Toraja
adalah : Kupang Makassar Toraja.
Dari peta diatas, panjang jalan yang dilalui adalah 1300 + 245 = 1545 Km.

Flowchart BFS :

C.SELECTION SORT
Selection Sort merupakan salah satu algoritma pengurutan yang sederhana. Ide
dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen
struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara elemenelemen yang belum urut, disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen
dengan 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.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus
daripada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai
berikut:
1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam
sebuah list
2. Menukarkan nilai ini dengan elemen pertama list
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua

Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan,
yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian
list yang elemennya akan diurutkan.
contoh simulasi algoritma selection sort sbb :
jika kita memiliki elemen array sbb : {5, 1, 12, -5, 16, 2, 12, 14}

Algoritma di dalam Selection Sort terdiri dari kalang bersarang. Dimana kalang
tingkat pertama (disebut pass) berlangsung N-1 kali. Di dalam kalang kedua, dicari elemen
dengan nilai terkecil. Jika didapat, indeks yang didapat ditimpakan ke variabel min. Lalu
dilakukan proses penukaran. Begitu seterusnya untuk setiap Pass. Pass sendiri makin
berkurang hingga nilainya menjadi semakin kecil. Berdasarkan operasi perbandingan
elemennya.
Flowchart selection sort

D.QUICK SORT
Quick Sort adalah metode pengurutan data yang dikemukan pertama kali oleh C.AR
Hoare pada tahun 1962. Metode ini menggunakan strategi pecah-pecah dengan mekanisme
seperti berikut : Larik L[p..r] (dengan indeks terkecil adalah p dan indeks terbesar yaitu r)
disusun ulang (dipartisi) menjadi dua buah larik A[p..q] dan A[q+1..r] sehingga setiap elemen
dalam A[q+1..r]. Selanjutnya kedua larik tersebut diurutkan secara rekursif. Dengan
sendirinya kombinasi kedua larik tersebut membentuk larik dengan data yang telah urut.
Implementasi quick sort dapat dilihat di bawah ini.

Algoritma :
SUBRUTIN quick_sort (L,p,r]
JIKA p <-- partisi (L,p,r)
Quick_sort (L,p,r)
Quick_sort (L,q+1,r)
AKHIR JIKA
AKHIR SUBRUTIN
Untuk mengurutkan isi keseluruhan larik L, diperlukan pemanggilan seperti berikut :
Quick_sort (L,0,jumlah_elemen(L)-1)
Subrutin partisi sendiri seperti berikut :
SUBRUTIN partisi (L,p,r)
x <-- L[p]
i <-- p
j <-- r
ULANG SAMPAI BENAR
ULANG SELAMA L[j] > x
j <-- j i
AKHIR ULANG
ULANG SELAMA L[I] < x
i<--i +1
AKHIR-ULANG
JIKA i<j MAKA
//Tukarkan L[i] dengan L[j]
tmp=L[i]
L[i] <-- L[j]
L[j]<--tmp
SEBALIKNYA
NILAI BALIK j
AKHIR-JIKA

AKHIR-ULANG
AKHIR-SUBRUTIN
Pertama-tama x <-- L[q] dipakai untuk membagi larik L[p..r] menjadi dua bagian
(disebut pemartisian) dengan kondisi semua elemen bagian kiri selalu lebih kecil daripada
nilai elemen pivot dan nilai semua elemen bagian kanan selalu lebih kecil daripada nilai
elemen pivot. Pemartisian dilakukan dengan menggunakan varibel i dan j. Dalam hal ini i
berupa petunjuk yang bergerak naik, sedangkan j adalah penunjuk bergerak turun. Variabel j
bergeser turun secara terus-menerus sehingga L[j]<= elemen pivot, sedangkan i digeser naik
secara terus-menerus sampai memenuhui kondisi L[j] >= elemen pivot. Proses pengulangan
dilakukan sampai nilai i >= j. Pada keadaan seperti ini nilai balik subrutin partisi berupa j.

Flowchart nya :

Anda mungkin juga menyukai