4.5 Perhitungan Kompleks Algoritma DMC
Dari algoritma DMC ini akan dilakukan perhitungan kompleksitasnya. Kompleksitas yang dihitung nantinya adalah average case, best case, dan worst
case. Pada average case akan dicari Big
average time. Pada best case akan dicari Big
best time. Sedangkan untuk worst case akan dicari Big Oworst time
.
4.5.1. Perhitungan Running Time Kompresi
Proses perhitungan running time dilakukan untuk mendapatkan Big , Big , dan
Big O . Dari hasil yang didapat nantinya akan berguna agar user mengetahui waktu
terbaik dan terburuk dari algoritma DMC. Tabel 4.5 berikut ini adalah tabel perhitungan running time.
Tabel 4.5 Tabel Perhitngan Running Time Kompresi
No Code
c c
1
Dim InpPos, MinValue, MaxValue, RangValue, MidValue, Index, TopBit, One256, Zero256, i As Integer
C
1
1 C
1
2
Dim mChar, Bitset As Byte
C
1
1 C
1
3
ReDim outtext500
C
2
1 C
2
4
OutPos = OutBitCount = OutByteBuf = MinValue = InpPos = 0
C
3
1 C
3
5
MaxValue = 2 MaxBits - 1
C
4
1 C
4
6
TopBit = 2 MaxBits - 1
C
4
1 C
4
7
Index = -1
C
5
1 C
5
8
For i = 0 To 256
C
6
|256| C
6
|256| 9
Onei = 1
C
7
|256| C
7
|256| 10
Zeroi = 1
C
7
|256| C
7
|256| 11
Next
C
8
|256| C
8
|256| 12
Do While InpPos = UBoundlistarr
C
9
|256|
2
C
9
|256|
2
13
mChar = listarrInpPos
C
10
|256|
2
C
10
|256|
2
14
InpPos = InpPos + 1
C
11
|256|
2
C
11
|256|
2
15
For i = 0 To 7
C
6
|256| C
6
|256| 16
Bitset = mChar And 2 7 - i And HFF
C
12
|256| C
12
|256| 17
Index = 2 i - 1 + IntmChar 2 8 -
C
13
|256| C
13
|256|
Universitas Sumatera Utara
i
18
RangValue = MaxValue - MinValue
C
14
|256| C
14
|256| 19
MidValue = MinValue + RangValue ZeroIndex OneIndex + ZeroIndex
C
15
|256| C
15
|256| 20
If MidValue = MinValue Then MidValue = MidValue + 1
C
16
|256| C
16
|256| 21
If MidValue = MaxValue - 1 Then MidValue = MidValue - 1
C
16
|256| C
16
|256| 22
If Bitset 0 Then
C
17
|256| C
17
|256| 23
MinValue = MidValue
C
18
|256| C
18
|256| 24
OneIndex = OneIndex + 1
C
19
|256| C
19
|256| 25
Else
C
20
|256| C
20
|256| 26
MaxValue = MidValue
C
18
|256| C
18
|256| 27
ZeroIndex = ZeroIndex + 1
C
19
|256| C
19
|256| 28
End If
C
21
|256| C
21
|256| 29
Do While MaxValue And TopBit = MinValue And TopBit Or MinValue MaxValue - 255
C
22
|256|
3
C
22
|256|
3
30
If MinValue And TopBit = 0 Then
C
23
|256|
3
C
23
|256|
3
31
OutByteBuf = OutByteBuf 2 + 0
C
24
|256|
3
C
24
|256|
3
32
OutBitCount = OutBitCount + 1
C
25
|256|
3
C
25
|256|
3
33
If OutBitCount = 8 Then
C
26
|256|
3
C
26
|256|
3
34
outtextOutPos = OutByteBuf
C
27
|256|
3
C
27
|256|
3
35
OutBitCount = 0
C
28
|256|
3
C
28
|256|
3
36
OutByteBuf = 0
C
28
|256|
3
C
28
|256|
3
37
OutPos = OutPos + 1
C
29
|256|
3
C
29
|256|
3
38
If OutPos UBoundouttext Then
C
30
|256|
3
C
30
|256|
3
39
ReDim Preserve outtextOutPos + 500
C
2
1 C
2
40
End If
C
21
|256|
3
C
21
|256|
3
41
End If
C
21
|256|
3
C
21
|256|
3
42
Else
C
20
|256|
4
C
20
|256|
4
43
OutByteBuf = OutByteBuf 2 + 1
C
24
|256|
4
C
24
|256|
4
Universitas Sumatera Utara
44
OutBitCount = OutBitCount + 1
C
25
|256|
4
C
25
|256|
4
45
If OutBitCount = 8 Then
C
26
|256|
4
C
26
|256|
4
46
outtextOutPos = OutByteBuf
C
27
|256|
4
C
27
|256|
4
47
OutBitCount = 0
C
28
|256|
4
C
28
|256|
4
48
OutByteBuf = 0
C
28
|256|
4
C
28
|256|
4
49
OutPos = OutPos + 1
C
29
|256|
4
C
29
|256|
4
50
If OutPos UBoundouttext Then
C
30
|256|
4
C
30
|256|
4
51
ReDim Preserve outtextOutPos + 500
C
2
1 C
2
52
End If
C
21
|256|
4
C
21
|256|
3
53
End If
C
21
|256|
4
C
21
|256|
3
54
End If
C
21
|256|
3
C
21
|256|
3
55
MaxValue = MaxValue And TopBit - 1 2 + 1
C
31
|256|
3
C
31
|256|
3
56
MinValue = MinValue And TopBit - 1 2
C
32
|256|
3
C
32
|256|
3
57
If MinValue = MaxValue Then
C
33
|256|
3
C
33
|256|
3
58
MaxValue = 2 MaxBits - 1
C
34
|256|
3
C
34
|256|
3
59
End If
C
21
|256|
3
C
21
|256|
3
60
Loop
C
35
|256|
3
C
35
|256|
3
61
Next
C
8
|256|
2
C
8
|256|
2
62
Loop
C
35
|256| C
35
|256| 63
For i = MaxBits - 1 To 0 Step -1
C
6
|256| C
6
|256| 64
If MinValue And 2 i = 0 Then
C
23
|256| C
23
|256| 65
OutByteBuf = OutByteBuf 2 + 0
C
24
|256| C
24
|256| 66
OutBitCount = OutBitCount + 1
C
25
|256| C
25
|256| 67
If OutBitCount = 8 Then
C
26
|256| C
26
|256| 68
outtextOutPos = OutByteBuf
C
27
|256| C
27
|256| 69
OutBitCount = 0
C
28
|256| C
28
|256| 70
OutByteBuf = 0
C
28
|256| C
28
|256| 71
OutPos = OutPos + 1
C
29
|256| C
29
|256|
Universitas Sumatera Utara
72
If OutPos UBoundouttext Then
C
30
|256| C
30
|256| 73
ReDim Preserve outtextOutPos + 500
C
2
1 C
2
74
End If
C
21
|256| C
21
|256| 75
End If
C
21
|256| C
21
|256| 76
Else
C
20
|256|
2
C
20
|256|
2
77
OutByteBuf = OutByteBuf 2 + 1
C
24
|256|
2
C
24
|256|
2
78
OutBitCount = OutBitCount + 1
C
25
|256|
2
C
25
|256|
2
79
If OutBitCount = 8 Then
C
26
|256|
2
C
26
|256|
2
80
outtextOutPos = OutByteBuf
C
27
|256|
2
C
27
|256|
2
81
OutBitCount = 0
C
28
|256|
2
C
28
|256|
2
82
OutByteBuf = 0
C
28
|256|
2
C
28
|256|
2
83
OutPos = OutPos + 1
C
29
|256|
2
C
29
|256|
2
84
If OutPos UBoundouttext Then
C
30
|256|
2
C
30
|256|
2
85
ReDim Preserve outtextOutPos + 500
C
2
1 C
2
86
End If
C
21
|256|
2
C
21
|256|
2
87
End If
C
21
|256|
2
C
21
|256|
2
88
End If
C
21
|256|
2
C
21
|256|
2
89
Next
C
8
|256| C
8
|256| 90
Do While OutBitCount 0
C
9
|256| C
9
|256| 91
OutByteBuf = OutByteBuf 2 + 1
C
24
|256| C
24
|256| 92
OutBitCount = OutBitCount + 1
C
25
|256| C
25
|256| 93
If OutBitCount = 8 Then
C
26
|256| C
26
|256| 94
outtextOutPos = OutByteBuf
C
27
|256| C
27
|256| 95
OutBitCount = 0
C
28
|256| C
28
|256| 96
OutByteBuf = 0
C
28
|256| C
28
|256| 97
OutPos = OutPos + 1
C
29
|256| C
29
|256| 98
If OutPos UBoundouttext Then
C
30
|256| C
30
|256| 99
ReDim Preserve outtextOutPos + 500
C
2
1 C
2
10
End If
C
21
|256| C
21
|256|
Universitas Sumatera Utara
10 1
End If
C
21
|256| C
21
|256| 10
2
Loop
C
35
|256| C
35
|256| 10
3
ReDim Preserve outtextOutPos - 1
C
2
1 C
2
10 4
End Sub
Dari perhitungan running time pada tabel 4.5 terdapat 5 kolom. Kolom 1 merupakan nomor urut dari code program dari metode Dynamic Markov Compression. Kolom 2
merupakan code program metode Dynamic Markov Compression. Kolom 3 atau kolom c merupakan waktu yang dibutuhkan untuk menjalankan setiap statement dari
code. Kolom 4 atau kolom merupakan berapa kali statement tersebut dijalankan. Sedangkan kolom 5 merupakan perkalian dari C dengan . Oleh karena itu didapat
T
|n| yang merupakan jumlah dari kolom c yaitu sebagai berikut. Tn
= 2C
1
+ 7C
2
+ C
3
+ 2C
4
+ C
5
+3C
6
|256| + 2C
7
|256| + 2C
8
|256| + C
9
|256| +
2C
12
|256| + C
13
|256| + C
14
|256| + C
15
|256| + 2C
16
|256| + C
17
|256| + 2C
18
|256| + 2C
19
|256| + C
20
|256| + 5C
21
|256| + C
23
|256| + 2C
24
|256| + 2C
25
|256| + 2C
26
|256| + 2C
27
|256| + 4C
28
|256| + 2C
29
|256| + 2C
30
|256| + 2C
35
|256| + C
8
|256|
2
+ C
9
|256|
2
+ C
10
|256|
2
+ C
11
|256|
2
+ C
20
|256|
2
+ 3C
21
|256|
2
+ C
24
|256|
2
+ C
25
|256|
2
+ C
26
|256|
2
+ C
27
|256|
2
+ 2C
28
|256|
2
+ C
29
|256|
2
+C
30
|256|
2
+ 6C
21
|256|
3
+ C
22
|256|
3
+ C
23
|256|
3
+ C
24
|256|
3
+ C
25
|256|
3
+ C
26
|256|
3
+ C
27
|256|
3
+2C
28
|256|
3
+ C
29
|256|
3
+ C
30
|256|
3
+C
31
|256|
3
+ C
32
|256|
3
+ C
33
|256|
3
+ C
34
|256|
3
+ C
35
|256|
3
+ C
20
|256|
4
+ C
24
|256|
4
+ C
25
|256|
4
+ C
26
|256|
4
+ C
27
|256|
4
+ 2C
28
|256|
4
+ C
29
|256|
4
+ C
30
|256|
4
= 2C
1
+ 7C
2
+ C
3
+ 2C
4
+ C
5
|256| + 3C
6
+ 2C
7
+ 2C
8
+ C
9
+ 2C
12
+ C
13
+ C
14
+ C
15
+ 2C
16
+ C
17
+ 2C
18
+ 2C
19
+ C
20
+ 5C
21
+ C
23
+ 2C
24
+ 2C
25
+ 2C
26
+ 2C
27
+ 4C
28
+ 2C
29
+ 2C
30
+ 2C
35
|256|
1
+ C
8
+ C
9
+ C
10
+ C
11
+ C
20
+ 3C
21
+ C
24
+ C
25
+ C
26
+ C
27
+ 2C
28
+ C
29
+ C
30
|256|
2
+ 6C
21
+ C
22
+ C
23
+ C
24
+ C
25
+ C
26
+ C
27
+2C
28
+ C
29
+ C
30
+C
31
+ C
32
+ C
33
+ C
34
+ C
35
|256|
3
+ C
20
+ C
24
+ C
25
+ C
26
+ C
27
+ 2C
28
+ C
29
+ C
30
|256|
4
Tn = |256|
4
Diperoleh bahwa dari segi kompleksitas waktu rata-rata yang dibutuhkan untuk mengkompresi file dengan algoritma Dynamic Markov Compression adalah panjang
dari bit. Dari perhitungan diatas maka nilai big = |256|
4
yang merupakan average time
, untuk worst time yaitu big O |256|
4
, dan untuk best time yaitu big |256|
4
dimana 256 merupakan bit yang masing-masing kondisi merupakan kompleksitas dari metode Dynamic Markov Compression.
Universitas Sumatera Utara
4.5.2. Perhitungan Running Time Dekompresi