algorithms's People
algorithms's Issues
Consecutively loading multiple graphs leads to odd behaviour
Multiple nodes of the same name will be displayed, while only the most recently produced one will be valid.
This only occurs if not clicking on the "Clear all elements" in the top window menu between the loading of each graph.
The expected behaviour of the "load graph" button is therefore ambiguous: should it allow for extending the current graph, or should it clear the current one before creating the new one?
"Do one <algorithm> step" button does not signal to the user when the algorithm is done
The algorithm implementations provide no signals to graph_maker that they are done, but additional calls to their doStep()
methods may raise a variety of exceptions.
(Also, not all exceptions are handled in doStep()
.)
It is therefore unclear to the user that the algorithm has in fact proceeded to completion and not failed with some error.
DFS algorithm does not support drawing the progress of edge exploration
The CLRS algorithm explores adjacent vertices, so the implementation does too (neighbouring vertices), without recording any data relatable to the edges themselves. Therefore, when drawing the graph, there is no property of the edges that can direct how they should be drawn.
CLRS do show how edges are explored, with step-by-step illustrations in the text-book, but their pseudo-code does not support that either.
Implement Bellman-Ford for single-source-shortest-paths
...and negative cycle detection.
Add proper operations counting to the algorithms
This can become a new check for the unit tests. Should be able to apply different algorithms on same input and get predictably different results.
Algorithm initialization is not synced with completion of graph production
The user can choose an algorithm at any time, either after the graph is complete, during its production, or when it is empty. Currently, when the user chooses an algorithm in the top window menu, it is initialized with the graph in that current state. Later user additions to the graph do not re-initialize the graph.
Other case: the user has used the algorithm to process a graph, then clears all and begins a new one. The clearAll
method will reinitialize the algorithm with an empty graph.
The only time that we really know that the user is done producing the graph is when they first click on the "Do step..." button.
Implement breadth-first-search (BFS)
Consider its context of use, to determine what features the class should offer.
Implement Prim's algorithm for minimum spanning tree (MST)
Want to be able to compare it to Kruskal.
Implement flow networks
Implement Ford-Fulkerson; implement min-cut.
Dijkstra does not support 'doStep()'
Implement the 'doStep()' method and implement a drawing procedure that well explains the single-source-shortest-paths progression.
Also determine how the user can define the source vertex in graph_maker.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.