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.
Added Kann's algorithm #1676
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
Added Kann's algorithm #1676
Changes from 1 commit
74e8ec2
9f3aa64
2f2c099
3e9c9e4
f0325a5
99535c5
35fe1c3
ef63f66
154a330
191993f
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(By the way, you could preallocate this array.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Preallocate could increase the time complexity. At the end we need to check array filled or not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, not really. It's still linear time in the size of the graph - O(n + m) where n is the number of nodes and m is the number of edges. (Allocation can also optimistically be assumed to be constant time.)
Yes, and that can be done in constant time, if you keep an index to the last element. It'd look something like this:
Or another variant to write this would be:
The benefit is that when a topological order exists (which should usually be the case; this is the "happy path"), you can save some reallocations of the array.
But this is just a suggestion, I'm fine with pushing to keep the code simple as well. Though perhaps the preallocation variant is a bit more readable, since it makes explicit that we want to have all n nodes be in this array.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You forgot to delete this file.