From 380bd1b50648e37754f1737af9d9fdc4621f0eac Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Wed, 16 Feb 2022 09:38:14 -0600 Subject: [PATCH] move G->nonzero to Future; revise TODOs --- Contributors.txt | 23 +++++++++++++++++++---- doc/TODO.txt | 26 ++++++++++++++------------ include/LAGraph.h | 8 ++++---- src/utility/LAGraph_DeleteProperties.c | 2 +- src/utility/LAGraph_New.c | 2 +- 5 files changed, 39 insertions(+), 22 deletions(-) diff --git a/Contributors.txt b/Contributors.txt index d348d9b8fd..6b9f89ea0e 100644 --- a/Contributors.txt +++ b/Contributors.txt @@ -2,7 +2,22 @@ File: Contributors.txt Contributors: -Texas A&M University -University of California -Carnegie Mellon University - + Tim Davis, Texas A&M University + Scott McMillan, SEI, Carnegie Mellon University + Gabor Szarnyas + Jinhao Chen, Texas A&M University + Michel Pelletier, Graphegon + Scott Kolodziej, Texas A&M University + Yongzhe Zhang, SOKENDAI, Japan + Marton Elekes + Balint Hegyi + Tim Mattson, Intel + Mohsen Aznaveh, Texas A&M University + James Kitchen, Anaconda + Aydin Buluc, Lawrence Berkeley National Lab + Janos B. Antal + Roi Lipman, Redis + Erik Welch, Anaconda + Carl Yang + Tze Meng Low, + Florentin Dorre diff --git a/doc/TODO.txt b/doc/TODO.txt index a63bc44338..11a56c0fc8 100644 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -1,4 +1,4 @@ -As of Feb 14, 2022: +As of Feb 16, 2022: * entire user guide experimental -> src, how to do it. @@ -12,27 +12,29 @@ As of Feb 14, 2022: * how does the user know that one method is Basic and another Advanced? Name of function? We have no mechanism or naming scheme. + * check function names and API + * TODOs: in algorithms * LAGraph_VertexCentrality: wrapper for 2 methods (BC, PageRank), - and future methods. - How do we ask for an exact BC computation? Do it in batches - and sum up the result? - Do we normalize the metrics so that sum(centrality) = 1? + and future methods. Can we skip this for LAGraph v1.0? How do we + ask for an exact BC computation? Do it in batches and sum up the + result? Do we normalize the metrics so that sum(centrality) = 1? + How do we provide parameters to the various methods if we don't + have all methods written yet? Move this to Future, below? * LAGraph_ConnectedComponents: this is Advanced (G is input and G->structure_is_symmetric is required for a directed graph). A Basic method would compute that first, and then G would be - input/output. + input/output. Or move this to Future, below? - * LG_CC_SV6: need new GxB methods + * LG_CC_SV6: need new GxB methods. Implement for LAGraph v1.0? + Current method is not thread-safe. + Or move to Future, below? * LAGraph_SingleSourceShortestPath: Write a Basic method that - computes G->emin. And G->emax? And decides on Delta on its own? - - * check function names and API - - * add names to Contributors.txt + computes G->emin (that's easy). And G->emax so it can decide on + Delta on its own (hard to do)? Or move to Future, below? * add FUTURE to User Guide (see below) diff --git a/include/LAGraph.h b/include/LAGraph.h index f9f02f7821..7b1f25900b 100644 --- a/include/LAGraph.h +++ b/include/LAGraph.h @@ -34,7 +34,7 @@ #define LAGRAPH_VERSION_MAJOR 0 #define LAGRAPH_VERSION_MINOR 9 #define LAGRAPH_VERSION_UPDATE 9 -#define LAGRAPH_DATE "Feb 14, 2022" +#define LAGRAPH_DATE "Feb 16, 2022" //============================================================================== // include files and helper macros @@ -585,15 +585,15 @@ struct LAGraph_Graph_struct // APPROX: emax is a rough estimate of max(G->A) // UNKNOWN: emax is unknown + // possible future cached properties: + // Some algorithms may want to know if the graph has any edge weights // exactly equal to zero. In some cases, this can be inferred from the // emin/emax bounds, or it can be indicated via the following property: - LAGraph_BooleanProperty nonzero ; // If true, then all entries in + // LAGraph_BooleanProperty nonzero ; // If true, then all entries in // G->A are known to be nonzero. If false, G->A may contain // entries in its structure that are identically equal to zero. If // unknown, then G->A may or may not have entries equal to zero. - - // possible future cached properties: // other edge weight metrics: median, standard deviation.... Might be // useful for computing Delta for a Basic SSSP. // GrB_Vector rowsum, colsum ; diff --git a/src/utility/LAGraph_DeleteProperties.c b/src/utility/LAGraph_DeleteProperties.c index 5d0ef68935..374db81131 100644 --- a/src/utility/LAGraph_DeleteProperties.c +++ b/src/utility/LAGraph_DeleteProperties.c @@ -46,7 +46,7 @@ int LAGraph_DeleteProperties G->structure_is_symmetric = LAGRAPH_UNKNOWN ; G->emin_kind = LAGRAPH_UNKNOWN ; G->emax_kind = LAGRAPH_UNKNOWN ; - G->nonzero = LAGRAPH_UNKNOWN ; +// G->nonzero = LAGRAPH_UNKNOWN ; G->ndiag = LAGRAPH_UNKNOWN ; return (GrB_SUCCESS) ; } diff --git a/src/utility/LAGraph_New.c b/src/utility/LAGraph_New.c index 562a469737..5d3367825d 100644 --- a/src/utility/LAGraph_New.c +++ b/src/utility/LAGraph_New.c @@ -61,7 +61,7 @@ int LAGraph_New (*G)->emin_kind = LAGRAPH_UNKNOWN ; (*G)->emax = NULL ; (*G)->emax_kind = LAGRAPH_UNKNOWN ; - (*G)->nonzero = LAGRAPH_UNKNOWN ; +// (*G)->nonzero = LAGRAPH_UNKNOWN ; // future property //-------------------------------------------------------------------------- // assign its primary components