pembaca. Namun terlepas dari itu, kami memahami bahwa buku ini masih
jauh dari kata sempurna, sehingga kami sangat mengharapkan kritik serta
Penulis
ii
Daftar Isi
iii
Bab 4 Rekursif ..................................................................................... 40
4.1 Defenisi Rekursif ................................................................ 40
4.2 Perbandingan Rekursif dengan Iteratif .............................. 43
4.3 Kesimpulan ........................................................................ 47
Bab 5 Searching .................................................................................. 48
5.1 Defenisi Searching ............................................................. 48
5.2 Metode Pencarian Beruntun .............................................. 48
5.3 Metode Pencarian Bagi Dua .............................................. 52
5.4 Kesimpulan ........................................................................ 56
Bab 6 Sorting ........................................................................................ 58
6.1 Definisi Sorting ................................................................... 58
6.2 Pengurutan Gelembung (Bubble sort) ............................... 59
6.3 Pengurutan Maksimum/Minimum ...................................... 64
6.4 Pengurutan Seleksi ............................................................ 69
Bab 7 Linked List ................................................................................. 73
7.1 Defenisi Linked List ............................................................ 74
7.2 Operasi Dasar Pada Linked List. ....................................... 76
7.3 Menghapus Suatu Node Dari Linked List (Remove) .......... 77
7.4 Menyisipkan Suatu Node Ke Dalam Linked List ................ 79
Bab 8 Stack .......................................................................................... 92
8.1 Defenisi Stack .................................................................... 92
8.2 Operasi Pada Stack ........................................................... 94
8.3 Deklarasi Stack Dalam Cobol Dan Pascal ......................... 96
8.4 Aplikasi Stack .................................................................... 100
iv
Bab 9 Queue ......................................................................................... 118
9.1 Defenisi Queue .................................................................. 118
9.2 Operasi Dasar Pada Antrean .............................................. 122
9.3 Penyajian Dari Antrean ...................................................... 124
9.4 Deque ................................................................................ 129
9.5 Antrean Berprioritas ........................................................... 132
9.6 Penyajian One-Way List Dari Antrean Berprio-Ritas ......... 133
9.7 Penyajian Array Dari Antrean Berprioritas ......................... 138
9.8 Tambahan : Mesin Antrean ............................................... 141
Bab 10 Tree .......................................................................................... 147
10.1 Defenisi Tree (Pohon) ........................................................ 147
10.2 Pohon Binar (Binary Tree) ................................................. 149
10.3 Terminologi Pada Pohon Binar .......................................... 153
10.4 Pohon Binar Lengkap ........................................................ 156
10.5 Pohon-2 ............................................................................. 158
10.6 Pohon Ketinggian Seimbang ............................................. 160
10.7 Ketinggian Minimum Dan Maksimum Pohon Binar ............ 161
10.8 Penyajian Pohon Binar Dalam Memori .............................. 161
10.8.1 Penyajian Kait ..................................................... 162
10.8.2 Penyajian Sekuensial .......................................... 167
10.9 Penyajian Pohon Umum Secara Pohon Binar ................... 170
10.10 Notasi Prefix, Infix Dan Postfix Serta Traversal ................. 174
10.11 Pohon Cari Binar ............................................................... 186
10.12 Cari Dan Penyisipan Simpul Pohon Cari Binar .................. 191
10.13 Penghapusan Simpul Pohon Cari Binar ............................ 195
v
10.14 Pohon Cari Optimal ........................................................... 200
10.15 Lebih Lanjut Tentang Pohon Cari Optimal ......................... 209
10.16 Heap .................................................................................. 221
10.17 Heapsort ............................................................................ 227
vi
BAB 1
STRUKTUR DATA
1.1 Pengertian Struktur Data
berlangsung.
kesatuan.
letak data yang berisi kolom-kolom data, baik itu kolom yang
dan karakter.
Stack (Tumpukan)
Queue (Antrian)
Tree ( Pohon)
Graph ( Graf )
penerapannya.
linked list.
(lihat diatas)
Var
Jumlah : byte;
Begin
Jumlah := 32;
writeln(‘Fajar’);
readln;
End.
b. Real Karakter
Contoh Program:
writeln(‘Fajar’);
readln;
End.
c. Bolean
Contoh Program :
VAR
benar : BOOLEAN;
BEGIN
benar := TRUE;
WRITELN('benar = ',benar);
readln;
END.
d. String
Contoh Program :
var
begin;
s:= ‘Fajar’;
writeln(s);
readln;
end.
a. Array
tersebut.
Format :
Keterangan :
real, boolean, char atau string dan Type data skalar atau
subrange.
deklarasi konstanta.
Contoh sintaks:
BEGIN;
tabel[1,1] := 5;
tabel[1,2] := 7;
tabel[2,1] := 21;
tabel[2,2] := 18;
tabel[3,1] := 8;
tabel[3,2] := 7;
WRITELN(‘Fajar’);
READLN;
END.
program deklarasi;
uses crt;
var p : ^integer;
nilai : integer;
begin
clrscr;
nilai:=12;
p:=@nilai;
writeln(p^);
p^:=100;
writeln(‘Fajar’);
readln;
end.
var p : ^integer;
contoh :
sebagai berikut :
berikut.
Var
A1 : array [0 . . 9] of integer;
A2 : array [5 . . 15] of integer;
A3 : array [’a’ . . ’j’] of integer;
A4 : arrat [’A’ . . ’J’] of integer;
berikut.
bawah ini.
Var
A: array [1..100] of integer;
Begin
Var
A: array [1..100] of integer;
i : integer;
Begin
For i:= 1 to 100 do
Begin
A[1] := i;
end;
End.
Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real;
Begin
Writeln(’masukkan data ke-1 : ’); readln(n1);
Writeln(’masukkan data ke-2 : ’); readln(n2);
Writeln(’masukkan data ke-3 : ’); readln(n3);
Writeln(’masukkan data ke-4 : ’); readln(n4);
Writeln(’masukkan data ke-5 : ’); readln(n5);
Writeln(’masukkan data ke-6 : ’); readln(n6);
Writeln(’masukkan data ke-7 : ’); readln(n7);
Writeln(’masukkan data ke-8 : ’); readln(n8);
Writeln(’masukkan data ke-9 : ’); readln(n9);
Writeln(’masukkan data ke-10 : ’); readln(n10);
End.
array.
kunci type.
Type
Bilangan = array [1 . . 100] of integer;
Vokal = array [1 . . 5] of char;
Var
X : bilangan;
Vowel : vokal;
Const
A : array [1 . . 5] of char = (’A’ , ’B’ , ’C’ , ’D’ , ’E’);
Program ArrayKonstan;
Uses crt;
Const
Bulan : array [1 . . 12] of string =
(’Januari’, ’Februari’, ’Maret’, ’April’, ’Mei’, ’Juni’,
’Juli’, ’Agustus’,
’September’, ’Oktober’, ’Nopember’, ’Desember’);
var
noBulan : integer;
begin
Type
Bilangan = array[1..100] of integer;
Procedure inputArray[a:bilangan; N:integer);
Var
i : integer;
sebelumnya.
parameter.
Program ParamArray;
Uses crt;
Const max = 100;]type
Bilangan = array [1 . . max] of integer;
Procedure InputArray[A:bilangan; N:integer);
Var
i:integer;
Begin
Writeln (’Memasukkan data :’);
For i : 1 to N do
Write(’Masukkan nilai A[’, i, ’] : ’); readln(A[i]);
End;
Procedure OutputArray (A:bilangan; N:integer);
Var
i:integer;
begin
writeln(’Menampilkan data :’);
for i : 1 to N do
write (’A[’, i, ’] = ’, A[i]);
end;
var
sebagai berikut.
Memasukkan data :
Masukkan nilai A[1] : 10
Masukkan nilai A[2] : 20
Masukkan nilai A[3] : 30
Menampilkan data :
A[1] = 10
A[2] = 20
A[3] = 30
dimensi.
bawah ini.
kolom).
Program JumlahMatriks;
Uses crt;
Const
Jbaris = 2;
Jkolom = 3;
Type
Matriks23 = array [1 . . Jbaris, 1 . . Jkolom] of integer;
Var
A,B,C : Matriks23;
j, k : integer;
begin
clrscr;
{mengisikan matriks A}
writeln (’Matriks A’);
for j: = 1 to Jbaris do begin
Matriks A
A[1, 1] = 1
A[1, 2] = 2
A[1, 3] = 3
A[2, 1] = 4
A[2, 2] = 5
A[2, 3] = 6
Matriks B
B[1, 1] = 3
B[1, 2] = 2
B[1, 3] = 1
B[2, 1] = 6
B[2, 2] = 5
B[2, 3] = 4
Hasil Penjumlahan
C[1, 1] = 4
C[1, 2] = 4
C[1, 3] = 4
C[2, 1] = 10
C[2, 2] = 10
C[2, 3] = 10
bawah ini.
Program AksesArray3D;
Uses crt;
Const
xMaks = 2;
yMaks = 2;
zMaks = 2;
Type
Array3D = array [1 . . xMaks, 1 . . yMaks,1 . . zMaks] of
integer;
Var
A: Array3D;
i, j, k : integer;
begin
clrscr;
sebagai berikut:
A[1, 2, 2] = 4
Penutup
faktorial
kepada pemanggil.
menanganiactivation record.
logika program
Penjelesan Program :
tiga kali dan fungsi fibo(1) dihitung dua kali. Hal ini
Hasil Running
Penjelasan Program
dihitung nilai dari deret ke-n, kemudian nilai dari deret n-1
4.3 Kesimpulan
Program CariBeruntun;
Uses crt;
Const
A : array [1 . . 5] of integer = (75, 73, 78, 81, 80);
Var
i, x, indeks : integer;
apakah nilai A[k] > x ataukah A[k] < x. Bila A[k] lebih besar
dari (1+14) div 2. Karena nilai pada indeks ke-7 (nilai 19)
lebih kecil dari nilai yang dicari (nilai 22), maka proses
berasal dari (8+4) div 2. Karena nilai pada indeks ke-11 (nilai
menjadi dua pada indeks ke-9, yang berasal dari (8+10) div 2.
Karena nilai pada indeks ke-9 sama dengan nilai yang dicari,
Program CariBagiDua;
Uses crt;
Const
A : array [1 . . 14] of integer =
(10,12,14,15,16,18,19,20,22,24,25,26,28,29);
Var
idxAwal, {indeks array awal}
idxAkhir, {indeks array akhir}
k, {indeks pemenggal/pembatas}
x : integer; {nilai yang dicari}
ketemu : boolean; {variabel status, ditemukan atau tdak ?}
begin
clrscr;
write (‘masukkan nilai yang akan dicari : ‘); readln(x);
{melakukan pencarian}
atas.
5.4 Kesimpulan
dua.
terhadap array.
melakukan pencarian.
1. Bubble Sort
2. Maximum/Minimum Sort
3. Selection Sort
4. Insertion Sort
5. Heap Sort
6. Quick Sort
7. Merge Sort
8. Shell Sort
jenis gelembung sabun lebih kecil dari berat jenis air. Konsep
25 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Tahap 1
array yang sedang aktif. Apabila nilai A[k] lebih kecil, maka
15 25 22 18 20
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 1
Tahap 2
15 18 25 22 20
A[1] A[2] A[3] A[4] A[5]
Gambar. Hasil Pengurutan Array A tahap 2
15 18 20 25 22
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 3
Tahap 4
baeah ini.
15 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 4
Var
n, {banyaknya elemen array}
j, k {variabel bantu untuk indeks
pengulangan}
temp : integer; {variabel bantu untuk melakukan
pertukarannilai}
begin
for j:= 1 to N-1 do begin
for k:= N downto j+1 do begin
if A[k] < A[k-1] then begin
temp := A[k];
A[k] := A[k-1];
A[k-1] := temp;
End;
End;
End;
End;
Program UrutGelembung;
Uses crt;
Const
sebagaii beriku.
25 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar Array A sebelum diurutkan dengan metode
Maksimum/Minimum
berikut.
15 22 18 20 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 1
Tahap 2
ini.
15 20 18 2 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 2
15 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 3
Tahap 4
Var
n, {banyaknya elemen array
keseluruhan}
x, {banyaknya elemen array yang
belum terurut}
j, k, {untuk indeks pengulangan}
Apabila nilai yang dipilih pertama kali lebih besar dari nilai
Berikut gambarannya.
25 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar Array A sebelum diurutkan dengan metode Seleksi
Tahap 1
A[min]. Apabila nilai dari A[min] > A[j], isikan min = j. Setelah
15 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 1
Tahap 2
berikut.
15 18 22 20 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 2
15 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 3
Tahap 4
15 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar Hasil Pengurutan Array A tahap 4
Penutup
sembarang posisi.
bersangkutan.
Berikut ini sebuah contoh linked list yang terdiri atas 4 node :
ini :
adalah
diatas adalah :
pointer P.
INFO(P) = A
INFO(NEXT(NEXT(P))) = C
procedure FREENODE.
Q := Next(P)
langkah ke-2 :
Next(P) := Next(Q)
langkah ke-3 :
Freenode(Q)
procedure Freenode(Q)
procedure GETNODE.
procedure Getnode(NEW)
if Avail = Null
then out-of-free-space
Getnode := Avail;
end;
(a) Getnode(NEW);
(c) Q := Next(P)
cara sequential)
nodetype = record
info : nametype;
next : nodeptr;
end;
Var p : nodeptr;
node : nodetype;
Catatan :
var q : nodeptr;
begin
if (p^.Next = nil)
else begin
q := p^.Next;
p^.Next := q^.Next;
out := q^.Info;
dispose(q);
end;
end;
var q : nodeptr;
begin
New(q);
q^.Info := in;
q^.Next := p^.Next;
p^.Next := q;
end;
Begin
New(newnode);
newnode^.Info := in;
newnode^.Next := nil;
q := first;
q := q^.Next;
q^.Next := newnode;
End;
begin
New(newnode);
newnode^.Info := in;
newnode^.Next := nil;
rear^.Next := newnode;
rear := newnode;
end;
Head Nodes
nametype);
flag : 0..2;
Begin
prior := head;
this := head^.next;
flag := 1;
While flag = 1
do begin
if (this = head)
if (this = p)
then flag := 0
else begin
prior := this;
this := this^.next;
end;
end;
if (flag > 0)
begin
prior^.next := p^.next;
out := p^.info;
dispose(p)
end;
End;
ke node sebelumnya.
Next(Head) = Head
Dalam Pascal :
nodetype = record
prior : nodeptr;
info : nametype;
next : nodeptr
end;
Successor P
Predeccssor P
Dalam Pascal :
Begin
pred := p^.prior;
pred^.next := succ;
succ^.prior := pred;
out := p^.info;
dispose(p)
End;
baru
Polynomial
nodetype = record
exp : integer;
coef : integer;
next : nodeptr;
end;
143 x4 + 201 x2 + 14 x + 2
a4 = 143 a3 = 0 a2 = 201 a1 = 14 a0 = 2
list. Posisi ini disebut puncak atau top dari stack. Elemen
pemasukan.
gambar sebagai :
A S NOEL(S) = 1, TOP(S) = A
[A,B]
B S NOEL(S) = 2, TOP(S) = B
A
di atasnya dikeluarkan.
Dalam COBOL
Dalam Pascal
type stackstruct;
top-ptr : integer
var S : stackstruct;
nilai TOP-PTR.
PUSH.
POP
IF TOP-PTR > 0
begin
end
else OVERFLOW-CONDITION
end;
begin
if (s.topptr > 0)
then
s.topptr := s.topptr-1
end
else UNDERFLOW-CONDITION
end;
luar stack.
sebagai berikut :
PERFORM SCAN-NEXT-CHAR
OR CHAR(NEXT-CHAR) = “;”.
tak tertutup
SCAN NEXT-CHAR
IF CHAR(NEXT-CHAR) = “(“
PERFORM PUSH
ELSE
IF CHAR(NEXT-CHAR) = “)”
PERFORM POP
IF TOP-PTR > 0
COMPUTE TOP-PTR – 1
Notasi Postfix
objeknya.
peroleh : B / C.
: A + E * D.
operator, diperoleh A F +
E+D
Didapat A * B + C /D
ke dalam stack
mcrupakan output.
postfix.
H*C/D+I/G
H*C/D^E+F/G
A+B*C/D^E+F/G
( A * (B + C) ^ D - E) / F + G
Kita dapat operator ‘(‘ dan tentu saja stack masih dalam
A * (B + C) ^ D - E) / F + G
( TOP(S) Hasil : A
nya.
* (B + C) ^ D - E) / F + G
operator ‘*’
* TOP(S)
( Hasil : A
( B + C) ^ D - E) / F + G
( TOP(S)
*
( Hasil : A
B + C) ^ D - E) / F + G
( TOP(S)
*
(
Hasil : A B
+ C) ^ D - E) / F + G
+ TOP(S)
(
*
( Hasil : A B
C ) ^ D - E) / F + G
+ TOP(S)
(
*
( Hasil : A B C
‘)’, maka keluarkan isi stack satu per satu (menjadi hasil)
hasil). Hasilnya :
* TOP(S) Hasil : A B C +
(
^ D - E) / F + G
Karena derajat operasi ‘^’ lebih tinggi dari ‘*’, maka masukkan
saja.
^ TOP(S)
* Hasil : A B C +
(
D - E) / F + G
^ TOP(S)
* Hasil : A B C + D
(
- E) / F + G
* TOP(S) Hasil : A B C + D ^
(
menempati TOP(S).
- TOP(S) Hasil : A B C + D ^ *
E )/F+G
- TOP(S) Hasil : A B C + D ^ * E
(
dari posisi TOP(S) hingga ke operator ‘(‘, tetapi operator ‘(‘ dan
stack.
/ F+G
Hasil : A B C + D ^ * E -
/ TOP(S)
Hasil : A B C + D ^ * E - F
/ TOP(S)
+ G
Hasil : A B C + D ^ * E - F
/
+ TOP(S)
Hasil : A B C + D ^ * E - F / G
+ TOP(S)
akhirnya menjadi :
Hasil : A B C + D ^ * E - F / G +
postfix-nya. Periksalah !
NOEL(Q) = N.
--------------------------------
--------------------------------
Gambar Antrean hampa
Di sini :
NOEL(Q) = 0
di Gambar.
------ ------------
A
------ ------------
Gambar Elemen A dimasukkan
Di sini :
NOEL(Q) = 1
REAR(Q) = A
------ ------------
A B
------ ------------
Gambar Elemen B dimasukkan setelah elemen A
Di sini :
NOEL(Q) = 2
FRONT(Q) = A
REAR(Q) = B
-------------
ABC
-------------
Gambar Elemen C dimasukkan setelah elemen B
Di sini :
NOEL(Q) = 3
FRONT(Q) = A
REAR(Q) = C
-------------
BC
-------------
Gambar Satu elemen dihapus
Di sini :
NOEL(Q) = 2
FRONT(Q) = B
REAR(Q) = C
1. CREATE(antrean)
2. ISEMPTY(antrean)
3. INSERT(elemen,antrean)
4. REMOVE(antrean)
Create (antrean) :
Berarti :
NOEL(CREATE(Q)) = 0
data boolean.
Di sini :
NOEL(Q)=0
REAR(INSERT(E,Q)) = E
QNOEL adalah E
ISEMPTY(INSERT(E,Q)) = false
elemen terdepan.
error.
DEPAN, BBB.
bukan N+l.
Algoritma Q INSERT
Q INSERT (QUEUE, N, FRONT, DATA)
REAR := 1
REAR := 1
REAR := REAR + 1
3. Return
maka Write :
UNDERFLOW, return
2. DATA := QUEUE(FRONT)
FRONT := FRONT + 1
4. Return.
9.4 Deque
hampa.
yang sudah berisi penuh, dan (b) terjadi underflow, yakni bila
berikut :
standar.
akan dipilih.
pada Y
dahulu sebelum Y.
LINK.
Algoritma 1
pertama).
3. Proses ITEM
4. Keluar
itu.
one-way list.
di depan simpul X
11.
Dalam hal ini AAA merupakan elemen pertama dari list akan
prioritas K.
Algoritma 3
dengan NULL.
3. Keluar
Algoritma 4
QUEUE.
2. Keluar
berikut :
E adalah keluar.
tunggal D.
F menjadi 2,3,4,5.
ini.
mengosongkan antrean.
berakar P.
edge (n – 1) = 8 – 1 = 7
7.1 : P berlevel 0
Q dan T berlevel 1
R, S dan U berlevel
4.
data pada record, keluarga dari pohon, ataupun isi dari tabel.
sedemikian sehingga :
K dan L.
lelaki (child atau son). Jadi simpul N tersebut boleh kita sebut
atau “terminal.”
binar T1 dan T2. Ini berarti bahwa setiap simpul N dari pohon
hampa.
tidak saja similar tetapi juga sama persis antara satu dengan
copies).
dari N.
(AD, DG, GL) adalah jalur dari simpul A ke simpul L. Jalur ini
satu generasi.
dengan tingkat = 3.
3 simpul.
complete.
Dalam hal ini anak kiri dan anak kanan dari simpul K adalah
21.
10.5 Pohon-2
contoh-contoh HBT.
Hmin = INT(21og N) + 1
=7
anak dari N.
sedemikian sehingga :
list AVAIL.
Pohon.
Harris.
dalam TREE[2*K+l]
TREE[14].
pohon binar.
lalu kita hapus ruas dari simpul ayah (parent) ke simpul anak
pertama tadi.
Gambar 7.19a. Dari hasil ini dapat kita lihat dan simpulkan
adalah :
dilakukan berturut-turut :
Gambar 7.22 : c * d + e
Gambar 7.23 : a / b + c * d + e / f ^ g
Gambar 7.24 : M E B A D L P N V T Z
putus).:
Gambar 7.22 : (c + d) * e
Gambar 7.24 : A B D E L M N P T V Z
sendiri.
c + f.
pohonnya adalah :
akhirnya menjadi :
adalah :
dihasilkan adalah :
Substree di sebelahnya : (c / d)
Digabung menjadi (a + b) * (c / d)
Substree berikutnya : ( e ^ f)
(e ^ f) ) / g
a + b * c / d * e ^ f / g.
memakai urutan :
dimaksud
bersangkutan.
Ekspresi infix : ( K + L + M – N – E – F ) * G / H
F) *G / H.
+G+H
F*G/H
Contoh 7.2
maupun sekuensial.
Postfixnya adalah : A B + C * D + E F H * + /
O(n).
simpul pada subpohon kiri dari N dan selalu lebih kecil dari
7.33 untuk berkas (file) pada Gambar 7.32 dengan field kunci
simpul pada subpohon kiri dari N adalah lebih kecil atau sama
nanti.
berikut :
14.
bersangkutan.
binar lagi.
dihapus.
cari lagi.
Contoh 7.3
7.38.
adalah salah satu nama record pada pohon cari. Jika peluang
sebagai :
pohon cari (a). Jadi bangun cari pohon cari (a) adalah pohon
cari yang terbaik dari 5 bangun pohon cari yang ada. Agar
panjang jalur dari suatu pohon cari akan berubah, bila kita
adalah :
1, 2, 3, 4 dan 5.
diharapkan adalah :
gagal, maka letak dari nama X akan terdapat pada salah satu
0,1,..., n.
untuk Ei, Ni < Ei < Ni+1, maka X terletak pada Ni < X < Ni+1,
diharapkan adalah :
tersebut dimiliki oleh pohon cari (c). Jadi bangun pohon cari
bangun pohon cari yang ada. Cara yang kita gunakan di atas
internal a1, a2, a3, ..., ak+1 terletak di subpohon kiri dari akar
dan
= Pk + COST(L) + COST(R)
W(i,j) = qi + (q+p)
= Q0 + (q+p) qk + (q+p)
ak+1, …, an dan Ek, Ek+1, …, En. Jika C(i,j) adalah COST untuk
minimum
................(3)
i<=k<=n
sebagai berikut :
W(I,j)…….……………..(4) i<=k<=n
seterusnya.
bangun pohon cari binar yang optimal dari root R(i,j) tersebut.
persamaan (4).
Contoh 7.4
Misalkan n = 4
Q(0,1,2,3,4) = (2,3,1,1,1)
C(i,j) =0
Langkah 1.
Langkah 2 :
0 <= k <= 1
=0+0+8=8
1 < k <= 2
= 0+0+7=7
R(1,2) = 2
2 <k <=3
=0+0+3=3
0 <= k <= 2
= 0 + 7 + 12 = 19
= min(C(0
,1) +
C(2,2) +
W(0,2))
0 <= k
<= 2
= 8 + 0 + 12 = 20
R(0,2) = 1
1 <= k <= 3
= 7 + 3 + 9 = 19
R(1,3) = 2
2 <k <= 4
=0+3+5=8
2 <k <= 4
= 3+0+5=8
R(,4) = 3
Didapat :
Langkah 4
0 <= k <= 3
= 0 + 12 + 14 = 26
0 <= k <= 3
= 8 + 3 + 14 = 25
= 19 + 0 + 14 = 33
R(0,3) = 2
W(1,3) = 1 + 1 + 9 = 11
C(1,4) = min(C(1,1) +
C(2,4) + W(1,4))
1 <= k <= 3
= 7 + 3 + 9 = 19
1 <= k <= 4
= 7 + 3 + 11 = 21
1 <= k <= 4
= 12 + 0 + 11 = 23
Didapat :
0 <= k <= 4
= 0 + 19 + 16 = 35
0 <= k <= 4
= 8 + 8 + 16 = 32
= min(C(0,
2) +
C(3,4) +
W(0,4))
0 <= k
<= 4
= 19 + 3 + 16 = 38
0 <= k <= 4
= 25 + 0 + 16 = 41
R(0,4) = 2
Kita dapatkan :
10.16 Heap
pohon binar adalah heap, jika nilai setiap simpul lebih besar
dari simpul, dibaca dari kiri ke kanan, level demi level. Dapat
Masukkan elemen 6
dari Pohon binar, yaitu bentuk heap, maka pada bagian ini
elemen A).
Call insheap(A,J,a(j+1))
a) Call Delheap(A,N,ITEM)
b) A[CN+1] := ITEM
3. Exit
B[N+1] := ITEM
terpisah.
Fase pertama
terbatas oleh :
sort.
19 Oktober 1996
Agama : Islam
No. Hp : 082349185139
E-mail : firmansulfikar1910@gmail.com