Graph with Reflection and Rewriting

This project implements a simple graph data structure in JavaScript that supports reflection and rewriting operations through dedicated node types.

Features

  • Graph: Stores nodes and directed edges.
  • Node: Base class for all nodes.
  • ReflectionNode: Creates copies of its target nodes and their outgoing edges.
  • RewritingNode: Replaces a target node with a new node while preserving graph connectivity.
  • Traversal: Depthfirst traversal of the graph.

Installation

npm install

Running Tests

npm test

The test suite verifies:

  • Reflection node correctly duplicates target nodes.
  • Rewriting node correctly replaces target nodes.
  • Circular references are handled safely.
  • Graph traversal works after modifications.

Usage Example

const { Graph, Node, ReflectionNode, RewritingNode } = require('./src/index');

const graph = new Graph();
graph.addNode(new Node('A'));
graph.addNode(new Node('B'));
graph.addNode(new Node('C'));
graph.addEdge('A', 'B');
graph.addEdge('B', 'C');

const r = new ReflectionNode('R');
graph.addNode(r);
graph.addEdge('R', 'B');
r.reflect(graph);

const w = new RewritingNode('W');
graph.addNode(w);
graph.addEdge('W', 'C');
const d = new Node('D');
w.rewrite(graph, 'C', d);

console.log(graph.traverse('A'));

License

MIT

S
Description
BroJS: Повторный экзамен: Граф с рефлексией и доработкой
Readme MIT 673 KiB
Languages
Python 51.9%
JavaScript 39.3%
TypeScript 8.8%