Makalah Struktur Data
Makalah Struktur Data
PENDAHULUAN
A. LATAR BELAKANG
B. RUMUSAN MASALAH
1. Penjelasan tentang data dan struktur data.
2. Penjelasan tentang String.
3. Penjelasan tentang Array.
4. Penjelasan tentang Rekursi.
5. Penjelasan tentang Searching.
6. Penjelasan tentang Sorting
7. Penjelasan tentang Linked List.
8. Penjelasan tentang Stack.
9. Penjelasan tentang Queue.
10. Penjelasan tentang Tree.
11. Penjelasan tentang Graph.
1
BAB II
PEMBAHASAN
1. Pengertian Data
Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan
tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk
tulisan, suara, gambar, sinyal atau simbol.
Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan dalam
bentuk konstanta / variable. Konstanta digunakan untuk menyatakan nilai tetap
sedangkan variable digunakan dalam program untuk menyatakan nilai yang dapat
berubah-ubah selang eksekusi berlangsung.
1. Tipe data adalah jenis atau macam data di dalam suatu variable
dalam bahasa pemrograman.
2. Objek data mengacu kumpulan elemen, D (domain).
3. Representasi data : Suatu mapping dari struktur data ‘d’ ke suatu
set ke struktur data ‘e’ (d===e) misal bolean di representasikan dalam
0 dan 1.
4. Struktur data biasa dipakai untuk mengelompokan beberapa
informasi yang terkait menjadi sebuah kesatuan.
2
Dalam teknik pemrograman,struktur data berarti tata letak yang berisi kolom-
kolom data,baik itu kolom yang tampak oleh pengguna (user) ataupun kolom yang
hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh
pengguna.
B. STRING
1. Pengertian String dalam Bahasa
Pemrograman
3
apapun dari keyboard Anda ke variabel tipe karakter. Sekarang, mari kita
mempertimbangkan situasi di mana kita perlu menyimpan lebih dari satu karakter
dalam variabel. Kita telah melihat bahwa pemrograman C tidak memungkinkan
untuk menyimpan lebih dari satu karakter dalam variabel tipe karakter. Jadi
pernyataan berikut tidak valid dalam pemrograman C dan menghasilkan kesalahan
sintaks.
Kita juga telah melihat bagaimana menggunakan konsep array untuk menyimpan
lebih dari satu nilai tipe data sejenis dalam sebuah variabel. Berikut adalah sintaks
untuk menyimpan dan mencetak lima angka dalam array tipe int.
4
string sebagai tipe data built-in seperti tipe data lainnya. Ini berarti Anda dapat
menentukan string secara langsung, bukan mendefinisikannya sebagai array
karakter.
C. ARRAY
1. Pengertian Array
Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan
data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari
awal. Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah
mempunyai tipe data yang sama.
2. Karakteristik Array
a. Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)
b. Mempunyai tipe data sama (bersifat homogen)
c. Dapat diakses secara acak.
3. Jenis Array
a. Array Dimensi Satu
Deklarasi : Type_Data Nama_Variabel [index]
(Index Array)
i=1
5
Rumus untuk menentukan jumlah elemen dalam array adalah :
Rumus : @A[i] = B + (i – 1) * L
(Index Array)
i=1
Terbagi dua cara pandang (representasi) yang berbeda :Secara kolom per
kolom (coloumn major order / CMO)
6
@M[i][j] = M[0][0] + {(i – 1) * N + (j – 1)} * L
Keterangan :
@M[i][j] = Posisi array yang di cari, M[0][0 = Posisi alamat awal index
array, i = Baris, j = Kolom, L = Ukuran memory type data, K = Banyaknya
elemen per kolom, N = Banyaknya elemen per baris.
(Index Array)
i=1
7
Operasi terhadap array sebagai keseluruhan
Operasi penciptaan
Operasi penghancuran
Oparasi pemrosesan traversal
Operasi pencarian (table look-up)
Operasi sorting
8
penambahan dan pengurangan terjaditerus-menerus, maka
representasi statis.
D. REKURSI
1. Rekursi Dasar
Rekursi mempunyai arti suatu proses yang bias memanggil dirinya sendiri.
Dalam sebuah rekursi sebenarnya tekandung pengertian sebuah prosedur atau
fungsi. Perbedaannya adalah bahwa rekursi bisa memanggil dirinya sendiri, kalau
prosedur atau fungsi harus diipanggil melalui pemanggil prosedur atau fungsi.
n! = (n)(n-1)(n-2) … (1)
9
(n-1)! adalah sama dengan n!, sehingga (n-1)! adalah n-1dikalikan dengan (n-2)!,
dan (n-2)! adalah n-2 dikalikan dengan (n-3)! dan seterusnya sampai dengan n =
1, kita menghentikan penghitungan n! Cara rekursif untuk permasalahan ini,
secara umum dapat kita detailkan sebagai berikut:
F(3)=3x F(2) .
F(2)=2x F(1) .
F(3)=(3)x(2) .
F(4)=(4)x (6) .
10
24 rekursi lengkap
int fact_rec(int n)
/************************************************************
************************************************************/
if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return 1;
11
Program 1 Fungsi Implementasi dari Proses Komputasi Faktorial secara
Rekursif
Jika kita perhatikan dari fungsi rekursi di atas, maka kita lihat adanya
kondisi terminal yang kita cantumkan dalam program tersebut, yaitu jika n = 0
atau n = 1. Hal ini harus kita lakukan dalam setiap fungsi rekursif. Jika tidak,
maka eksekusi tidak akan pernah berhenti. Akibatnya memori tumpukan akan
habis dan komputer akan hang.
Selain itu kita dapat membandingkan proses rekursi di atas dengan proses
iteratif, seperti di bawah ini:
int temp;
/************************************************************
************************************************************
/ temp = 1; if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return 1;
12
}
2. Rekursi Tail
Sebuah proses rekursi dikatakan rekursi tail jika pernyataan terakhir yang
akan dieksekusi berada dalam tubuh fungsi dan hasil yang kembali pada fungsi
tersebut bukanlah bagian dari fungsi tersebut. Ciri fungsi rekursi tail adalah fungsi
tersebut tidak memiliki aktivitas selama fase balik. Ciri ini penting, karena
sebagian besar kompiler modern secara otomatis membangun kode untuk menuju
pada fase tersebut.
Untuk memahami bagaimana sebuah rekursi tail bekerja, kita akan kembali
membahas tentang penghitungan komputasi dari faktorial secara rekursi. Sebagai
langkah awal, akan sangat membantu jika kita memahami alasan dalam definisi
awal yang bukan rekursi tail. Dimana dalam definisi tersebut, penghitungan n!
adalah dengan mengalikan n dengan (n-1)! dalam setiap aktivitas, yang mana hal
tersebut terus diulang dari n = n –1 sampai n = 1. Definisi ini bukanlah rekursi tail
karena nilai yang dikembalikan dalam setiap aktivitas bergantung pada perkalian
n dengan nilai yang dikembalikan oleh aktivitas sesudahnya. Oleh karena itu,
pencatatan aktivitas dari masing-masing pemanggilan harus diingat dalam stack
sampai nilai-nilai yang dikembalikan dalam aktivitas-aktivitas sesudahnya telah
terdefinisi. Sekarang marilah kita melihat bagaimana rekursi tail didefinisikan
untuk menghitung n!, yang secara formal kita definisikan sebagai berikut:
13
a jika n=0, n=1
Pada definisi ini digunakan parameter kedua, yaitu a, yang mana merupakan
nilai utama dari penghitungan faktorial secara rekursif. Hal ini mencegah kita
untuk mengalikan nilai yang dikembalikan dalam setiap aktivitas dengan n.
Dalam masingmasing pemanggilan rekursi kita mendefinisikan a = na dan n = n –
1. Kita melanjutkan sampai n = 1, sebagai kondisi terminal. Dalam gambar 2
menggambarkan proses komputasi 4! dengan menggunakan rekursi tail.
Perhatikan bahwa di sana tidak ada aktivitas selama fase balik.
F(2,12)=F(1,24) .
24 fase balik
rekursi lengkap
/************************************************************
14
* Fungsi Rekursi Tail *
******************************************************
*******/ int facttail(int n, int a)
/************************************************************
************************************************************/
if (n < 0)
return 0;
else if (n == 0)
return 1;
else if (n == 1)
return a;
else
return facttail(n-1,n*a);
E. SEARCHING
Dalam pencarian data juga terdapat beberapa jenis algoritma, tujuan dari
adanya banyak algoritma yang di temukan adalah karena memiliki keuntungan-
keuntungan tersendiri, seperti lebih cepatnya bila mengolah data yang jumlahnya
lebih dari juta data, ada yang lebih efisien dengan jumlah kurang dari jutaan. serta
15
ada pula yang tidak perlu untuk mengurutkan data terlebih dahulu, tetapi
memakan waktu lebih lama.
1. Line Search
2. Binnary Search
teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di
urutkan, karena teknik ini melakukan pencarian dengan mencari data pada index
yang tengah, apakah lebih besar/lebih kecil/sama dengan. bila hasil sama dengan
maka nilai yang di cari telah di temukan. bila lebih kecil/lebih besar maka akan di
buang setengah data dari yang salah, dan mencari dari indeks yang tengah dari
sisanya. demikian samapi data ditemukan atau tidak di temukan.
3. Fibonachi Search
Teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di
urutkan, karena teknik ini melakukan pencarian dengan mencari data melalui pola
bilangan fibonachi. Bila pada binnary search pembandingnya adalah nilai pada
index tengahnya jumlah data, pada fibonachi search berbeda yaitu: bilangan
fibonachi, yang bilangan fibonachinya terdekat dengan jumlah data tetapi tidak
lebih besar dari jumlah data yang akan di proses. Bilangan fibonachi itu di
jumlahkan dengan batas paling awal data dikurangi 1. Contohnya: jumlah data
yang akan di cari adalah 15, maka batas paling bawah adalah 1 dan batas paling
akhir=15 dan index pembandingnya= 13(nilai awal + dijumlahkan Bilangan
fibonachi – 1) karena bilangan fibonachi terdekat dengan 15 (data ke 1- data ke
16
15) adalah 13 (1,2,3,5,8,13,21,34…..), bila data yang di cari lebih besar dari
bilangan indeks ke tengahnya maka. batas paling bawah= tetap, batas akhir nilai
tengah-1, bila data yang dicari lebih kecil maka batas bawah = nilai tengah +1 dan
batas akhir tetap, sedangkan nilai tengahnya memakai fungsi tadi.
F. SORTING
Dalam penyelesaian suatu masalah pasti terdapat banyak cara atau solusi-
solusi yang dapat dilakukan, seperti halnya pembuatan program memiliki banyak
tehnik atau algoritma yang dapat di gunakan salah satunya untuk kebutuhan
sorting atau pengurutan kumpulan data-data. terdapat 4 algoritma atau tehnik
dalam melakukan sorting.
Straight Selection Sort. teknik sorting ini dibuat dengan cara melakukan
pengecek’an 1 persatu, bila kita akan mengurutkan secara ascending maka
kita lakukan pengecek’an nilai tempat yang pertama (index pertama pada
array) bila lebih kecil daripada index berikutnya (index 1 dengan index 2,
index 1 dengan index 3, ….. index 1 dengan index terakhi) maka kita
lakukan pertukaran nilai pada array index tersebut. proses ini dilakukan
terus menerus sampai pada pengecekan index terakhir – 1 dengan nidex
terakhir.
17
pertukaran nilai lebih sedikit, hanya jumlah data – 1 pertukaran. jadi waktu
untuk melakukan proses sorting lebih cepat.
Bubble Sort. Teknik ini dilakukan degan pola membawa nilai terbesar
menjadi nilai index terakhir array. jadi sistem ini melakukan pengecekan
nilai 1 dengan 2, lalu 2 dengan 3 samapai dengan data terakhir, bila nilai
index yang lebih kecil lebih besar maka akan dilakukan pertukaran. proses
ini dilakuan hingga jumlah data – 1.
Modified Bubble Sort. Teknik ini dilakukan degan pola membawa nilai
terbesar menjadi nilai index terakhir array. Jadi sistem ini melakukan
pengecekan nilai 1 dengan 2, lalu 2 dengan 3 samapai dengan data
terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan
pertukaran. proses ini dilakuan hingga jumlah data dikurangi 1 atau
sampai program tidak melakukan pertukaran. jadi waktu untuk melakukan
proses sorting lebih cepat.
G. LINKED LIST
1. Pengertian Linked List
18
2. Single Linked List
Pada gambar di atas, tampak bahwa sebuah data terletak pada sebuah lokasi
memori area. Tempat yang disediakan pada satu area memori tertentu untuk
menyimpan data dikenal dengan sebutan node atau simpul. Setiap node memiliki
pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian,
dengan demikian hanya diperlukan sebuah variable pointer. Susunan berupa
untaian semacam ini disebut Single Linked List (NULL memiliki nilai khusus
yang artinya tidak menunjuk ke mana-mana, biasanya Linked List pada titik
akhirnya akan menunjuk ke NULL).
Pembuatan Single Linked List dapat menggunakan 2 metode:
• LIFO (Last In First Out), aplikasinya: Stack (tumpukan)
• FIFO (First In First Out), aplikasinya: Queue (antrean)
Salah satu kelemahan Single Linked List adalah pointer hanya dapat
bergerak satu arah saja, maju/mundur, kanan/kiri, sehingga pencarian data pada
Single Linked List hanya dapat bergerak dalam satu arah saja. Untuk mengatasi
kelemahan tersebut, dapat menggunakan metode Double Linked List. Linked List
ini dikenal dengan nama Linked List berpointer ganda atau Double Linked List.
19
Merupakan Double Linked List yang simpul terakhirnya menunjuk ke
simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir,
sehingga membentuk suatu lingkaran.
H. STACK
1. Pengertian Stack
20
penjajahan balik (backtrack). Elemen-elemen di dalam tumpukan dapat bertipe
integer, real, record dalam bentuk sederhana atau terstruktur.
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO
(Last In First Out), benda yang terakhir masuk dalam stack akan menjadi benda
pertama yang dikeluarkan dari stack. Tumpukan disebut juga “Push Down Stack”
yaitu penambahan elemen baru (PUSH)ndan penghapusan elemen dari
tumpukann(POP). Contoh pada PDA (Push Down Automaton). Sistem pada
pengaksesan pada tumpukan menggunakn system LIFO (Last In First Out),
artinya elemen yang terakhir masuk itu yang akan pertama dikeluarkan dari
tumpukan (Stack). Ilustrasi tumpukan (Stack) dapat digambarkan seperti
tumpukan CD atau tumpukan sate. Stack merupakan suatu susunan koleksi data
dimana dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data,
yang disebut dengan Top Of Stack.
Sebelum struktur data tumpukan ini bisa digunakan, harus dideklarasikan
dahulu dalam kamus data. Ada beberapa cara pendeklarasian struktur data ini,
salah satunya dengan menggunakan tata susunan linear (larik) dan sebuah
variable, yang dikemas dalam tipe data record. Stack (tumpukan) adalah struktur
data bertipe record yang terdiri dari field elemen, bertipe larik/array dengan indek
dari 1 sampai dengan MaksTum (Maksimum Tumpukan), atas, bertipe interger
berkisar dari 0 (saat kosong) sampai dengan MaksTum (Maksimum Tumpukan).
Operasi yang sering diterapkan pada struktur data Stack (Tumpukan) adalah
Push dan Pop. Operasi – operasi yang dapat diterapkan adalah sebagai berikut :
21
d. Create Stack : membuat Tumpukan baru S, dengan jumlah elemen
kosong.
e. MakeNull : mengosongkan Tumpukan S, jika ada elemen maka semua
elemen dihapus.
f. IsEmpty : fungsi yang digunakan untuk mengecek apakah Stack sudah
kosong.
g. 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.
3. Macam–Macam Stack
a. Stack dengan Array
Sesuai dengan sifat stack, pengambilan atau penghapusan elemen
dalam stack harus dimulai dari elemen teratas.
b. Double Stack dengan Array
Metode ini adalah teknik khusus yang dikembangkan untuk
menghemat pemakaian memori dalam pembuatan dua stack dengan
array. Intinya adalah penggunaan hanya sebuah array untuk
menampung dua stack.
I. QUEUE
1. Pengertian Queue
22
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. Queue jika diartikan secara harfiah, queue berarti antrian. Queue
merupakan salah satu contoh aplikasi dari pembuatan double linked list yang
cukup sering kita temui dalam kehidupan sehari-hari, misalnya saat anda
mengantri diloket untuk membeli tiket.
Istilah yang cukup sering dipakai apabila seseorang masuk dalam sebuah
antrian adalah enqueue. Sedang istilah yang sering dipakai bila seseorang keluar
dari antrian adalah dequeue.
J. TREE
1. Pengertian Tree
Tree 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. Tree juga adalah suatu
graph yang acyclic, simple, connected yang tidak mengandung loop.
23
Sebuah binary search tree (bst) adalah sebuah pohon biner yang boleh
kosong, dan setiap nodenya harus memiliki identifier/value. Value pada semua
node subpohon sebelah kiiri adalah selalu lebih kecil dari value dari root,
sedangkan value subpohon di sebelah kanan adalah sama atau lebih besar dari
value pada root, masing-masing subpohon tersebut (kiri dan kanan) itu sendiri
adalah juga binary search tree.
Struktur data bst sangat penting dalam struktur pencarian, misalkan dalam
kasus pencarian dalam sebuah list, jika list sudah dalam keadaan terurut maka
proses pencarian akan semakin cepat, jika kita menggunakan list contigue dan
melakukan pencarian biner,akan tetapi jika kita ingin melakukan perubahan isi
list (insert atau delete), menggunakan list contigue akan sangat lambat, karena
prose insert dan delete dalam list contigue butuh memindahkan linked-list, yang
untuk operasi insert atau delete tinggal mengatur- atur pointer,akan tetapi pada n-
linked list, kita tidak bisa melakukan pointer sembarangan setiap saat, kecuali
hanya satu kali dengan kata lain hanya secara squential.
Binary Tree merupakan salah satu bentuk struktur data tidak linear yang
menggambarkanhubungan 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 ( disebut subtree). Dalam
tree terdapat jenis-jenis tree yang memiliki sifat khusus, diantaranya adalah binary
tree.
Binary tree adalah suatu tree dengan syarat bahawa tiap node (simpul)
hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus
terpisah. Tiap node dalam binary treee boleh memiliki paling banyak dua child
(anak simpul), secara khusus anaknya dinamakan kiri dan kanan.
24
Sebuah pohon biner adalah grafik asiklis yang terhubung dimana setiap
tingkatan dari susut tidak lebih dari 3. Ini dapat ditunjukkan bahwa dalam pohon
biner manapun, terdapat persis dua atau lebih simpul dengan tingkat satu daripada
yang terdapat dengan tingkat tiga, tetapi bisa terdapat angka apa saja dari simpul
dengan tingkat dua. Sebuah pohon biner berakar merupakan sebuah grafik yang
mempunyai satu dari sudutnya dengan tingkat tidak lebih dari dua sebagai akar.
Dengan akar yang dipilih, setiap sudut akan memiliki ayah khusus, dan
diatas dua anak bagaimanapun juga, sejauh ini terdapat keterbatasan informasi
untuk membedakan antara anak kiri atau kanan. Jika kita membuang keperluan
yang tak terkoneksi, membolehkan bermacam koneksi dalam komponen di
grafik, kita memanggil struktur sebuah hutan.
25
Kadang-kadang itu juga memuat sebuah referensi ke ayahnya yang khas.
Jika sebuah simpul mempunyai kurang dari dua anak, beberapa penunjuk anak
diaatur kedalam nilai nol khusus atau kesebuah simpul sentinel.
Pohon biner dapat juga disimpan sebagai struktur data implisit dalam array,
dan jika pohon tersebut merupakan sebuah pohon biner lengkap, metode ini tidak
boros tempat. Dalam penyusunan yang rapat ini, jika sebuah simpul memiliki
indeks i, anaknya dapat ditemukan pada indeks ke-2i+1 dan 2i+2, meskipun
ayahnya (jika ada) ditemukan pada indeks lantai ((i-1)/2) (asumsikan akarnya
memiliki indeks kosong). Metode ini menguntungkan dari banyak penyimpanan
yang rapat dan memiliki referensi lokal yang lebih baik, teristimewa selama
sebuah preordeer traversal.
26
i. Size, Banyaknya node dalam suatu tree (contoh : gambar tree diatas
memiliki size = 8).
j. Height, Banyaknya tingkat/level dalam suatu tree (contoh : gambar
tree diatas memiliki height = 3).
k. Root (Akar), Node khusus dalam tree yang tidak memiliki predesesor
(Contoh : A)
l. Leaf (Daun), Node-node dalam tree yang tidak memiliki daun (contoh
: Node E,F,C,G,H)
m. Degree (Derajat), Banyaknya child yang dimiliki oleh suatu node
(contoh : Node A memiliki derajat 3, node B memiliki derajat 2)
4. Istilah pada Binary Tree
a. Pohon Biner Penuh (Full Binary Tree)
Semua simpul (kecuali daun) memiliki 2 anak dan tiap cabang
memiliki panjang ruas yang sama.
27
Dua pohon yang memiliki struktur yang sama tetapi informasinya
berbeda.
K. GRAPH
1. Pengertian Graph
Graph / Graf 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).
28
Graf merupakan suatu cabang ilmu yang memiliki banyak terapan. Banyak
sekali struktur yang bisa direpresentasikan dengan graf, dan banyak masalah yang
bisa diselesaikan dengan bantuan graf. Seringkali graf digunakan untuk
merepresentasikan suaru jaringan. Misalkan jaringan jalan raya dimodelkan graf
dengan kota sebagai simpul (vertex/node) dan jalan yang menghubungkan setiap
kotanya sebagai sisi (edge) yang bobotnya (weight) adalah panjang dari jalan
tersebut.
29
b. Edge
Adalah himpunan garis yang menghubungkan tiap node / vertex.
c. Adjacent
Adalah dua buah titik dikatakan berdekatan (adjacent) jika dua buah
titik tersebut terhubung dengan sebuah sisi. Adalah Sisi e3 = v2v3
insident dengan titik v2 dan titik v3, tetapi sisi e3 = v2v3 tidak
insident dengan titik v1 dan titik v4. Titik v1 adjacent dengan titik v2
dan titik v3, tetapi titik v1 tidak adjacent dengan titik v4.
d. Weight
Adalah Sebuah graf G = (V, E) disebut sebuah graf berbobot (weight
graph), apabila terdapat sebuah fungsi bobot bernilai real W pada
himpunan E,
W : E ® R, nilai W(e) disebut bobot untuk sisi e, " e Î E. Graf
berbobot tersebut dinyatakan pula sebagai G = (V, E, W). Graf
berbobot G = (V, E, W) dapat menyatakan
· V = himpunan kota-kota
· V = himpunan komputer
30
· E = himpunan jalur komunikasi langsung antar dua komputer
e. Path
Adalah Walk dengan setiap vertex berbeda. Contoh, P = D5B4C2A
Sebuah walk (W) didefinisikan sebagai urutan (tdk nol) vertex &
edge. Diawali origin vertex dan diakhiri terminus vertex. Dan setiap 2
edge berurutan adalah series. Contoh, W = A1B3C4B1A2.
f. Cycle
Adalah Siklus ( Cycle ) atau Sirkuit ( Circuit ) Lintasan yang berawal
dan berakhir pada simpul yang sama
3. Representasi Graf
Dalam pemrograman, agar data yang ada dalam graph dapat diolah, maka
graph harus dinyatakan dalam suatu struktur data yang dapat mewakili graph
tersebut. Dalam hal ini graph perlu direpresentasikan kedalam bentuk array dan
dimensi yang sering disebut matrix atau direpresentasikan dalam bentuk linked
list. Bentuk mana yang dipilih biasanya tergantung kepada efisiensi dan
kemudahan dalam membuat program.
31
BAB III
PENUTUP
A. KESIMULAN
B. SARAN
Menyadari bahwa makalah ini masih jauh dari kata sempurna, kedepannya
penyusun akan lebih fokus dan detail dalam menjelaskan tentang makalah di atas
dengan sumber-sumber yang lebih banyak yang tentunya dapat
dipertanggungjawabkan.
Untuk saran bisa berupa kritik atau saran terhadap penyusun juga bisa untuk
menanggapi terhadap kesimpulan dari bahasan makalah yang telah dijelaskan.
32
DAFTAR PUSTAKA
http://dyananyun.blogspot.com/2010/02/struktur-data-array.html
http://kintung05.wordpress.com/2008/11/23/pengertian-struktur-data/
http://www.nusinau.com/pengertian-struktur-data-2/
http://www.nusinau.com/pengenalan-array-dan-string/
http://strukturdata18.blogspot.com/2013/05/makalah-struktur-dar.html
http://www.sistem-informasi.xyz/2017/09/pengertian-string-dalam-bahasa.html
https://id.scribd.com/document/370433685/Makalah-Fungsi-Dan-Rekursi
https://andikafisma.wordpress.com/teknik-sorting-dan-teknik-searching/
https://www.slideshare.net/Fajar_Sany/linked-list-dalam-struktur-data?
from_action=save
https://furqonubd.wordpress.com/2013/05/20/stack-and-queue/
http://t4urusboy08.blogspot.com/
33