lab 14
by HSilvaDaytona
HTML
Assignment 14
<p /> From
<select id="from">
<option value='A'>A</option>
<option value='B'>B</option>
<option value='C'>C</option>
<option value='D'>D</option>
<option value='E'>E</option>
<option value='F'>F</option>
<option value='G'>G</option>
</select>To
<select id="to">
<option value='A'>A</option>
<option value='B'>B</option>
<option value='C'>C</option>
<option value='D'>D</option>
<option value='E'>E</option>
<option value='F'>F</option>
<option value='G'>G</option>
</select>
<input type="button" id="click" onclick="Calc();" value="Calc" />
<br/>
<br/><span id="output" />
JavaScript
//adding nodes.
class graph {
constructor() {
this.edges = {};
}
addingNodes(label) {
this.edges[label] = {};
};
addingEdge(from, to, cost) {
this.edges[from][to] = cost;
this.edges[to][from] = cost;
};
CalcPath(from, to, cost, paths) {
paths.push(from);
if (from == to) {
ShowPaths(paths, cost);
} else {
for (var connected in this.edges[from]) {
if (paths.indexOf(connected) < 0) { // not visited yet
var thiscost = this.edges[from][connected];
this.CalcPath(connected, to, cost + thiscost, paths);
}
}
}
paths.pop();
};
} //Graph
function ShowPaths(paths, cost) {
var value = paths[0];
for (var i = 1; i < paths.length; i++) {
value = value + ", " + paths[i];
}
value += ": " + cost;
var result = document.getElementById('result');
result.innerHTML += value + "<br />";
} //showpaths
window.Calc = function() {
var result = document.getElementById('output');
result.innerHTML = "";
var from = document.getElementById('from').value;
var to = document.getElementById('to').value;
let SomeGraph = new graph();
// nodes
SomeGraph.addingNodes('A');
SomeGraph.addingNodes('B');
SomeGraph.addingNodes('C');
SomeGraph.addingNodes('D');
SomeGraph.addingNodes('E');
SomeGraph.addingNodes('F');
SomeGraph.addingNodes('G');
// add edges
SomeGraph.addingEdge('A', 'B', 2);
SomeGraph.addingEdge('A', 'C', 1);
SomeGraph.addingEdge('B', 'D', 1);
SomeGraph.addingEdge('B', 'G', 1);
SomeGraph.addingEdge('C', 'D', 1);
SomeGraph.addingEdge('C', 'E', 1);
SomeGraph.addingEdge('D', 'E', 2);
SomeGraph.addingEdge('D', 'F', 1);
SomeGraph.addingEdge('D', 'G', 2);
result.innerHTML = from + " to " + to + "<br />";
SomeGraph.CalcPath(from, to, 0, []);
}; //end calculate