gramoloss
Version:
Graph theory package for edition and computation
60 lines (59 loc) • 3.61 kB
JavaScript
"use strict";
// console.log(Graph.fromEdgesList([[2,3]]).hasCycle() == false);
// console.log(Graph.fromEdgesList([[0,1],[1,2],[2,0]]).hasCycle() == true);
// console.log(Graph.fromEdgesList([[0,1],[1,2],[2,3],[3,0]]).hasCycle() == true);
// console.log(Graph.fromEdgesList([[0,1],[1,2],[2,4],[2,3],[3,1]]).hasCycle() == true);
// console.log(Graph.fromEdgesList([[0,1],[1,2],[3,4],[4,5]]).hasCycle() == false);
Object.defineProperty(exports, "__esModule", { value: true });
const graph_1 = require("../graph");
// Check on random graph that it returns a cycle
// for (let j = 0 ; j < 1000 ; j ++){
// const g = Graph.generateRandomGNP(20, 0.1);
// const [b, cycle] = g.hasCycle2();
// if ( b){
// for (let i = 0 ; i < cycle.length; i ++){
// const j = (i+1)%cycle.length;
// if (g.hasLink(cycle[i], cycle[j], ORIENTATION.UNDIRECTED) == false){
// console.log("bug", cycle[i], cycle[j]);
// console.log([...g.links.values()].map( v => {return [v.startVertex.index, v.endVertex.index]}))
// console.log(cycle)
// }
// }
// // console.log("checked");
// }
// }
console.log("has_cycle2");
console.log(graph_1.Graph.fromEdges([[2, 3]]).hasCycle2()[0] == false);
console.log(graph_1.Graph.fromEdges([[0, 1], [1, 2], [2, 0]]).hasCycle2()[0] == true);
console.log(graph_1.Graph.fromEdges([[0, 1], [1, 2], [2, 3], [3, 0]]).hasCycle2()[0] == true);
console.log(graph_1.Graph.fromEdges([[0, 1], [1, 2], [2, 4], [2, 3], [3, 1]]).hasCycle2()[0] == true);
console.log(graph_1.Graph.fromEdges([[0, 1], [1, 2], [3, 4], [4, 5]]).hasCycle2()[0] == false);
console.log(graph_1.Graph.fromEdges([[0, 1], [1, 2], [2, 3], [3, 0], [0, 4]]).hasCycle2()[1].length == 4);
// const g = Graph.fromEdgesList([[1,2],[2,3],[3,4],[4,0],[0,5],[4,6],[3,7],[2,8],[0,9],[1,10],[3,11],[4,12],[6,14],[0,13],[13,15],[11,16],[2,17],[8,18],[16,19],[16,20],[11,21],[5,22],[13,23],[9,24],[9,25],[13,26],[1,27],[17,28],[12,29],[6,30],[7,31],[10,32],[3,33],[22,34],[5,35],[15,36],[17,37],[16,38],[7,39],[20,40],[21,41],[15,42],[35,43],[26,44],[9,45],[12,46],[8,47],[17,48],[11,49]])
// console.time("has_cycle");
// for ( let i= 0 ; i < 10000 ; i ++){
// g.hasCycle();
// }
// console.timeEnd("has_cycle");
// console.time("has_cycle2");
// for ( let i= 0 ; i < 10000 ; i ++){
// g.hasCycle2();
// }
// console.timeEnd("has_cycle2");
console.log("getDirectedCycle");
console.log(graph_1.Graph.fromArcs([]).getDirectedCycle() === undefined);
console.log(graph_1.Graph.fromArcs([[2, 3]]).getDirectedCycle() === undefined);
console.log(graph_1.Graph.fromArcs([[0, 1], [1, 2], [0, 2]]).getDirectedCycle() === undefined);
console.log(graph_1.Graph.fromArcs([[0, 1], [2, 1], [0, 2]]).getDirectedCycle() === undefined);
console.log(graph_1.Graph.fromArcs([[0, 1], [0, 2], [1, 2], [1, 3], [2, 3], [3, 4], [3, 5], [5, 4]]).getDirectedCycle() === undefined);
const c1 = graph_1.Graph.fromArcs([[1, 3], [3, 0], [0, 1]]).getDirectedCycle();
console.log(typeof c1 != "undefined" && c1.length == 3);
const c2 = graph_1.Graph.fromArcs([[3, 1], [0, 3], [1, 0]]).getDirectedCycle();
console.log(typeof c2 != "undefined" && c2.length == 3);
const c3 = graph_1.Graph.fromArcs([[0, 1], [1, 2], [2, 3], [3, 0], [3, 1]]).getDirectedCycle();
console.log(typeof c3 != "undefined");
console.log(graph_1.Graph.petersen().girth() == 5);
console.log(graph_1.Graph.clique(4).girth() == 3);
console.log(graph_1.Graph.clique(5).girth() == 3);
console.log(graph_1.Graph.Paley(13).girth() == 3);
console.log(graph_1.Graph.path(4).girth() == Infinity);