Add Fibonacci Heap implementation
Here's a structured format for your pull request, incorporating your details along with placeholders for the checklist and description. You can copy and paste this directly into your PR:
Title
Implement Fibonacci Heap with Core Operations
Description
This pull request implements the FibonacciHeap data structure in Python, featuring core operations such as insert, extract_min, decrease_key, and delete. The implementation includes a Node class to represent each heap node and optimizes for amortized time complexity, providing efficient operations crucial for algorithms like Dijkstra's.
- Implemented
FibonacciHeapwith core operations:insert,extract_min,decrease_key, anddelete. - Added
Nodeclass for heap node structure. - Optimized for amortized time complexity with O(1) inserts and O(log n) extract min.
- Included example usage and basic documentation.
Describe your change:
- [x] Add an algorithm?
- [ ] Fix a bug or typo in an existing algorithm?
- [ ] Add or change doctests? -- Note: Please avoid changing both code and tests in a single pull request.
- [ ] Documentation change?
Checklist:
- [ ] I have read CONTRIBUTING.md.
- [ ] This pull request is all my own work -- I have not plagiarized.
- [ ] I know that pull requests will not be merged if they fail the automated tests.
- [ ] This PR only changes one algorithm file. To ease review, please open separate PRs for separate algorithms.
- [ ] All new Python files are placed inside an existing directory.
- [ ] All filenames are in all lowercase characters with no spaces or dashes.
- [ ] All functions and variable names follow Python naming conventions.
- [ ] All function parameters and return values are annotated with Python type hints.
- [ ] All functions have doctests that pass the automated testing.
- [ ] All new algorithms include at least one URL that points to Wikipedia or another similar explanation.
- [ ] If this pull request resolves one or more open issues, then the description above includes the issue number(s) with a closing keyword: "Fixes #ISSUE-NUMBER".
Feel free to check or uncheck items in the checklist according to the current status of your pull request. If you have an issue number, you can also add it to the description section as "Fixes #