Skip to content

Commit cfff37e

Browse files
notes for future development
1 parent d9a8b0a commit cfff37e

File tree

2 files changed

+199
-0
lines changed

2 files changed

+199
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
Sept 10, 2025:
2+
3+
consider these methods for src. Minor revisions needed in some of them,
4+
including API revisions:
5+
6+
LAGr_BreadthFirstSearch_Extended.c: uses LG_:
7+
LG_BreadthFirstSearch_SSGrB_Extended.c
8+
LG_BreadthFirstSearch_vanilla_Extended.c
9+
LAGr_PeerPressureClustering.c
10+
LAGraph_AllKCore.c: need both basic & adv methods; this is mixed
11+
LAGraph_AllKTruss.c
12+
LAGraph_HITS.c
13+
LAGraph_Hdip_Fiedler.c: needs lots of polish
14+
LAGraph_KCore.c: need both basic & adv
15+
LAGraph_KTruss.c
16+
LAGraph_MaximalIndependentSet.c: rename LAGr_, need a basic method
17+
LAGraph_SquareClustering.c
18+
LAGraph_VertexCentrality_Triangle.c
19+
LAGraph_coloring_MIS.c
20+
LAGraph_coloring_independent_set.c
21+
LAGraph_lcc.c
22+
LAGraph_cdlp.c: use Container methods
23+
24+
these need "vanilla" methods, or do we abandon the need for vanilla
25+
methods and just require SuiteSparse:GraphBLAS?
26+
27+
LAGr_EdgeBetweennessCentrality.c
28+
LAGr_MarkovClustering.c (but see latest issue posted)
29+
LAGr_Modularity.c
30+
LAGr_PartitionQuality.c
31+
LAGr_SwapEdges.c
32+
LAGraph_SwapEdges.c
33+
LAGraph_CFL_reachability.c
34+
LAGraph_EstimateDiameter.c
35+
LAGraph_ExactDiameter.c
36+
LAGraph_FastGraphletTransform.c
37+
LAGraph_KCoreDecompose.c
38+
LAGraph_MultiSourceBFS.c
39+
LAGraph_RegularPathQuery.c
40+
LAGraph_RichClubCoefficient.c
41+
LAGraph_scc.c
42+
LG_CC_FastSV5.c
43+
LG_CC_FastSV7_FA.c
44+
45+
Algorithms need work:
46+
47+
LAGr_MaxFlow.c (need to provide output R matrix? And flow_matrix is
48+
expensive to compute; revise)
49+
LAGraph_argminmax.c
50+
LAGraph_msf.c
51+
LAGraph_BF_*.c: need just one variant
52+
53+
need new LAGraph_Graph enums:
54+
55+
LAGraph_MaximalMatching.c: need LAGraph_Graph incidence matrix
56+
LAGraph_Coarsen_Matching.c: need LAGraph_Graph incidence matrix,
57+
and vanilla method
58+
LAGr_MaximumMatching.c: need to switch to Container methods;
59+
need LAGraph_Graph bipartite graph, and vanilla method
60+
LAGraph_cc_lacc.c: unsure
61+
62+
do not consider:
63+
64+
LAGr_PageRankGX.c: for LDBC benchmarks only
65+
LAGr_TriangleCount_GPU.c: for testing draft GPU kernels only
66+
LAGraph_dnn.c: for an IEEE HPEC Graph Challenge only
67+
LAGraph_HelloWorld.c: will always be experimental
68+
LAGraph_cdlp_withsort.c: OK, but slow, see LAGraph_cdlp instead
69+
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
2+
Algorithms in GraphBLAS vs Kepner & Gilbert's book:
3+
4+
Graph partitioning
5+
we already have the Fiedler vector, graph coarsening, pseudo-peripheral
6+
nodes, and more, as useful tools. See p38 of Kepner & Gilbert (KG).
7+
8+
Graph generators
9+
we have LAGraph_Random_Matrix (Erdos/Renyi).
10+
need: RMAT, preferential attachment, 2D/3D mesh generator, ...
11+
see also stochastic Kronecker graphs (ch 9 and section 10.3 of KG).
12+
13+
Bellman Ford: we have delta-stepping sssp, but we could use an sssp that
14+
finds the shortest-path tree. See p48 of KG.
15+
16+
Floyd-Warshall, all-pairs shortest paths: a very easy algorithm, just
17+
costly
18+
19+
block edge-betweenness centrality: to be fast enough, will likely need some
20+
updates to the internal kernels in GraphBLAS
21+
22+
tensor operations: can these be done in LAGraph, with GraphBLAS underneath?
23+
see chap 7 of KG and tensortoolbox.org.
24+
25+
graph visualization:
26+
interface to graphviz,
27+
or write our own energy minimization (or both)
28+
29+
ch 12 of KG: more centrality metrics:
30+
closeness, stress,
31+
32+
33+
Algorithms in NetworkX: (as compared to LAGraph)
34+
approximations and heuristics:
35+
we only have MIS and diameter; many more could be done
36+
assortivity: we have none of these ("none", below)
37+
asteroidal: none
38+
bipartite: we have maximum bipartite matching
39+
boundary: none
40+
brides: none;
41+
a chain decomposition looks hard (requires a DFS)
42+
broadcast (on a tree): none
43+
centrality:
44+
we have betweeness centralities (node and edge), need many more
45+
some are already in python graphblas
46+
chordal: none
47+
clique: none
48+
clustering: we have square clustering, Markov clustering,
49+
peer pressure clustering, local-clustering coefficents, and triangle
50+
counts; need many more
51+
coloring: we have many of these, but not all strategies
52+
communicability: none
53+
communities: we have CDLP, and Louvain in progress
54+
components: we have strongly connected components and connected components
55+
of an undirected graph; many more needed
56+
connectivity: none
57+
cores: we have k-cores and k-truss; many more needed
58+
covering: none; but we have the related maximum matching method it uses
59+
cycles: none
60+
cuts: none, but many in the python graphblas algorithms
61+
d-separation: none
62+
dags: none
63+
distance measures: we have diameter, periphery, and eccentricity
64+
distance-regular graphs: none
65+
dominance: none
66+
dominating sets: none
67+
efficiency: none, but appears in python graphblas algo
68+
eulerian: none
69+
maxflow: yes, but not min cut, and no capacity_scaling
70+
hashing: none, but isomorphism in progress
71+
graphical deg sequence: none
72+
hierarchy: none
73+
hybrid: none
74+
isolates: none, but very simple; also in python graphblas algo
75+
isomorphism: in progress
76+
link analysis: done; we have page rank and HITS
77+
link prediction: none
78+
lowest common ancestor: none
79+
matching: we have maximal matching and maximum bipartite matching;
80+
could use more variants here
81+
minors: none
82+
maximal independent set: done
83+
non-randomness: none
84+
moral graph: none
85+
node classification: none
86+
operators: none, but many are likely trivial in graphblas
87+
and some are in python graphblas algo
88+
planarity: none
89+
planar drawing: none
90+
graph polynomials: none
91+
reciprocity: none, but they are in python graphblas algo
92+
regular: none, but appear in python graphblas algo, except for
93+
k_factor
94+
rich club coefficient: done
95+
shortest paths: we have many of these, but not A*, and we don't have
96+
a method to report the shortest paths themselves (except BFS tree)
97+
similarity: none
98+
simple paths: none
99+
small world: we have random swaps
100+
s_metric: not in LAGraph but appears in python graphblas algo
101+
sparsifiers: none
102+
structural holes: none
103+
summarization: none
104+
swap: we have random double-edge swaps, but not triple edge
105+
threshold graphs: none
106+
time dependent: none
107+
tournament: none, but maybe is_tournament in progress
108+
traversal:
109+
no DFS (these would be hard in graphblas)
110+
most BFS (but missing some variants)
111+
no beam search
112+
no edge_BFS (what is this?)
113+
tree: only min spanning forest; need many more
114+
triads: none
115+
vitality: none
116+
voronoi_cells: none
117+
walks: none
118+
weiner index: none
119+
120+
Functions in NetworkX: most would be simple in graphblas
121+
122+
Graph Generators in NetworkX: many appear, we have very few;
123+
consider an interface to the SuiteSparse matrix collection;
124+
can use more (RMAT in particular)
125+
126+
Linear Algebra in NetworkX:
127+
we have Fiedler vector, Laplacian matrix
128+
many other methods trivial in graphblas
129+
many methods needed here
130+

0 commit comments

Comments
 (0)