Implementasi dan Perbandingan Algoritma Minimum Spanning Tree Borůvka dan Prim Dalam Optimasi Panjang Jalur Listrik

A-66

LAMPIRAN

LISTING PROGRAM

KodeůlgoritmaBor vka:
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceJarakTerdekat
{
classBoruvka
{
public ListresultPath;
public double totalJarak;
publicBoruvka()
{
resultPath = new List();

totalJarak = 0;
}
class Graph
{
publicint V, E;
public List edge = new List();
};
class subset
{
publicint parent;
publicint rank;
};
voidboruvkaMST(Graph graph)
{
int V = graph.V;
int E = graph.E;
List edge = graph.edge;
List subsets = new List();
List cheapest = new List();
cheapest.Add(-1);


Universitas Sumatera Utara

A-67

for (int v = 0; v < V; ++v)
{
subsets.Add(new subset());
subsets[v].parent = v;
subsets[v].rank = 0;
cheapest.Add(-1);
}
intnumTrees = V;
doubleMSTweight = 0;
while (numTrees> 1)
{
for (int i = 0; i < E; i++)
{
int set1 = find(subsets, edge[i].src);
int set2 = find(subsets, edge[i].dest);

if (set1 == set2)
continue;
else
{
if (checkIfCurrentEdgeIsCloserToPreviousCheapest(set1, i, edge,
cheapest))
cheapest[set1] = i;
if (checkIfCurrentEdgeIsCloserToPreviousCheapest(set2, i, edge,
cheapest))
cheapest[set2] = i;
}
}
for (int i = 0; i < V; i++)
{
if (cheapest[i] != -1)
{
int set1 = find(subsets, edge[cheapest[i]].src);
int set2 = find(subsets, edge[cheapest[i]].dest);
if (set1 == set2)
continue;

MSTweight += edge[cheapest[i]].weight;
resultPath.Add(edge[cheapest[i]].index);
Union(subsets, set1, set2);
numTrees--;
}
}
for (int i = 0; i < V; i++)
{
cheapest[i] = -1;
}
}

Universitas Sumatera Utara

A-68

totalJarak = MSTweight;
return;
}
privateboolcheckIfCurrentEdgeIsCloserToPreviousCheapest(intedgeIn

dex, int i, List edge, List cheapest)
{
varcond = false;
if (cheapest[edgeIndex] == -1)
cond = true;
if (cheapest[edgeIndex] != -1)
{
if (edge[cheapest[edgeIndex]].weight > edge[i].weight)
cond = true;
}
returncond;
}
Graph createGraph(int V, int E)
{
Graph graph = new Graph();
graph.V = V;
graph.E = E;
graph.edge = new List();
return graph;
}

int find(List subsets, int i)
{
if (subsets[i].parent != i)
subsets[i].parent =
find(subsets, subsets[i].parent);
return subsets[i].parent;
}
void Union(List subsets, int x, int y)
{
intxroot = find(subsets, x);
intyroot = find(subsets, y);
if (subsets[xroot].rank < subsets[yroot].rank)
subsets[xroot].parent = yroot;
else if (subsets[xroot].rank > subsets[yroot].rank)
subsets[yroot].parent = xroot;
else
{
subsets[yroot].parent = xroot;
subsets[xroot].rank++;
}

}
public List start(List edges, intnumOfVertices,
intnumOfEdges)
{

Universitas Sumatera Utara

A-69

Graph graph = createGraph(numOfVertices, numOfEdges);
graph.edge = edges;
boruvkaMST(graph);
returnresultPath;
}
public void displayEdges(List edges)
{
int i = 1;
foreach (var edge in edges)
{
Console.WriteLine(i + ") edge " + edge.src + "-" + edge.dest + "

: " + edge.weight);
i++;
}
}
}
}

KodeAlgoritmaPrim:
using System;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceJarakTerdekat
{
class Prim
{
public ListresultEdgeCollection;
public List edges;
publicint V;

public double totalJarak;
public Prim()
{
resultEdgeCollection = new List();
totalJarak = 0;
}
publicintminKey(List key, ListmstSet)
{
double min = double.PositiveInfinity;
intmin_index = 0;
for (int v = 0; v < V; v++)
if (mstSet[v] == false && key[v] < min)
{

Universitas Sumatera Utara

A-70

min = key[v];
min_index = v;

}
returnmin_index;
}
public void printMST(List parent, int n, List
graph)
{
Console.WriteLine("Edge
Weight\n");
for (int i = 1; i < V; i++)
{
Console.WriteLine(String.Format("{0} - {1}
{2} \n", parent[i],
i, graph[i][parent[i]]));
totalJarak += graph[i][parent[i]];
addEdgeIndexToResult(parent[i], i);
}
}
public void addEdgeIndexToResult(intsrc, intdest)
{
foreach (var edge in edges)

{
if (((edge.src == src) && (edge.dest == dest)) || ((edge.src ==
dest) && (edge.dest == src)))
{
resultEdgeCollection.Add(edge.index);
}
}
}
public void primMST(List graph)
{
List parent = new List();
List key = new List();
ListmstSet = new List();
parent.Add(0);
for (int i = 0; i < V; i++)
{
key.Add(0);
mstSet.Add(false);
key[i] = double.PositiveInfinity;
mstSet[i] = false;
}
key[0] = 0;
parent[0] = -1;
for (int count = 0; count < V - 1; count++)
{
int u = minKey(key, mstSet);
mstSet[u] = true;
for (int v = 0; v < V; v++)
{

Universitas Sumatera Utara

A-71

parent.Add(0);
if (((graph[u][v] > 0) ? true : false) &&mstSet[v] == false &&
graph[u][v] < key[v])
{
parent[v] = u;
key[v] = graph[u][v];
}
}
}
printMST(parent, V, graph);
}
public List main(List edges,
ListgraphCollection, int V)
{
this.edges = edges;
this.V = V;
primMST(graphCollection);
returnresultEdgeCollection;
}
}
}

Universitas Sumatera Utara

B-1

CURRICULUM VITAE
Data Pribadi
Nama
Tempat/TanggalLahir
Tinggi/ BeratBadan
Agama
AlamatSekarang

:
:
:
:
:

YohanesSimare Mare
Jakarta/ 19 Mei 1994
168 cm/ 70 kg
Kristen Protestan
Jl. Sei Padang Gg. Saudara
No. 10 Medan
Alamat Orang Tua
:
Jl. HuseinSastranegaraRt.03
Rw. 02 No. 18 Tangerang
Telp/ Hp
:
082299608784
Email
:
yohanesmaremare@gmail.com
-------------------------------------------------------------------------------------------------------RiwayatPendidikan
[2012 – 2016]

: S1 IlmuKomputerUniversitas Sumatera Utara, Medan

[2009 – 2012]

: SMA Negeri 84Jakarta

[2006 – 2009]

:SMP Negeri 169Jakarta

[2001 – 2006]

: SD NegeriPegadungan 06 Jakarta

[2001 – 2006] : SD Santa Patricia Tangerang
-------------------------------------------------------------------------------------------------------Keahlian
KeahlianKomputer :
Pemrograman

: C#, PHP

Database

: MySQL

Desain

: Coreldraw, Adobe Photoshop

Multimedia

: Adobe Flash, Adobe Illustrator

Perkantoran
: Microsoft Office
-------------------------------------------------------------------------------------------------------Kursus yang diikuti
Briton International English School

Universitas Sumatera Utara

B-2
-------------------------------------------------------------------------------------------------------PengalamanOrganisasi
[2006 – 2009] Anggota PMR SMP Negeri 169 Jakarta
[2019 – 2011] Anggota PMR SMA Negeri 84 Jakarta
--------------------------------------------------------------------------------------------------------

PengalamanKepanitiaan
[2012]

Anggota Dana Porseni 2014 IlmuKomputerUniversitas

[2014]

AnggotaKesehatan PMB 2014 IlmuKomputerUniversitas

--------------------------------------------------------------------------------------------------------

Seminar
[2013]

Seminar NasionalGeloraLiterasiTeknologiInformasi&Komunikasi “Si GELITIK”

[2014]

Seminar NasionalLiterasiInformasi “SENůRůI”

[2014]

Seminar Open BTS "ICONS"

Universitas Sumatera Utara