Anda di halaman 1dari 22

MAKALAH

Resume Materi Praktikum Struktur Data dan Algoritma

Oleh:
Anjas Subhanuari (151402043)
Ryan Fachrozy (151402044)

Mata Kuliah:
Praktikum Struktur Data dan Algoritma

Asisten Laboratorium:
Ruswan Efendi

KELAS B
PROGRAM STUDI S-1 TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2016
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Kata Pengantar

Puji dan syukur penulis sampaikan kepada Allah swt., Tuhan Yang Maha Esa, yang telah
memberikan rahmat-Nya kepada penulis, sehingga penulis mampu menyelesaikan Makalah Resume
Materi Praktikum Struktur Data dan Algoritma ini.

Penulis mengucapkan terimakasih kepada Abangda Ruswan Efendi yang telah membimbing
serta mendukung kami adik-adik mahasiswanya dalam pelaksanaan Praktikum Struktur Data dan
Algoritma pada program studi strata 1 Teknologi Informasi, Universitas Sumatera Utara pada semester
ganjil ini.

Akhirnya, penulis menyadari bahwa masih terdapat banyak kekurangan dalam Makalah ini,
sehingga segala kritik dan saran yang bersifat membangun akan penulis terima dengan senang hati.

Medan, 27 Desember 2016

Penulis
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Daftar Isi

Kata Pengantar...........................................................................................................................................................1
Daftar Isi..................................................................................................................................................................... 2

BAB I......................................................................................................................................................................... 3
BAB II........................................................................................................................................................................ 4
2.1. Array.........................................................................................................................................................4
2.1.1. Pengertian Array............................................................................................................................4
2.1.2. Array Satu Dimensi.......................................................................................................................4
2.1.3. Array Dua Dimensi........................................................................................................................4
2.1.4. Array Multi Dimensi......................................................................................................................5
2.2. Stack dan Queues......................................................................................................................................5
2.2.1. Stack..............................................................................................................................................5
2.2.2. Queues...........................................................................................................................................5
2.3. Rekursif....................................................................................................................................................6
2.4. Graph........................................................................................................................................................6
2.5. Trees.........................................................................................................................................................7
2.6.1 Binary Tree....................................................................................................................................7
2.6.2 Binary Search Tree.........................................................................................................................7
2.6. Linear and Binary Search..........................................................................................................................7
2.6.1 Linear Search.................................................................................................................................7
2.6.2 Binary Search.................................................................................................................................8
2.7. Sorting......................................................................................................................................................8
2.8.1 Bubble Sort....................................................................................................................................8
2.8.2 Selection Sort.................................................................................................................................9
2.8.3 Quick Sort....................................................................................................................................10
2.8.4 Insertion Sort...............................................................................................................................11
2.8.5 Merge Sort...................................................................................................................................12
2.8. Prims and Kruskals Algorithm..............................................................................................................13
2.10.1 Prim.............................................................................................................................................13
2.10.2 Kruskal........................................................................................................................................14
2.9. Shortest Paths.........................................................................................................................................16
2.10. Algoritma Kompresi...............................................................................................................................16
2.10.3 Huffman Code..............................................................................................................................17
2.10.4 Hukum Shannon-Fano.................................................................................................................17
2.11. Enkripsi Data..........................................................................................................................................18
2.11.1 Caesar Shiper...............................................................................................................................18
2.11.2 Vigenere Chiper...........................................................................................................................18

BAB III.....................................................................................................................................................................20
3.1. Kesimpulan.............................................................................................................................................20
3.2. Kritik dan Saran......................................................................................................................................20

Daftar Pustaka..........................................................................................................................................................21
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

BAB I
Pendahuluan

Pada zaman serba cepat dan penuh dengan kecanggihan teknologi berupa alat-alat canggih
yang dipadukan dengan program yang handal saat ini sudah menjadi tuntutan bagi masyarakat luas.
Para pembuat program tentu harus betul-betul membuat program dengan waktu eksekusi yang sangat
efisien tetapi handal. Untuk itu, diperlukan algoritma-algoritma yang tepat pula untuk mencapai
kebutuhan tersebut.

Struktur data adalah suatu pengelolaan data sehingga data dapat dipergunakan secara lebih
efisien dan efektif. Dalam bahasa pemrograman, struktur data seringkali ditampakkan secaa fisik
dalam bentuk tabel (biasanya pada bahasa pemrograman/pengelolaan database berbasis visual), namun
pada beberapa bahasa pemrograman yang tidak berbasis visual, strutkur data lebih berupa pengelolaan
data dengan aturan-aturan tertentu.1

Algoritma adalah urutan langkah untuk menyelesaikan masalah secara sistematis dan logis.
Algoritma menawarkan suatu metode dalam menyelesaikan sebuah permasalahan. Algoritma diartikan
sebagai urutan langkah dalam menyelesaikan masalah secara sistematis dan logis. Pendekatan secara
sistematis dan logis tersebut, menjadikan proses penyelesaian masalah terjaga kebenarannya karena
algoritma hendaklah benar agar dapat menghasilkan keluaran/solusi yang benar pula. Penyelesaian
masalah(problem solving) adalah kegiatan utama yang dilakukan dalam menyelesaiakan sesuatu.2

Dari uraian diatas mengenai pengertian struktur data dan algortima, maka jelas bagi kita bahwa
dalam membuat sebuah program komputer ataupun aplikasi, kita perlu menggunakan sebuah
algoritma-algoritma yang paling baik. Sehingga program yang dibuat tersebut dapat dieksekusi
sempurna, dengan efisiensi waktu yang baik pula. Adapun bahasa pemrograman yang digunakan
adalah bahasa C++.

Resume materi praktikum struktur data dan algoritma yang kami susun ini merupakan makalah
yang berisi materi-materi yang dipelajari selama satu semester pada mata kuliah Praktikum Struktur
Data dan Algoritma. Pembahasan materi yang ada didalam makalah ini disusun sedemikian rupa dari
apa yang telah dipelajari, ditambah dengan beberapa referensi yang diambil secara online (daring) dari
Internet. Kami sangat berharap kiranya makalah yang kami susun ini dapat berguna bagi siapapun
yang membacanya

1 Sumber : http://indra-cwogat.blogspot.co.id/2013/12/pengertian-algoritma-dan-struktur-data.html
2 Sumber : http://indra-cwogat.blogspot.co.id/2013/12/pengertian-algoritma-dan-struktur-data.html
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

BAB II
Pembahasan

2.1. Array
2.1.1. Pengertian Array
Array adalah suatu variabel yang terdiri dari sekumpulan data dimana data-data
tersebut mempunyai tipe data yang sama. Setiap data disimpan dalam alamat
memori yang berbeda-beda dan disebut dengan elemen array. Setiap elemen
mempunyai nilai indeks sesuai dengan urutannya. Melalui indeks inilah kita dapat
mengakses data-data tersebut. Indeks dari elemen array ini, dimulai dari 0, bukan 1.
Array dideklarasikan dengan tanda [ ].

2.1.2. Array Satu Dimensi


Array Satu dimensi tidak lain adalah kumpulan elemen-elemen identik yang
tersusun dalam satu baris. Elemen-elemen tersebut memiliki tipe data yang sama,
tetapi isi dari elemen tersebut boleh berbeda.

Bentuk umum:
tipe_data
nama_array[jumlah_elemen];

Contoh:
int nilai_mhs[5];

nilai_mhs[0 nilai_mhs[1 nilai_mhs[2 nilai_mhs[3 nilai_mhs[4


] ] ] ] ]
80 83 85 90 93

2.1.3. Array Dua Dimensi


Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan
perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah
baris dan beberapa kolom elemen, maka array dua dimensi terdiri dari beberapa
baris dan beberapa kolom elemen yang bertipe sama.

Bentuk umum:
tipe_data nama_array[baris]
[kolom];

Contoh: Cara akses:


int nilai_mhs[4][3]; nilai_mhs[0][1] = 540;
0 1 2
0 80 540 1032
1 15 83 301
2 8 12 15
3 10 129 257
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.1.4. Array Multi Dimensi


Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua.

Bentuk umum:
tipe_data nama_array[ukuran1] [ukuran2]
[....];

2.2. Stack dan Queues


2.2.1. Stack
Stack adalah suatu tumpukan atau kumpulan data yang menggunakan konsep
LIFO (last in first out). Elemen terakhir yang di letakan adalah elemen pertama
yang akan diambil. Konsepnya sama seperti tumpukan benda yang biasa kita
temukan dalam kehidupan sehari-hari. Misalnya tumpukan buku, pada tumpukan
tersebut pastinya buku pertama yang akan kita ambil adalah buku yang paling atas
atau buku yang terakhir diletakan pada tumpukan tersebut.

Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah
Push dan Pop. Operasi operasi yang dapat diterapkan adalah sebagai berikut :

1. Push : digunakan untuk menembah item pada Stack pada Tumpukan paling atas.
2. Pop : digunakan untuk mengambil item pada Stack pada Tumpukan paling atas.
3. Clear : digunakan untuk mengosongkan Stack.
4. Create Stack : membuat Tumpukan baru S, dengan jumlah elemen kosong.
5. MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua elemen
dihapus.
6. IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah kosong.
7. Isfull : fungsi yang digunakan untuk mengecek apakah Stack sudah penuh.

Pada proses Push, Tumpukan (Stack) harus diperiksa apakah jumlah elemen
sudah mencapai masimum atau tidak. Jika sudah mencapai maksimum maka
OVERFLOW, artinya Tumpukan penuh tidak ada elemen yang dapat dimasukkan
ke dalam Tumpukan. Sedangkan pada proses Pop, Tumpukan harus diperiksa
apakah ada elemen yang hendak dikeluarkan atau tidak. Jika tidak ada maka
UNDERFLOW, artinya tumpukan kosong tidak ada elemen yang dapat diambil.

2.2.2. Queues
Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan
Stack, perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang
bebeda. Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku
pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat bertipe
integer, real, record dalam bentuk sederhana atau terstruktur.

Tumpukan disebut juga Waiting Line yaitu penambahan elemen baru dilakukan
pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan.
Sistem pada pengaksesan pada Queue menggunakan sistem FIFO (First In First
Out), artinya elemen yang pertama masuk itu yang akan pertama dikeluarkan dari
Queue.

Operasi-operasi pada queue diantaranya:


1. Create Queue (Q) : membuat antrian baru Q, dengan jumlah elemen kosong.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2. Make NullQ (Q) : mengosongkan antrian Q, jika ada elemen maka semua
elemen dihapus.
3. EnQueue : berfungsi memasukkan data kedalam antrian.
4. DeqQueue : berfungsi mengeluarkan data terdepan dari antrian.
5. Clear : Menghapus seluruh Antrian
6. IsEmpty : memeriksa apakah antrian kosong
7. IsFull : memeriksa apakah antrian penuh.

2.3. Rekursif
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri.
Pada beberapa persoalan, fungsi rekursif sangat berguna karena
mempermudah solusi. Namun demikian, fungsi rekursif juga memiliki
kelemahan, yakni memungkinkan terjadinya overflow pada stack, yang
berarti stack tidak lagi mampu menangani permintaan pemanggilan
fungsi karena kehabisan memori( stack adalah area memori yang dipakai
untuk variable lokal untuk mengalokasikan memori ketika suatu fungsi
dipanggil.

2.4. Graph
Graph adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang
dihubungkan dengan sekumpulan garis (sisi). Graph dapat digunakan untuk
merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.
Representasi visual dari graph adalah dengan menyatakan objek sebagai noktah, bulatan
atau titik (Vertex), sedangkan hubungan antara objek dinyatakan dengan garis (Edge).

Ada beberapa cara untuk menyimpan graph di dalam sitem komputer. Struktur data
bergantung pada struktur graph dan algoritma yang digunakan untuk memmanipulasi graph.
Secara teori salah satu dari keduanya dapat dibedakan antara struktur list dan matriks, tetapi
dalam penggunaannya struktur terbaik yang sering digunakan adalah kombinasi keduanya.

1. Graph tak berarah (undirected graph atau non-directed graph) :Urutan simpul dalam
sebuah busur tidak dipentingkan. Misal busur e1 dapat disebut busur AB atau BA
2. Graph berarah (directed graph) :Urutan simpul mempunyai arti. Misal busur AB adalah
e1 sedangkan busur BA adalah e8.
3. Graph Berbobot (Weighted Graph)
Jika setiap busur mempunyai nilai yang menyatakan hubungan antara 2 buah simpul,
maka busur tersebut dinyatakan memiliki bobot Bobot sebuah busur dapat menyatakan
panjang sebuah jalan dari 2 buah titik, jumlah rata-rata kendaraan perhari yang melalui
sebuah jalan
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.5. Trees
Merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan
yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa
didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root
dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan
satu sama lainnya (disebut subtree).

Jenis-jenis Tree diantaranya:


2.6.1 Binary Tree
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki
maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan
definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling
banyak dua child.

2.6.2 Binary Search Tree


Adalah Binary Tree dengan sifat bahwa semua left child harus lebih kecil
daripada right child dan parentnya. Juga semua right child harus lebih besar dari left
child serta parentnya. Binary seach tree dibuat untuk mengatasi kelemahan pada
binary tree biasa, yaitu kesulitan dalam searching / pencarian node tertentu dalam
binary tree.

2.6. Linear and Binary Search


2.6.1 Linear Search
Linear search adalah program search yang paling sederhana dan mudah
dipahami, linear search memiliki kelebihan apabila data yang dicari letaknya pada
data - data awal sehingga prosesnya berjalan cepat. namun mempunyai kelemahan
apabila data yang dicari letaknya pada data terakhir maka dalam penggunaan waktu
dalam proses pencarian akan berjalan lama.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.6.2 Binary Search


Binary search, atau metode pencarian secara biner hanya bisa dilakukan jika
data sudah terurut. Keunggulan dari proses binary search ini adalah sistem
pencariannya yang relatif cepat dan efisien walaupun ada banyak data sekalipun.
Karena data dicari dari depan, tengah dan belakang. Tetapi sintaks dan algoritmanya
sedikit lebih rumit, karena kita harus mengurutkan data terlebih dahulu. Pengurutan
data disini bisa kalian lakukan dengan metode ascending ataupun descending.

2.7. Sorting
Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya
disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta
pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan, yaitu
Ascending (Naik) dan Descending (Turun).

Untuk melakukan proses pengurutan tersebut dapat digunakan berbagai macam


cara/metode, diantaranya:

2.8.1 Bubble Sort


Bubble Sort merupakan metode yang paling sederhana dan paling tidak
efisien,karena memerlukan waktu yang relatif lebih lama dibandingkan dengan
metodemetode yang lainnya. Konsep dasar dari Bubble sort ialah membandingkan
elemen yang sekarang degan elemen yang berikutnya, jika elemen sekarang lebih
besar daripada elemen berikutnya (untuk ascending), maka dilakukan proses
penukaran. Proses sorting dapat dimulai dari data awal atau data akhir.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.8.2 Selection Sort


Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil,
kemudian dilakukan penukaran dengan elemen ke-I. Secara ingkat, metode ini bisa
dijelaskan sebagai berikut. Pada langkah pertama, dicari data yang terkecil dari data
pertama sampai data terakhir. Kemudian data tersebut kita tukar dengan data
pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil
dibanding data lain. Pada langkah kedua, data terkecil kita cari mulai dari data kedua
sampai data terakhir. Data terkecil yang kita peroleh kita tukar dengan data kedua.
Demikian seterusnya sampai suluruh data terurut.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.8.3 Quick Sort


Metode ini dikembangkan oleh C.A.R Hoare. Secara garis besar metode ini
dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang mempunyai
N elemen. Kita pilih sembarang elemen dari data tersebut, bisanya 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 J+1 sampai ke N mempunyai nilai lebih besar dari X.
Sampai saat ini kita sudah mempunyai dua sub data (kiri dan kanan). Langkah
berikutnya diulang untuk setiap sub data. Contoh dari proses Sorting dengan
menggunakan metode Quick Sort .
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.8.4 Insertion Sort


Proses pengurutan dengan metode penyisipan langsung dapat dijelaskan sebagai
berikut : Data dicek satu per satu mulai dari yang kedua sampai dengan yang
terakhir. Apabila ditemukan data yang lebih kecil daripada data sebelumnya, maka
data tersebut disisipkan pada posisi yang sesuai. Akan lebih mudah apabila
membayangkan pengurutan kartu. Pertama-tama anda meletakkan kartu-kartu
tersebut di atas meja, kemudian melihatnya dari kiri ke kanan. Apabila kartu di
sebelah kanan lebih kecil daripada kartu di sebelah kiri, maka ambil kartu tersebut
dan sisipkan di tempat yang sesuai. Binary Insertion Sort (Metode Penyisipan
Biner) Metode ini merupakan pengembangan dari metode penyisipan langsung.
Dengan cara penyisipan langsung, perbandingan selalu dimulai dari elemen pertama
(data ke-0), sehingga untuk menyisipkan elemen ke i kita harus melakukan
perbandingan sebanyak i- 1 kali. Ide dari metode ini didasarkan pada kenyataan
bahwa pada saat menggeser data ke-i, data ke 0 s/d i-1 sebenarnya sudah dalam
keadaan terurut.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.8.5 Merge Sort


Metode penggabungan biasanya digunakan pada pengurutan berkas. Prinsip dari
metode penggabungan sebagai berikut : Mula-mula diberikan dua kumpulan data
yang sudah dalam keadaan urut. Kedua kumpulan data tersebut harus dijadikan satu
table sehingga dalam keadaan urut.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

2.8. Prims and Kruskals Algorithm


2.10.1 Prim
Algoritma Prim adalah sebuah algoritma dalam teori graf untuk mencari pohon
rentang minimum untuk sebuah graf berbobot yang saling terhubung. Ini berarti
bahwa sebuah himpunan bagian dari edge yang membentuk suatu pohon yang
mengandung node, di mana bobot keseluruhan dari semua edge dalam pohon
diminimalisasikan. Bila graf tersebut tidak terhubung, maka graf itu hanya memiliki
satu pohon rentang minimum untuk satu dari komponen yang terhubung.

Langkah-langkahnya adalah sebagai berikut:


1. buat sebuah pohon yang terdiri dari satu node, dipilih secara acak dari graf
2. buat sebuah himpunan yang berisi semua cabang di graf
3. loop sampai semua cabang di dalam himpunan menghubungkan dua node di
pohon
4. hapus dari himpunan satu cabang dengan bobot terkecil yang menghubungkan
satu node di pohon dengan satu node di luar pohon
5. hubungkan cabang tersebut ke pohon

Contoh:

Ini adalah graf berbobot awal. Graf ini bukan


pohon karena ada circuit. Nama yang lebih tepat
untuk diagram ini adalah graf atau jaringan.
Angka-angka dekat garis penghubung adalah
bobotnya. Belum ada garis yang ditandai, dan
node D dipilih secara sembarang sebagai titik
awal.

Node kedua yang dipilih adalah yang terdekat ke


D: A jauhnya 5, B 9, E 15, dan F 6. Dari
keempatnya, 5 adalah yang terkecil, jadi kita
tandai node A dan cabang DA.

Node berikutnya yang dipilih adalah yang


terdekat dari D atau A. B jauhnya 9 dari D dan 7
dari A, E jauhnya 15, dan F 6. 6 adalah yang
terkecil, jadi kita tandai node F dan cabang DF.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Algoritma ini berlanjut seperti di atas. Node B,


yang jauhnya 7 dari A, ditandai. Di sini, cabang
DB ditandai merah, karena baik node B dan node
D telah ditandai hijau, sehingga DB tidak dapat
digunakan.

Dalam hal ini, kita dapat memilih antara C, E,


dan G. C jauhnya 8 dari B, E 7 dari B, dan G 11
dari F. E yang terdekat, jadi kita tandai node E
dan cabang EB. Dua cabang lain ditandai merah,
karena kedua node yang terhubung telah
digunakan.

Di sini, node yang tersedia adalah C dan G. C


jauhnya 5 dari E, dan G 9 dari E. C dipilih, jadi
ditandai bersama dengan cabang EC. Cabang BC
juga ditandai merah.

Node G adalah satu-satunya yang tersisa.


Jauhnya 11 dari F, dan 9 dari E. E lebih dekat,
jadi kita tandai cabang EG. Sekarang semua node
telah terhubung, dan pohon rentang minimum
ditunjukkan dengan warna hijau, bobotnya 39.

2.10.2 Kruskal
Algoritma Kruskal adalah algoritma untuk mencari pohon merentang minimum
secara langsung didasarkan pada algoritma MST (Minimum Spanning Tree) umum.
Pada algoritma Kruskal sisi-sisi di dalam graf diurut terlebih dahulu berdasarkan
bobotnya dari kecil ke besar. Sisi yang dimasukkan ke dalam himpunan T adalah sisi
graf G sedemikian sehingga T adalah pohon. Pada keadaan awal, sisi-sisi sudah
diurut berdasarkan bobot membentuk hutan (forest). Hutan tersebut dinamakan hutan
merentang (spanning forest). Sisi dari graf G ditambahkan ke T jika tidak
membentuk sirkuit di T. Perbedaan prinsip antara algoritma Prim dan Kruskal adalah
jika pada algoritma Prim sisi yang dimasukkan ke dalam T harus bersisian dengan
sebuah simpul di T, maka pada algoritma Kruskal sisi yang dipilih tidak perlu
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

bersisian dengan simpul di T asalkan penambahan sisi tersebut tidak membentuk


sirkuit. Langkah-langkah dalam algoritma Kruskal adalah sebagai berikut:
1. Lakukan pengurutan terhadap setiap sisi di graf mulai dari sisi dengan bobot
terkecil sampai terbesar.
2. Pilih sisi yang mempunyai bobot minimum yang tidak membentuk sirkuit di
pohon. Tambahkan sisi tersebut ke dalam pohon.

AD dan CE adalah tepi terpendek, dengan


panjang 5, dan AD telah dipilih.

CE sekarang tepi terpendek yang tidak


membentuk suatu siklus, dengan panjang 5,
sehingga disorot sebagai tepi kedua.

Tepi berikutnya, DF dengan panjang 6, disorot


menggunakan banyak metode yang sama.

Tepi berikutnya terpendek adalah AB dan BE,


baik dengan panjang 7. AB dipilih secara
sewenang-wenang, dan disorot. Tepi BD telah
disorot dalam warna merah, karena di sana sudah
ada jalur (hijau) antara B dan D, sehingga akan
membentuk siklus (ABD) jika dipilih.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Proses terus menyorot-terkecil berikutnya tepi,


BE dengan panjang 7. Banyak tepi lebih disorot
dalam warna merah pada tahap ini: BC karena
akan membentuk loop SM, DE karena akan
membentuk loop Deba, dan FE karena akan
membentuk FEBAD.

Akhirnya, proses selesai dengan tepi EG panjang


9, dan pohon merentang minimum ditemukan.

2.9. Shortest Paths


Shortest path adalah pencarian rute atau path terpendek antara node yang ada pada
graph, biaya (cost) yang dihasilkan adalah minimum. Sedangkan menurut Dublin (2009)
menemukan jalan terpendek dari total panjang jalan antara dua node grafik diarahkan
dengan panjang berkaitan dengan tepi masing-masing. Dalam pencarian lintasan terpendek
masalah yang dihadapi adalah mencari lintasan mana yang akan dilalui sehingga didapat
lintasan yang paling pendek dari satu verteks ke verteks yang lain. Selama semester 3 ini,
salah satu algoritma yang telah diajarkan untuk menyelesaikan masalah shortest path adalah
algoritma Djikstra. Menurut Wikipedia, Algoritma Dijkstra adalah sebuah algoritma yang
dipakai dalam
memecahkan permasalahan jarak terpendek (shortest path problem) untuk sebuah graf
berarah (directed graph) dengan bobot-bobot sisi (edge weights) yang bernilai tak-negatif.

2.10. Algoritma Kompresi


Kompresi data adalah proses pengkodean informasi menggunakan bit atau information-
bearing unit yang lain yang lebih rendah daripada representasi data yang tidak terkodekan
dengan suatu system encoding tertentu. Secara umum, kompresi dapat diartikan dengan
mengecilkan ukuran, dalam hal ini adalah data. Tujuan dari kompresi data adalah untuk
memperkecil kebutuhan penyimpanan data, mempercepat pengiriman data dan memperkecil
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

kebutuhan bandwith. Sebuah teks yang menggunakan karakter yang cukup panjang, namun
dalam teks tersebut terdapat beberapa karakter yang sama, akan membutuhkan ruang data
yang besar pula. Maka dengan algoritma ini, ukuran data tersebut dapat diperkecil.

2.10.3 Huffman Code


Langkah dalam membentuk pohon Huffman:
1. hitung semua frekuensi kemunculan tiap karakternya.
2. membagi dua pohon menjadi frekuensi yang lebih kecil, kemudian hubungkan
pada sebuah akar. Akar tersebut kemudian dipisah kembali dan digabung
dengan akar yang berada di atasnya (akar baru).
3. proses ketiga yaitu proses rekursif dari proses kedua sehingga akar utama
pohon memiliki frenuensi bernilai 1.Inti dari algortima huffman adalah
menggunakan priority queue yang direkursif sehingga membentuk pohon
dengan kompleksitas waktu On(log n).

2.10.4 Hukum Shannon-Fano


Langkah algoritma Shannon-Fano:
1. Untuk daftar simbol-simbol tertentu, mengembangkan sebuah daftar yang
sesuai probabilitas atau frekuensi dihitung sehingga setiap simbol frekuensi
relatif kejadian diketahui.
2. Menyortir daftar simbol-simbol sesuai dengan frekuensi, dengan simbol-simbol
yang paling sering terjadi di sebelah kiri dan yang paling umum di sebelah
kanan.
3. Membagi daftar menjadi dua bagian, dengan total frekuensi dihitung dari kiri
setengah menjadi seperti dekat dengan jumlah yang tepat mungkin.
4. Kiri setengah dari daftar ditetapkan angka biner 0, dan hak diberikan setengah
digit 1. Ini berarti bahwa kode untuk simbol-simbol pada semester pertama
semua akan dimulai dengan 0, dan aturan-aturan di paruh kedua akan semua
mulai dengan 1.
5. Rekursif menerapkan langkah 3 dan 4 untuk masing-masing dari dua bagian,
membagi kelompok dan menambahkan kode bit sampai setiap simbol telah
menjadi kode yang sesuai daun di pohon.

2.11. Enkripsi Data


Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Enkripsi adalah suatu metode yang digunakan untuk mengkodekan data sedemikian
rupa sehingga keamanan informasinya terjaga dan tidak dapat dibaca tanpa di dekripsi
(kebalikan dari
proses enkripsi) dahulu. Encryption berasal dari bahasa yunani kryptos yang artinya
tersembunyi atau rahasia.

2.11.1 Caesar Shiper


Dalam kriptografi, sandi Caesar, atau sandi geser, kode Caesar atau Geseran
Caesar adalah salah satu teknik enkripsi paling sederhana dan paling terkenal. Sandi ini
termasuk sandi substitusi dimana setiap huruf pada teks terang (plaintext) digantikan
oleh huruf lain yang memiliki selisih posisi tertentu dalam alfabet. Misalnya, jika
menggunakan geseran 3, W akan menjadi Z, I menjadi L, dan K menjadi N sehingga
teks terang "wiki" akan menjadi "ZLNL" pada teks tersandi. Langkah enkripsi oleh
sandi Caesar sering dijadikan bagian dari penyandian yang lebih rumit, seperti sandi
Vigenre
Cara kerja sandi ini dapat diilustrasikan dengan membariskan dua set alfabet; alfabet
sandi disusun dengan cara menggeser alfabet biasa ke kanan atau ke kiri dengan angka
tertentu (angka ini disebut kunci). Misalnya sandi Caesar dengan kunci 3, adalah
sebagai berikut:

Alfabet Biasa : ABCDEFGHIJKLMNOPQRSTUVWXYZ


Alfabet Sandi : DEFGHIJKLMNOPQRSTUVWXYZABC

Untuk menyandikan sebuah pesan, cukup mencari setiap huruf yang hendak disandikan
di alfabet biasa, lalu tuliskan huruf yang sesuai pada alfabet sandi. Untuk memecahkan
sandi tersebut gunakan cara sebaliknya. Contoh penyandian sebuah pesan adalah
sebagai berikut.

Teks Biasa : kirim pasukan ke sayap kiri


Teks Tersandi : NLULP SDVXNDQ NH VDBDS NLUL

2.11.2 Vigenere Chiper


Sandi Vigenre adalah metode menyandikan teks alfabet dengan menggunakan
deretan sandi Caesar berdasarkan huruf-huruf pada kata kunci. Sandi Vigenre
merupakan bentuk sederhana dari sandi substitusi polialfabetik. Kelebihan sandi ini
dibanding sandi Caesar dan sandi monoalfabetik lainnya adalah sandi ini tidak begitu
rentan terhadap metode pemecahan sandi yang disebut analisis frekuensi.

Rumus enkripsi vigenere cipher :

atau
Ci = ( Pi + Ki ) 26 kalau hasil penjumlahan Pi dan Ki lebih dari 26

Rumus dekripsi vigenere cipher :

atau
Pi = ( Ci Ki ) + 26 kalau hasil pengurangan Ci dengan Ki minus
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Keterangan :
Ci = nilai desimal karakter ciphertext ke-i
Pi = nilai desimal karakter plaintext ke-i
Ki = nilai desimal karakter kunci ke-i
Nilai desimal karakter: A=0 B=1 C=2 ... Z=25
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

BAB III
Penutup

3.1. Kesimpulan
Array adalah suatu variabel yang terdiri dari sekumpulan data dimana data-data tersebut
mempunyai tipe data yang sama. Setiap data disimpan dalam alamat memori yang berbeda-
beda dan disebut dengan elemen array. Setiap elemen mempunyai nilai indeks sesuai dengan
urutannya. Stack adalah suatu tumpukan atau kumpulan data yang menggunakan konsep LIFO
(last in first out). Elemen terakhir yang di letakan adalah elemen pertama yang akan diambil.
Konsepnya sama seperti tumpukan benda yang biasa kita temukan dalam kehidupan sehari-
hari.

Queue merupakan suatu struktur data linear. Konsepnya hampir sama dengan Stack,
perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang bebeda.
Penghapusan dilakukan pada bagian depan (front) dan penambahan berlaku pada bagian
belakang (Rear). Fungsi rekursif adalah suatu fungsi yang memanggil dirinya
sendiri. Pada beberapa persoalan, fungsi rekursif sangat berguna karena
mempermudah solusi. Namun demikian, fungsi rekursif juga memiliki
kelemahan. Graph adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang
dihubungkan dengan sekumpulan garis (sisi). Graph dapat digunakan untuk merepresentasikan
objek-objek diskrit dan hubungan antara objek-objek tersebut. Representasi visual dari graph
adalah dengan menyatakan objek sebagai noktah, bulatan atau titik (Vertex), sedangkan
hubungan antara objek dinyatakan dengan garis (Edge).

Sorting bisa didefinisikan sebagai suatu proses pengurutan data yang sebelumnya
disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta
pengimplementasiannya lebih mudah. Pada umumnya terdapat dua jenis pengurutan, yaitu
Ascending (Naik) dan Descending (Turun). Kompresi data adalah proses pengkodean informasi
menggunakan bit atau information-bearing unit yang lain yang lebih rendah daripada
representasi data yang tidak terkodekan dengan suatu system encoding tertentu. Secara umum,
kompresi dapat diartikan dengan mengecilkan ukuran, dalam hal ini adalah data. Enkripsi
adalah suatu metode yang digunakan untuk mengkodekan data sedemikian rupa sehingga
keamanan informasinya terjaga dan tidak dapat dibaca tanpa di dekripsi (kebalikan dari proses
enkripsi) dahulu. Encryption berasal dari bahasa yunani kryptos yang artinya tersembunyi atau
rahasia.

3.2. Kritik dan Saran


Dalam penyusunan makalah ini, penulis menyadari bahwa masih terdapat banyak
kekurangan dan kesalahan, sehingga segala kritik dan saran yang bersifat membangun akan
kami terima dengan senang hati.
Kelas B-1 | Asisten Laboratorium: Ruswan Efendi
Praktikum Struktur Data dan Algoritma | S-1 Teknologi Informasi | Universitas Sumatera Utara | 2016

Daftar Pustaka

https://wikimedia.org/api/rest_v1/media/math/render/svg/527bbbcf03d10d7ba8256a14188
9b6fcbc4f6708
https://id.wikipedia.org/wiki/Sandi_Vigen%C3%A8re
https://id.wikipedia.org/wiki/Sandi_Caesar
https://id.wikipedia.org/wiki/Algoritma_Dijkstra
https://en.wikipedia.org/wiki/Kruskal's_algorithm
https://id.wikipedia.org/wiki/Algoritma_Prim
https://asmauna.wordpress.com/2013/04/04/minimum-spaning-tree-algoritma-kruskal-dan-
algoritma-prim/
https://furqonubd.wordpress.com/category/struktur-data-data-structures/
https://en.wikipedia.org/wiki/Binary_search_tree
https://www.academia.edu/11495212/Modul_Struktur_Data_Lengkap
http://elektro.um.ac.id/wp-content/uploads/2016/09/Modul-7-Tree-2015.pdf
http://arna.lecturer.pens.ac.id/Modul_ASD/11.%20Tree.pdf
http://entin.lecturer.pens.ac.id/Struktur%20Data%20&%20Algoritma/buku/Data
%20Structure%20-%20Bab%201.pdf

Anda mungkin juga menyukai