Source Code Algoritma Greedy: Nama: M Hendro Junawarko NPM: 18312215
Source Code Algoritma Greedy: Nama: M Hendro Junawarko NPM: 18312215
NPM: 18312215
package com.hendro;
import java.awt.Point;
import java.util.LinkedList;
int maps[][] = {
{1, 3, 2, 3, 3},
{2, 3, -1, -1, -1},
{2, 4, -1, 1, -1},
{5, 2, -1, 3, -1},
{2, 3, 5, 1, 4}
};
Point direction[] = {
new Point(1, 0), new Point(1, 1),
new Point(0, 1), new Point(-1, 1),
new Point(-1, 0), new Point(-1, -1),
new Point(0, -1), new Point(1, -1),};
public Greedy() {
Point start = new Point(3, 4);
Point target = new Point(3, 0);
System.out.println("Hasil Pencarian Greedy");
LinkedList<MapNode> path1 = findPath(start, target);
if (path1 == null) {
System.out.println("Alamat Tidak Ditemukan");
} else {
int cost = 0;
for (MapNode node : path1) {
Point loc = node.getLocation();
cost += maps[loc.y][loc.x];
if (!node.getLocation().equals(target)) {
System.out.println(node.getId() + " -> ");
} else {
System.out.println("(" + node.getId() + ")");
}
}
System.out.println("\nTotal cost : " + cost);
}
System.out.println("Hasil pencarian Modified Greedy BFS");
LinkedList<MapNode> path2 = findPathModified(start, target);
if (path2 == null) {
System.out.println("Alaamt tidak ditemukan");
} else {
int cost = 0;
for (MapNode node : path2) {
Point loc = node.getLocation();
cost += maps[loc.y][loc.x];
if (!node.getLocation().equals(target)) {
System.out.print(node.getId() + " -> ");
} else {
System.out.print("(" + node.getId() + ")");
}
}
System.out.println("\nTotal cost : " + cost);
}
}
openList.add(new MapNode(src));
MapNode leaves = null;
while (openList.size() > 0) {
MapNode cNode = openList.removeFirst();
closedList.add(cNode);
if (cNode.equals(dst)) {
leaves = cNode;
break;
} else {
Point bestPoint = null;
double bestDistance = Double.MAX_VALUE;
for (Point nb : getNeighbors(cNode.getLocation())) {
double tmpDistance = getSLDHeuristic(nb, dst);
if (bestPoint == null || tmpDistance < bestDistance) {
bestPoint = nb;
bestDistance = tmpDistance;
}
}
if (bestPoint != null) {
MapNode child = new MapNode(bestPoint);
if (!openList.contains(child)
&& !closedList.contains(child)) {
openList.add(child);
cNode.addChild(child);
}
}
}
}
if (leaves != null) {
return getPath(leaves);
}
return null;
}
neighbors.add(ttg);
}
}
return neighbors;
}