Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement kahn's algorithm for topological sorting #259

Merged
merged 1 commit into from
Jan 10, 2023

Conversation

pradkrish
Copy link
Contributor

Closes #237

@github-actions github-actions bot added core something about core repo something about repo test Something about test labels Dec 28, 2022
@ghost
Copy link

ghost commented Dec 28, 2022

👇 Click on the image for a new way to code review
  • Make big changes easier — review code in small groups of related files

  • Know where to start — see the whole change at a glance

  • Take a code tour — explore the change with an interactive tour

  • Make comments and review — all fully sync’ed with github

    Try it now!

Review these changes using an interactive CodeSee Map

Legend

CodeSee Map Legend

@pradkrish
Copy link
Contributor Author

@ZigRazor After implementation of Kahn's algorithm, I realised that the implementation of isCyclicDirectedGraphBFS()is very similar to Kahn's algorithm. Kahn's algorithm can be used for both sorting and cycle detection. I suggest that we create a new task wherein we remove isCyclicDirectedGraphBFS() and use kahn() instead for cycle detection. If you are okay with it, create an issue and assign it to me and I can fix it right away. Thanks.

@codecov-commenter
Copy link

Codecov Report

Merging #259 (28f4994) into master (bcce7bf) will decrease coverage by 0.06%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #259      +/-   ##
==========================================
- Coverage   96.92%   96.86%   -0.07%     
==========================================
  Files          48       49       +1     
  Lines        5895     6065     +170     
==========================================
+ Hits         5714     5875     +161     
- Misses        181      190       +9     
Flag Coverage Δ
unittests 96.86% <100.00%> (-0.07%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
include/Graph/Graph.hpp 93.38% <100.00%> (+0.21%) ⬆️
test/KahnTest.cpp 100.00% <100.00%> (ø)
include/Partitioning/HDRF.hpp 75.82% <0.00%> (-5.50%) ⬇️
include/Partitioning/WeightBalancedLibra.hpp 75.00% <0.00%> (-4.17%) ⬇️
include/Partitioning/GreedyVertexCut.hpp 86.73% <0.00%> (-4.09%) ⬇️
include/Partitioning/EdgeBalancedVertexCut.hpp 80.39% <0.00%> (+1.96%) ⬆️
include/Partitioning/EBV.hpp 88.05% <0.00%> (+2.98%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@ZigRazor ZigRazor self-assigned this Jan 10, 2023
@ZigRazor ZigRazor added this to the Algorithm Implementation milestone Jan 10, 2023
@ZigRazor ZigRazor merged commit 9c05b35 into ZigRazor:master Jan 10, 2023
ZigRazor added a commit that referenced this pull request Mar 21, 2023
* introduce topological sort for graph (#247)

* implement topological sort based on dfs
* add benchmark for topological sort
* add basic test for topological sort

Co-authored-by: suncanghuai <suncanghuai@gmail.com>

* Fix typo in link specification (#248)

This PR removes an additional space character between link text and link URL, which caused faulty formatting of the README.md file.

* introduce WeightBalancedLibra algorithm(vertex-cut graph partition) (#249)

* implement WeightBalancedLibra algorithm based on paper pseudocode
* add weight-related apis for class CoordinatedPartitionState
* adjust set operations of class CoordinatedRecord
* append a testcase in PartitionTest.cpp for WB-Libra

Co-authored-by: suncanghuai <suncanghuai@hesaitech.com>

* Update README.md

* Update README.md

* Install the CodeSee workflow. Learn more at https://docs.codesee.io (#250)

Co-authored-by: codesee-maps[bot] <86324825+codesee-maps[bot]@users.noreply.github.com>

* * implement multi-thread bfs (#252)

* add testcases for multi-thread bfs(in BFSTest.cpp)
* add benchmark for multi-thread bfs(in BFS_BM.cpp)

Co-authored-by: suncanghuai <suncanghuai@gmail.com>

* Update Readme Roadmap

* Implement best first search (#254)

* first implementation and tests

* add docs and minor changes

* minor change

* minor change

* Update README.md

* Update README.md

* Include best first search test (#258)

* Update README for best first search algorithm (#257)

* Update README for best first search algorithm

* minor change

* minor change

* minor review changes

* Implement kahn's algorithm for topological sorting (#259)

* Improved return type for Kosaraju's algoritm + tests (#260)

* custom return type for kosaraju()

* Tests for Kosaraju's algorithm

* fixed minor issues

* fixed merge issue

* Update Road Map

* Update README.md

* Reworked Cmake

Signed-off-by: GitHub <noreply@github.com>

* Add partition Example ( HDRF )

Signed-off-by: GitHub <noreply@github.com>

* Corrected Partition Class
Fix #263

Signed-off-by: GitHub <noreply@github.com>

* Update Readme for Roadmap

Signed-off-by: GitHub <noreply@github.com>

* Corrected Cmake for old Example

Signed-off-by: GitHub <noreply@github.com>

* Update cmake.yml

* Update benchmark_pr.yml

* Update benchmark.yml

* Update Code_Coverage.yml

* Correction for Graph.hpp

Signed-off-by: GitHub <noreply@github.com>

* Update Code_Coverage.yml

Parallel compilation

* Update benchmark.yml

parallel compilation

* Update benchmark_pr.yml

parallel compilation

* Update cmake.yml

parallel compilation

* Update codeql-analysis.yml

remove useless steps:
- manually installed google test and benchmark

* Create .github/workflows/super-linter.yml

Added Super-Linter

* Update super-linter.yml

* Create .clang-format

* Reformatted Files
with clang-format with syle "Google"

Signed-off-by: GitHub <noreply@github.com>

* Delete super-linter.yml

* Create .github/workflows/codeql.yml

* Delete codeql-analysis.yml

* Update README.md

* Create .github/workflows/codacy.yml

* Create .github/workflows/snyk-security.yml

* Update snyk-security.yml

* Delete snyk-security.yml

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: ARockHammer <37604654+SunCangHuai@users.noreply.github.com>
Co-authored-by: suncanghuai <suncanghuai@gmail.com>
Co-authored-by: David Chocholatý <chocholaty.david@protonmail.com>
Co-authored-by: suncanghuai <suncanghuai@hesaitech.com>
Co-authored-by: codesee-maps[bot] <86324825+codesee-maps[bot]@users.noreply.github.com>
Co-authored-by: Pradeep Krishnamurthy <pradkrish84@gmail.com>
Co-authored-by: David Sapienza <david.sapienza@protonmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core something about core repo something about repo test Something about test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Introduction of Kahn's Algorithm for topological sort
3 participants