Question: PROGRAMMING Assignment ( Dijkstra and A * ) Please implement the A * algorithm ( computeAStar ( int , int ) in Graph.java ) .
PROGRAMMING Assignment Dijkstra and A
Please implement the A algorithm computeAStarintint in Graph.java
public class Graph
class Edge implements Comparable
int fromNode;
int connectsToNode;
double weight;
Edge next;
Edgeint from,
int to double weight
fromNode from;
connectsToNode to;
this.weight weight;
next null;
public int compareToEdge e
if weight eweight
return ;
Double dist weight eweight;
return dist : ;
class Node
int nodeNumber;
String nodeName;
int xCoordinate;
int yCoordinate;
void setString name, int x int y
nodeName name;
xCoordinate x;
yCoordinate y;
List nodes;
List edges;
Boolean directed;
public Graphint numberOfNodes, Boolean directed
nodes new ArrayList; List is an abstract type
edges new ArrayList;
for int i ; i numberOfNodes; i
nodes.addi new Node;
nodes.getinodeNumber i;
edges.addi null;
this.directed directed;
public Boolean setNodeint number, String name, int x int y
if number nodes.size
return false;
nodes.getnumbersetname x y;
return true;
public Boolean edgeExistsint fromNode, int toNode
Edge iter edges.getfromNode;
while null iter
if iterconnectsToNode toNode
return true;
iter iter.next;
return false;
public int getNodeint xCoord, int yCoord
for int i ; i nodes.size; i
Node theNode nodes.geti;
if theNodexCoordinate xCoord
&& theNode.yCoordinate yCoord
return i;
return ;
public Boolean addEdgeint fromX, int fromY, int toX, int toY
int fromNode getNodefromX fromY;
int toNode getNodetoX toY;
if fromNode toNode
return false;
return addEdgefromNode toNode;
double euclideanDistanceint fromNodeNumber, int toNodeNumber
Node fromNode nodes.getfromNodeNumber;
Node toNode nodes.gettoNodeNumber;
return Math.sqrtMathpowfromNodexCoordinate toNode.xCoordinate,
Math.powfromNodeyCoordinate toNode.yCoordinate, ;
public Double getEdgeint fromX, int fromY, int toX, int toY
int fromEdge getNodefromX fromY;
int toEdge getNodetoX toY;
if fromEdge toEdge
return null;
return getEdgefromEdge toEdge;
public Double getEdgeint fromNode, int toNode
Edge current edges.getfromNode;
while null current
if toNode current.connectsToNode
return current.weight;
current current.next;
return null;
public Boolean addEdgeint fromNode, int toNode
if edgeExistsfromNode toNodedirected && edgeExiststoNode fromNode
return false;
Double weight euclideanDistancefromNode toNode;
Edge newEdge new EdgefromNode toNode, weight;
newEdge.next edges.getfromNode;
edges.setfromNode newEdge;
if directed
newEdge new EdgetoNode fromNode, weight;
newEdge.next edges.gettoNode;
edges.settoNode newEdge;
return true;
public Graph computeShortestPathint fromNode
Graph rv new Graphnodessize directed;
return rv;
public Graph computeAStarint fromNode, int toNode
Graph rv new Graphnodessize directed;
return rv;
public Graph computeMST
Graph rv new Graphnodessize directed;
return rv;
public class OutputEdge
int fromCoordinateX;
int fromCoordinateY;
int toCoordinateX;
int toCoordinateY;
double edgeWeight;
public double getTotalWeight
Double total ;
Iterator iter edges.iterator;
while iterhasNext
Edge current iter.next;
while null current
total current.weight;
current current.next;
return directed tota
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
