Assignment 14(working)
by Ebony McCoy
HTML
<br/><br/>
Select two nodes:
<br />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" onclick="calculate();" value="Calculate" />
<br/>
<br/><p id="result"> </p>
JavaScript
/*var Node = function(_name) {
this.name = _name;
this.edges = [];
this.discovered = false;
return this;
}
var Edge = function(_cost) {
this.from = null;
this.to = null;
this.explored = false;
return this;
}
var Traversal = function(){
this.path = [];
this.cost = 0;
}*/
function graph () {
//this.nodes = [];
this.edges = {};
//this.paths = [];
}
graph.prototype.addNode = function(name) {
this.edges[name] = {};
};
graph.prototype.addEdge = function(from, to, cost) {
this.edges[from][to] = cost;
this.edges[to][from] = cost;
}
graph.prototype.calculatePaths = function(from, to,cost, paths) {
paths.push(from);
if(from == to){
printPaths(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.calculate_paths(connected, to, cost + thiscost, paths);
}
}
}
paths.pop();
};
// Must implement
function printPaths(paths,cost) {
var s = paths[0];
for (var i = 1; i < paths.length; i++) {
s = s + ", " + paths[i];
//alert(this.paths[i].path.length)
}
s += " : "+ cost;
var result = document.getElementById("result");
result.innerHTML += s + "<br />";
}
function calculate() {
var result = document.getElementById('result');
result.innerHTML = "";
var from = document.getElementById('from');
var to = document.getElementById('to');
var graph = new Graph();
var a = graph.addNode('A');
var b = graph.addNode('B');
var c = graph.addNode('C');
var d = graph.addNode('D');
var e = graph.addNode('E');
var f = graph.addNode('F');
var g = graph.addNode('G');
graph.addEdge(a, b, 2);
graph.addEdge(a, c, 1);
graph.addEdge(b, d, 1);
graph.addEdge(b, g, 1);
graph.addEdge(c, d, 1);
...