Analisis dan Perbandingan Algoritma L-Queue dan Algoritma Floyd Dalam Penentuan Lintasan Terpendek Pada Graph
107
LISTING PROGRAM
Kode Program Algoritma Floyd:
using System;
namespace JarakTerdekat
{
public class Floyd
{
public List P;
public List M;
public double totalJarak;
public int startIndex;
public int endIndex;
public List result;
public int N;
public void init(List inputTable, double N)
{
this.N = (int)N;
P = new List();
result = new List();
M = inputTable;
for (int i = 0; i < N; i++)
{
P.Add(new List());
for (int j = 0; j < N; j++)
{
P[i].Add(-1);
}
}
}
public List calculateShortestPath(int startIndex,
int endIndex)
{
this.startIndex = startIndex;
this.endIndex = endIndex;
result.Add(startIndex);
FloydAlgo(M);
path(startIndex, endIndex);
result.Add(endIndex);
return result;
}
Universitas Sumatera Utara
108
public void path(int u, int v)
{
double k;
k = P[u][v];
if (k == -1)
{
return;
}
path(u, (int)k);
result.Add((int)k);
path((int)k, v);
}
public List FloydAlgo(List M)
{
for (int k = 0; k < N; k++)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (M[i][k] + M[k][j] < M[i][j])
{
M[i][j] = M[i][k] + M[k][j];
P[i][j] = k;
}
}
}
}
totalJarak = M[startIndex][endIndex];
return M;
}
public int min(int i, int j)
{
if (i > j)
{
return j;
}
return i;
}
public void printMatrix(List Matrix)
{
Console.Write("\n\t");
for (int j = 0; j < N; j++)
{
Console.Write(j + "\t");
}
Console.WriteLine();
for (int j = 0; j < 35; j++)
{
Universitas Sumatera Utara
109
Console.Write("-");
}
Console.WriteLine();
for (int i = 0; i < N; i++)
{
Console.Write(i + " |\t");
for (int j = 0; j < N; j++)
{
Console.Write(Matrix[i][j]);
Console.Write("\t");
}
Console.Write("\n");
}
Console.WriteLine("\n");
}
}
}
Kode Program Algoritma L-Queue :
namespace JarakTerdekat
{
public class LQueueBaru
{
public List graph = new List();
List shortestDistances = new List();
List predecessorVertex = new List();
public double totalJarak;
public List path;
Stopwatch watch = new Stopwatch();
public double elapsedTimeMs = 0;
public LQueueBaru(List graph)
{
this.graph = graph;
path = new List();
}
public void LQueue(int startIndex, int toIndex)
{
watch.start();
path.Add(toIndex);
double INF = double.PositiveInfinity;
Queue queue = new Queue();
foreach (var pair in graph)
{
shortestDistances.Add(INF);
predecessorVertex.Add(-1);
}
shortestDistances[startIndex] = 0;
queue.Enqueue(startIndex);
Universitas Sumatera Utara
110
while (queue.Count != 0)
{
int u = queue.Dequeue();
foreach (var pair in graph[u])
{
int v = pair.toIndex;
if (shortestDistances[v] >
shortestDistances[u] + pair.cost)
{
shortestDistances[v] =
shortestDistances[u] + pair.cost;
predecessorVertex[v] = u;
if (!queue.Contains(v))
queue.Enqueue(v);
}
}
}
getPath(startIndex, toIndex);
totalJarak = shortestDistances[toIndex];
elapsedTimeMs = watch.stop();
}
public void getPath(int u, int v)
{
double k;
k = predecessorVertex[v];
if (k == -1 || u == v)
{
return;
}
path.Add((int)k);
getPath(u, (int)k);
}
}
}
Universitas Sumatera Utara
111
CURRICULUM VITAE
Nama
: Dhika Handayani Rangkuti
Alamat Sekarang
: Jln. H Adam Malik Gg Selamat No. 22 Medan
Alamat Orang Tua
: Jln. H Adam Malik Gg Selamat No. 22 Medan
Telp/ Hp
: 081375892549
Email
: dhikahandayani12@gmail.com
Riwayat Pendidikan
2012 – 2016
: S1 Ilmu Komputer Universitas Sumatera Utara, Medan
2009 – 2012
: SMK Telkom Shandy Putra Medan
2006 – 2009
: SMP Negeri 7 Medan
2000 – 2006
: SD Swasta Cenderamata Medan
Keahlian
Bahasa
: Indonesia, Inggris
Pemrograman
: C#, C++, Java Android
Database
: MySql
Design
: Photoshop
Perkantoran
: Microsoft Office
Kursus yang diikuti
TOEFL
Pengalaman Organisasi
[2009]
Anggota Paskibra SMP Negeri 7 Medan
[2010 – 2011]
Sekretaris OSIS SMK Telkom Shandy Putra Medan
[2010 – 2011]
Anggota Paskibraka SMK Telkom Shandy Putra Medan
Universitas Sumatera Utara
112
Pengalaman Kepanitiaan
[2012]
Koordinator Konsumsi Dies Natalis IMILKOM 2012
[2014]
Anggota Dokumentasi Porseni 2014
Seminar
[2014]
Seminar Nasional Literasi Informasi “SENARAI”
Universitas Sumatera Utara
LISTING PROGRAM
Kode Program Algoritma Floyd:
using System;
namespace JarakTerdekat
{
public class Floyd
{
public List P;
public List M;
public double totalJarak;
public int startIndex;
public int endIndex;
public List result;
public int N;
public void init(List inputTable, double N)
{
this.N = (int)N;
P = new List();
result = new List();
M = inputTable;
for (int i = 0; i < N; i++)
{
P.Add(new List());
for (int j = 0; j < N; j++)
{
P[i].Add(-1);
}
}
}
public List calculateShortestPath(int startIndex,
int endIndex)
{
this.startIndex = startIndex;
this.endIndex = endIndex;
result.Add(startIndex);
FloydAlgo(M);
path(startIndex, endIndex);
result.Add(endIndex);
return result;
}
Universitas Sumatera Utara
108
public void path(int u, int v)
{
double k;
k = P[u][v];
if (k == -1)
{
return;
}
path(u, (int)k);
result.Add((int)k);
path((int)k, v);
}
public List FloydAlgo(List M)
{
for (int k = 0; k < N; k++)
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (M[i][k] + M[k][j] < M[i][j])
{
M[i][j] = M[i][k] + M[k][j];
P[i][j] = k;
}
}
}
}
totalJarak = M[startIndex][endIndex];
return M;
}
public int min(int i, int j)
{
if (i > j)
{
return j;
}
return i;
}
public void printMatrix(List Matrix)
{
Console.Write("\n\t");
for (int j = 0; j < N; j++)
{
Console.Write(j + "\t");
}
Console.WriteLine();
for (int j = 0; j < 35; j++)
{
Universitas Sumatera Utara
109
Console.Write("-");
}
Console.WriteLine();
for (int i = 0; i < N; i++)
{
Console.Write(i + " |\t");
for (int j = 0; j < N; j++)
{
Console.Write(Matrix[i][j]);
Console.Write("\t");
}
Console.Write("\n");
}
Console.WriteLine("\n");
}
}
}
Kode Program Algoritma L-Queue :
namespace JarakTerdekat
{
public class LQueueBaru
{
public List graph = new List();
List shortestDistances = new List();
List predecessorVertex = new List();
public double totalJarak;
public List path;
Stopwatch watch = new Stopwatch();
public double elapsedTimeMs = 0;
public LQueueBaru(List graph)
{
this.graph = graph;
path = new List();
}
public void LQueue(int startIndex, int toIndex)
{
watch.start();
path.Add(toIndex);
double INF = double.PositiveInfinity;
Queue queue = new Queue();
foreach (var pair in graph)
{
shortestDistances.Add(INF);
predecessorVertex.Add(-1);
}
shortestDistances[startIndex] = 0;
queue.Enqueue(startIndex);
Universitas Sumatera Utara
110
while (queue.Count != 0)
{
int u = queue.Dequeue();
foreach (var pair in graph[u])
{
int v = pair.toIndex;
if (shortestDistances[v] >
shortestDistances[u] + pair.cost)
{
shortestDistances[v] =
shortestDistances[u] + pair.cost;
predecessorVertex[v] = u;
if (!queue.Contains(v))
queue.Enqueue(v);
}
}
}
getPath(startIndex, toIndex);
totalJarak = shortestDistances[toIndex];
elapsedTimeMs = watch.stop();
}
public void getPath(int u, int v)
{
double k;
k = predecessorVertex[v];
if (k == -1 || u == v)
{
return;
}
path.Add((int)k);
getPath(u, (int)k);
}
}
}
Universitas Sumatera Utara
111
CURRICULUM VITAE
Nama
: Dhika Handayani Rangkuti
Alamat Sekarang
: Jln. H Adam Malik Gg Selamat No. 22 Medan
Alamat Orang Tua
: Jln. H Adam Malik Gg Selamat No. 22 Medan
Telp/ Hp
: 081375892549
: dhikahandayani12@gmail.com
Riwayat Pendidikan
2012 – 2016
: S1 Ilmu Komputer Universitas Sumatera Utara, Medan
2009 – 2012
: SMK Telkom Shandy Putra Medan
2006 – 2009
: SMP Negeri 7 Medan
2000 – 2006
: SD Swasta Cenderamata Medan
Keahlian
Bahasa
: Indonesia, Inggris
Pemrograman
: C#, C++, Java Android
Database
: MySql
Design
: Photoshop
Perkantoran
: Microsoft Office
Kursus yang diikuti
TOEFL
Pengalaman Organisasi
[2009]
Anggota Paskibra SMP Negeri 7 Medan
[2010 – 2011]
Sekretaris OSIS SMK Telkom Shandy Putra Medan
[2010 – 2011]
Anggota Paskibraka SMK Telkom Shandy Putra Medan
Universitas Sumatera Utara
112
Pengalaman Kepanitiaan
[2012]
Koordinator Konsumsi Dies Natalis IMILKOM 2012
[2014]
Anggota Dokumentasi Porseni 2014
Seminar
[2014]
Seminar Nasional Literasi Informasi “SENARAI”
Universitas Sumatera Utara