Conversation

eriknw

BFS is a workhorse! There are still many BFS-based algorithms still to do.

My main TODO is to benchmark these to give them a proper shakedown. I like to shake down most algorithms we add. Also, I wonder whether we should use A.T or AT in a couple places. I also wonder if we can come up with a heuristic to detect negative cycles.

It may be nice to know whether directed graphs are structurally symmetric. If we knew this, we could improve is_weakly_connected and other algorithms.

Also, there may be a couple NetworkX bugs to fix or behaviors to match.

Implemented:

  • Components
    • is_connected
    • is_weakly_connected
    • node_connected_component
  • Shortest Paths
    • all_pairs_shortest_path_length
    • negative_edge_cycle
    • single_source_shortest_path_length
    • single_target_shortest_path_length
  • Traversal
    • bfs_layers
    • descendants_at_distance

- Components
  - `is_connected`
  - `is_weakly_connected`
  - `node_connected_component`
- Shortest Paths
  - `all_pairs_shortest_path_length`
  - `negative_edge_cycle`
  - `single_source_shortest_path_length`
  - `single_target_shortest_path_length`
- Traversal
  - `bfs_layers`
  - `descendants_at_distance`
@eriknw

I'm also not sure if these are the best algorithms for connected component-related functions. Connected components are an important class of algorithms that we should add soon (for example, we have an implementation of FastSV in a Jupyter notebook that we can port over), so perhaps we'll revisit these algorithms then.

@codecov-commenter

Codecov Report

coverage: 87.71% and project coverage change: +2.46 🎉

Comparison is base (6de1fd6) 69.16% compared to head (029a639) 71.62%.

📣 This organization is not using Codecov’s App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #51      +/-   ##
==========================================
+ Coverage   69.16%   71.62%   +2.46%     
==========================================
  Files          77       89      +12     
  Lines        3152     3461     +309     
  Branches      602      642      +40     
==========================================
+ Hits         2180     2479     +299     
+ Misses        786      783       -3     
- Partials      186      199      +13     
Impacted FilesCoverage Δ
graphblas_algorithms/nxapi/_utils.py57.47% <0.00%> (ø)
graphblas_algorithms/nxapi/cluster.py85.55% <ø> (+7.55%)⬆️
graphblas_algorithms/classes/nodeset.py69.44% <42.85%> (-2.20%)⬇️
...as_algorithms/algorithms/link_analysis/hits_alg.py60.86% <50.00%> (ø)
...blas_algorithms/nxapi/shortest_paths/unweighted.py62.50% <62.50%> (ø)
graphblas_algorithms/classes/nodemap.py50.67% <75.00%> (+1.70%)⬆️
...s_algorithms/algorithms/shortest_paths/weighted.py31.36% <78.12%> (+11.21%)⬆️
...algorithms/algorithms/shortest_paths/unweighted.py78.57% <78.57%> (ø)
graphblas_algorithms/algorithms/dag.py94.28% <81.81%> (+0.73%)⬆️
...as_algorithms/algorithms/shortest_paths/generic.py86.66% <92.30%> (+1.48%)⬆️
... and 26 more

... and 1 file with indirect coverage changes

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

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@eriknw

Merging so we can do a release before PyConUS. May be able to benchmark and shakedown some algorithms later, but they're probably good enough.

@eriknweriknw merged commit 09776b6 into python-graphblas:main Apr 15, 2023
Sign up for free to join this conversation on . Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.