BIT-Decomposition, performance tests and DAG resolution#3
Open
Mohamine75 wants to merge 11 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following items :
BIT decomposition of DAG using two different methods : Hashmaps and adjacency list. The corresponding files are
resolution_using_list.rsandresolution_using_hashmap.rs.Transitive reduction using Floyd-Warshall's algorithm O(n^3) and another method using topologic order and Kahn's algorithm. Everything related to topologic ordering and reduction is in the
transitive_reduction.rsfile. The Floyd-Warshall's algorithm isn't really used in the project. These methods are common to the two resolution methods.We can now read integrals directly from a text file, using the method
integrate_spec_filewhich is in the fileintegrator.rs. In the same file we added a debug feature but no longer use it, By using the reading feature, you can check how much time took the integrator by checking thehistorique.txtfile. Moreover, the time algorithm cannot bear an integral with more than 40 variables, it will take way more than 3 minutes, depending on the CPU. The reason is the exponential nature of the algorithm.The project can be run in two ways now :
-
cargo run --bin create_integrale, in order to create random integrals and write them down in a file-
--bin --<OPTIONS> rustegrator --<OPTIONAL_FILE> --<OPTIONAL_INTEGRAL>, you can either provide a file with integrals or directly an integral, or both. You must provide at least one of them.