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);
   ...