diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2025-03-23 21:11:37 +0100 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2025-03-23 21:11:37 +0100 |
| commit | 8b86afb8a81ac1c143881ba1cc31b6926affdeda (patch) | |
| tree | d0b2279cd76f3e34e6d09d11d84e16abe6b1ae3b | |
| parent | 085906735bbadeb8e6cd47fc11610fe104080032 (diff) | |
Clean up some of the code
| -rw-r--r-- | cmd/main.c | 33 | ||||
| -rw-r--r-- | src/leven.c | 27 | ||||
| -rw-r--r-- | src/leven.h | 17 | ||||
| -rw-r--r-- | test/contrained.c | 120 |
4 files changed, 97 insertions, 100 deletions
@@ -104,11 +104,6 @@ int main(int argc, char **argv) { } } loge(); - /* mat_uint32_t cost = { */ - /* .data = malloc(a_tree.len * b_tree.len * sizeof(uint32_t)), */ - /* .stride = a_tree.len, */ - /* }; */ - /* assert(cost.data != NULL); */ mat_uint32_t cost_n = { .data = malloc((a_tree.len+1) * (b_tree.len+1) * sizeof(uint32_t)), @@ -128,40 +123,20 @@ int main(int argc, char **argv) { }; assert(cost_s.data != NULL); - constrained_tree_distance(a_tree, b_tree, cost, cost_n, cost_f, cost_s); + CTedData cted = {cost, cost_n, cost_f, cost_s}; + constrained_tree_distance(a_tree, b_tree, cted); - printf("COST_F\n"); - for(size_t y = 0; y < b_tree.len+1; y++) { - for(size_t x = 0; x < cost.stride; x++) { - printf("%d ", *imat_uint32_t(cost_f, x, y)); - } - printf("\n"); - } - printf("\n"); - printf("COST_N\n"); - for(size_t y = 0; y < b_tree.len+1; y++) { - for(size_t x = 0; x < cost.stride; x++) { - printf("%d ", *imat_uint32_t(cost_n, x, y)); - } - printf("\n"); - } - printf("\n"); - - printf("%d\n", *imat_uint32_t(cost_n, 1, 1)); + log("Final Cost %d", *imat_uint32_t(cost_n, 1, 1)); DECL_MAT(alignment, uint32_t, 2, 2); uint32_t adj_alignment[2] = {0, 0}; constrained_tree_alignment( a_tree, b_tree, - cost, - cost_n, - cost_f, - cost_s, + cted, adj_alignment, alignment ); - printf("Hello sailor\n"); return 0; } diff --git a/src/leven.c b/src/leven.c index 14f1772..efd5247 100644 --- a/src/leven.c +++ b/src/leven.c @@ -85,11 +85,13 @@ void string_edit_alignment(const nid *a, size_t la, const nid *b, size_t lb, con void constrained_tree_distance( const struct Tree a, const struct Tree b, - const mat_uint32_t cost, // The cost matrix to map a node from a (x-axis) to a node from b (y-axis) - mat_uint32_t cost_n, // The resulting computed cost matrixes node and forest. Size a.len x b.len - mat_uint32_t cost_f, - mat_uint32_t cost_s // Scratch space to calculate the edit distance between subtrees. Size a.adj.stride x b.adj.stride. + CTedData data ) { + mat_uint32_t cost = data.cost; + mat_uint32_t cost_n = data.cost_n; + mat_uint32_t cost_f = data.cost_f; + mat_uint32_t cost_s = data.cost_s; + *imat_uint32_t(cost_n, 0, 0) = 0; *imat_uint32_t(cost_f, 0, 0) = 0; @@ -121,7 +123,6 @@ void constrained_tree_distance( string_edit_distance(imat_nid(a.adj, 0, i-1), a_adj_len, imat_nid(b.adj, 0, j-1), b_adj_len, cost_n, cost_s); uint32_t min_cost = *imat_uint32_t(cost_s, a_adj_len, b_adj_len); - log("min_cost = %d", min_cost); if(a_adj_len > 0) { uint32_t temp_min = UINT32_MAX; @@ -132,7 +133,6 @@ void constrained_tree_distance( } min_cost = min(min_cost, *imat_uint32_t(cost_f, i, 0) + temp_min); } - log("min_cost = %d", min_cost); if(b_adj_len > 0) { uint32_t temp_min = UINT32_MAX; @@ -143,12 +143,10 @@ void constrained_tree_distance( } min_cost = min(min_cost, *imat_uint32_t(cost_f, 0, j) + temp_min); } - log("min_cost = %d %d %d", min_cost, a_adj_len, b_adj_len); *imat_uint32_t(cost_f, i, j) = min_cost; min_cost = *imat_uint32_t(cost_f, i, j) + *imat_uint32_t(cost, i, j); - log("min_cost = %d", min_cost); if(a_adj_len > 0) { uint32_t temp_min = UINT32_MAX; @@ -159,7 +157,6 @@ void constrained_tree_distance( } min_cost = min(min_cost, *imat_uint32_t(cost_n, i, 0) + temp_min); } - log("min_cost = %d", min_cost); if(b_adj_len > 0) { uint32_t temp_min = UINT32_MAX; @@ -170,7 +167,6 @@ void constrained_tree_distance( } min_cost = min(min_cost, *imat_uint32_t(cost_n, 0, j) + temp_min); } - log("min_cost = %d", min_cost); *imat_uint32_t(cost_n, i, j) = min_cost; } @@ -182,16 +178,17 @@ void constrained_tree_distance( void constrained_tree_alignment ( const struct Tree a, const struct Tree b, - const mat_uint32_t cost, - const mat_uint32_t cost_n, // The resulting computed cost matrixes node and forest. Size a.len x b.len - const mat_uint32_t cost_f, - // Scratch space - mat_uint32_t cost_s, + CTedData data, uint32_t *adj_alignment, mat_uint32_t alignment ) { + mat_uint32_t cost = data.cost; + mat_uint32_t cost_n = data.cost_n; + mat_uint32_t cost_f = data.cost_f; + mat_uint32_t cost_s = data.cost_s; + mat_uint32_t to_compute = { .data = malloc((2 * (a.len * b.len)) * sizeof(uint32_t)), .stride = 2 diff --git a/src/leven.h b/src/leven.h index 318eaab..8f6fcf4 100644 --- a/src/leven.h +++ b/src/leven.h @@ -36,22 +36,23 @@ struct Tree { size_t len; }; +typedef struct { + const mat_uint32_t cost; + mat_uint32_t cost_n; + mat_uint32_t cost_f; + mat_uint32_t cost_s; +} CTedData; + void constrained_tree_distance( struct Tree a, struct Tree b, - mat_uint32_t cost, - mat_uint32_t cost_n, - mat_uint32_t cost_f, - mat_uint32_t cost_s + CTedData data ); void constrained_tree_alignment( const struct Tree a, const struct Tree b, - const mat_uint32_t cost, - const mat_uint32_t cost_n, - const mat_uint32_t cost_f, - mat_uint32_t cost_s, + CTedData data, uint32_t *adj_alignment, mat_uint32_t alignment ); diff --git a/test/contrained.c b/test/contrained.c index 37fae1d..c7e2c03 100644 --- a/test/contrained.c +++ b/test/contrained.c @@ -34,10 +34,12 @@ int main(int argc, char **argv) { constrained_tree_distance( a, b, - cost, - cost_n, - cost_f, - cost_s + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + } ); if(*imat_uint32_t(cost_n, 1, 1) != 1) { @@ -50,10 +52,12 @@ int main(int argc, char **argv) { constrained_tree_alignment( a, b, - cost, - cost_n, - cost_f, - cost_s, + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + }, adj_alignment, alignment ); @@ -87,10 +91,12 @@ int main(int argc, char **argv) { constrained_tree_distance( a, b, - cost, - cost_n, - cost_f, - cost_s + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + } ); if(*imat_uint32_t(cost_n, 1, 1) != 2) { @@ -103,10 +109,12 @@ int main(int argc, char **argv) { constrained_tree_alignment( a, b, - cost, - cost_n, - cost_f, - cost_s, + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + }, adj_alignment, alignment ); @@ -141,10 +149,12 @@ int main(int argc, char **argv) { constrained_tree_distance( a, b, - cost, - cost_n, - cost_f, - cost_s + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + } ); if(*imat_uint32_t(cost_n, 1, 1) != 0) { @@ -157,10 +167,12 @@ int main(int argc, char **argv) { constrained_tree_alignment( a, b, - cost, - cost_n, - cost_f, - cost_s, + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + }, adj_alignment, alignment ); @@ -197,10 +209,12 @@ int main(int argc, char **argv) { constrained_tree_distance( a, b, - cost, - cost_n, - cost_f, - cost_s + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + } ); if(*imat_uint32_t(cost_n, 1, 1) != 2) { @@ -213,10 +227,12 @@ int main(int argc, char **argv) { constrained_tree_alignment( a, b, - cost, - cost_n, - cost_f, - cost_s, + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + }, adj_alignment, alignment ); @@ -252,10 +268,12 @@ int main(int argc, char **argv) { constrained_tree_distance( a, b, - cost, - cost_n, - cost_f, - cost_s + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + } ); if(*imat_uint32_t(cost_n, 1, 1) != 4) { @@ -268,10 +286,12 @@ int main(int argc, char **argv) { constrained_tree_alignment( a, b, - cost, - cost_n, - cost_f, - cost_s, + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + }, adj_alignment, alignment ); @@ -307,10 +327,12 @@ int main(int argc, char **argv) { constrained_tree_distance( a, b, - cost, - cost_n, - cost_f, - cost_s + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + } ); if(*imat_uint32_t(cost_n, 1, 1) != 2) { @@ -323,10 +345,12 @@ int main(int argc, char **argv) { constrained_tree_alignment( a, b, - cost, - cost_n, - cost_f, - cost_s, + (CTedData) { + cost, + cost_n, + cost_f, + cost_s, + }, adj_alignment, alignment ); |
