Hasil dari langkah 3 dapat dilihat pada tabel 3.
Tabel 4.3 Hasil Langkah 3 I
A B
C D
J
d [V] 5
7 2
6 11
Pi [V] C
A I
C B
Tampilan Hasil yang telah di uji dengan menggunakan Algoritma Bellman-Ford untuk mendapatkan jarak terpendek dapat dilihat pada gambar 5.
Gambar 4.17Shortest PathMenggunakan Algoritma Bellman-Ford
4.3 Kompleksitas Algoritma Perhitungan kompleksitas algoritma L-Deque dapat dilihat pada Tabel 4.4.
Tabel 4.4 Kompleksitas Algoritma L-Deque No
Code C
C
Universitas Sumatera Utara
1
public class Ldeque {
C
1
1 C
1
2
public listListedge_ graph;
C
1
1 C
1
3
ListdoubleshortestDistances = new Listdouble;
C
2
1 C
2
4
ListdoublepredecessorVertex = new Listdouble;
C
2
1 C
2
5
publicdoubletotalJarak;
C
1
1 C
1
6
public Listintpath;
C
1
1 C
1
7
stopwatch watch = new Stopwatch;
C
2
1 C
2
8
publicdoubleelapsedTimeMs = 0;
C
2
1 C
2
9
public
LDequeListListedge_ graph {
C
1
1 C
1
10
this.graph = graph;
C
3
1 C
3
11
path = newListint;
C
2
1 C
2
12
public void Ldequeint startIndex, int toIndex
{
C
1
1 C
1
13
watch.start;
C
4
1 C
4
14
path.AddtoIndex;
C
5
1 C
5
15
double INF = double.PositiveInfinity;
C
6
1 C
6
16
dequeint deque = new Dequeint;
C
2
1 C
2
17
foreach var pair in graph {
C
7
1 C
7
18
shortestDistances.AddINF;
C
8
1 C
8
19
predecessorVertex.Add-1;
C
8
1 C
8
20
shortestDistances[startIndex] = 0;
C
2
1 C
2
21
deque.AddToBackstartIndex;
C
9
1 C
9
Universitas Sumatera Utara
22
while deque.Count = 0 {
C
10
1 C
10
21
int u = deque.RemoveFromFront;
C
11
1 C
11
22
foreach var pair in graph[u] {
C
7
1 C
7
23
int v = pair.toIndex;
C
2
1 C
2
24
if shortestDistances[v] shortestDistances[u] + pair.cost
C
12
N C
12
N
25
if deque.Containsv
C
12
N
2
C
12
N
2
26
if shortestDistances[v] == double.PositiveInfinity
C
12
N
3
C
12
N
3
27
deque.AddToBackv;
C
9
N
3
C
9
N
3
28
deque.AddToFrontv;
C
13
1 C
13
29
shortestDistances[v] shortestDistances[u] + pair.cost;
C
9
1 C
9
30
predecessorVertex[v] = u;
C
2
1 C
2
31
getPathstartIndex, toIndex;
C
14
1 C
14
32
totalJarak = shortestDistances[toIndex];
C
2
1 C
2
33
elapsedTimeMs = watch.
stop
;
C
2
1 C
2
34
public void getPathint u, int v {
C
1
1 C
1
35
double k;
C
6
1 C
6
36
k = predecessorVertex[v];
C
2
1 C
2
37
If k == -1 || u==v {
C
12
1 C
12
38
return;
C
15
1 C
15
39
path .Addintk;
C
5
1 C
5
40
getPath
u,intk;
C
17
1 C
17
Universitas Sumatera Utara
Dari perhitungan kompleksitas waktu pada Tabel 4.2 maka didapat T|n| yang merupakan jumlah kolom C sebagai berikut:
Ʃ=Tn=7C1+12C2+C3+C4+2C5+2C6+2C7+2C8+2C9+C10+C11+C12+C13+C14+C1 5+C16+C17+C12N+C12N
2
+C12N
3
+C9N
3
Ʃ = Tn = ƟN
3
Perhitungan kompleksitas algoritma Bellman-Ford dapat dilihat pada Tabel 4.5.
Tabel 4.5 Kompleksitas Algoritma Bellman-Ford No
Code C
C
1
public class BellmanFord;
C
1
1 C
1
2
public Listedge Edge = new Listedge;
C
2
1 C
2
3
public int V;
C
1
1 C
1
4
publicListdouble shortestDistances;
C
1
1 C
1
5
public double totalJarak;
C
3
1 C
3
6
public ListintpredecessorVertex;
C
1
1 C
1
7
public Listint path;
C
1
1 C
1
8
Stopwatch = new Stopwatch;
C
2
1 C
2
9
public double elapsedTimeMs = 0;
C
3
1 C
3
10
Public BellmanFord
C
1
1 C
1
11
predecessorVertex = new Listint;
C
2
1 C
2
12
shortestDistances = new Listdouble;
C
2
1 C
2
13
path = new Listint;
C
2
1 C
2
14
public void BellmanFordShortestPathint startIndex, int toIndex
C
1
1 C
1
15
if V == 0 Edge.Count 0 generateV;
C
4
1 C
4
16
shortestDistances .Clear;
C
5
1 C
5
17
predecessorVertex .Clear;
C
5
1 C
5
Universitas Sumatera Utara
18
double INF = double.PositiveInfinity;
C
6
1 C
6
19
For int i = 0; i V; i++
C
7
N C
7
20
shortestDistances. AddINF;
C
8
N C
8
N 21
predecessorVertex .Add-1;
C
8
N C
8
N 22
shortestDistances [startIndex] = 0;
C
2
1 C
2
23
while true
C
9
1 C
9
24
bool update = false;
C
10
1 C
10
25
Foreach edge e in Edge
C
11
1 C
11
26
if shortestDistances[e.from]= INF shortestDistances[e.to]
shortestDistances[e.from] + e.cost
C
4
1 C
4
27
shortestDistances [e.to] =
shortestDistances [e.from] + e.cost ;
C
2
1 C
2
28
predecessorVertex [e.to] = e.from;
C
2
1 C
2
29
update = true;
30
Ifupdatebreak;
C
4
1 C
4
31
if totalJarak = shortestDistances
[toIndex];
C
2
1 C
2
31
public void getShortestPathListint startIndex, int toIndex
C
1
1 C
1
32
watch.start;
C
12
1 C
12
33
path.AddtoIndex;
C
8
1 C
8
34
if startIndex = toIndex
C
4
1 C
4
35
BellmanFordShortestPathstartIndex, toIndex;
C
13
1 C
13
36
getPathstartIndex, toIndex;
C
14
1 C
14
37
elapsedTimeMs = watch.stop;
C
2
1 C
2
38
public void getPathint u, int v
C
1
1 C
1
39
double k;
C
6
1 C
6
40
k = predecessorVertex[v];
C
2
1 C
2
Universitas Sumatera Utara
41
if k == -1 || u == v
C
4
1 C
4
42
path .Addintk;
C
8
1 C
8
43
getPathu, intk;
C
14
1 C
14
44
public class edge
C
1
1 C
1
45
publicintfrom, to;
C
1
1 C
1
46
publicdoublecost;
C
1
1 C
1
47
public edgeint _from, int _to, double _cost
C
1
1 C
1
48 from= _from; C
2
1 C
2
49 to = _to; C
2
1 C
2
50 cost = _cost; C
2
1 C
2
51
privatedoubleGetTotalPositiveCost
C
15
1 C
15
52
double sum = 0;
C
6
1 C
6
53
foreach var e inEdge
C
16
1 C
16
54
if e.cost 0 sum += e.cost;
C
4
1 C
4
55
private void generateV
C
15
1 C
15
56
foreach var e inEdge
C
16
1 C
16
57 V = Math.MaxV, e.from; C
2
1 C
2
58
V = Math.MaxV, e.to;
C
2
1 C
2
Dari perhitungan kompleksitas pada Tabel 4.5 maka didapat Tn yang merupakan jumlah kolom C sebagai berikut:
∑= 13C
1
+ 16C
2
+ 2C
3
+ 6C
4
+ 2C
5
+ 3C
6
+ C
7
+ C
8
+ C
9
+ C
10
+ C
11
+ C
12
+ C
13
+2C
14
+2C
15
+2C
16
+2C
8
N ∑ = Tn = ƟN
Universitas Sumatera Utara
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan