Python icon indicating copy to clipboard operation
Python copied to clipboard

Add Fibonacci Heap implementation

Open mRcOol7 opened this issue 1 year ago • 0 comments

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 FibonacciHeap with core operations: insert, extract_min, decrease_key, and delete.
  • Added Node class 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 #". Let me know if you need any more adjustments!

mRcOol7 avatar Oct 07 '24 16:10 mRcOol7