Skip to content

Commit a1b5b5e

Browse files
committed
Avoid duplicate remap_colors
1 parent ace3de0 commit a1b5b5e

2 files changed

Lines changed: 44 additions & 11 deletions

File tree

src/interface.jl

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -323,17 +323,33 @@ function _coloring(
323323
outputs_by_order = map(algo.orders) do order
324324
vertices_in_order = vertices(ag, order)
325325
_color, _star_set = star_coloring(ag, vertices_in_order, algo.postprocessing)
326-
_row_color, _column_color, _ = remap_colors(
326+
(_row_color, _column_color, _symmetric_to_row, _symmetric_to_column) = remap_colors(
327327
eltype(ag), _color, maximum(_color), size(A)...
328328
)
329-
return (_color, _star_set, _row_color, _column_color)
329+
return (
330+
_color,
331+
_star_set,
332+
_row_color,
333+
_column_color,
334+
_symmetric_to_row,
335+
_symmetric_to_column,
336+
)
330337
end
331-
(color, star_set, row_color, column_color) = argmin(
338+
(color, star_set, row_color, column_color, symmetric_to_row, symmetric_to_column) = argmin(
332339
t -> maximum(t[3]) + maximum(t[4]), outputs_by_order
333340
) # can't use ncolors without computing the full result
334341
if speed_setting isa WithResult
335342
symmetric_result = StarSetColoringResult(A_and_Aᵀ, ag, color, star_set)
336-
return BicoloringResult(A, ag, symmetric_result, R)
343+
return BicoloringResult(
344+
A,
345+
ag,
346+
symmetric_result,
347+
row_color,
348+
column_color,
349+
symmetric_to_row,
350+
symmetric_to_column,
351+
R,
352+
)
337353
else
338354
return row_color, column_color
339355
end
@@ -352,17 +368,33 @@ function _coloring(
352368
outputs_by_order = map(algo.orders) do order
353369
vertices_in_order = vertices(ag, order)
354370
_color, _tree_set = acyclic_coloring(ag, vertices_in_order, algo.postprocessing)
355-
_row_color, _column_color, _ = remap_colors(
371+
(_row_color, _column_color, _symmetric_to_row, _symmetric_to_column) = remap_colors(
356372
eltype(ag), _color, maximum(_color), size(A)...
357373
)
358-
return (; _color, _tree_set, _row_color, _column_color)
374+
return (
375+
_color,
376+
_tree_set,
377+
_row_color,
378+
_column_color,
379+
_symmetric_to_row,
380+
_symmetric_to_column,
381+
)
359382
end
360-
(color, tree_set, row_color, column_color) = argmin(
383+
(color, tree_set, row_color, column_color, symmetric_to_row, symmetric_to_column) = argmin(
361384
t -> maximum(t[3]) + maximum(t[4]), outputs_by_order
362385
) # can't use ncolors without computing the full result
363386
if speed_setting isa WithResult
364387
symmetric_result = TreeSetColoringResult(A_and_Aᵀ, ag, color, tree_set, R)
365-
return BicoloringResult(A, ag, symmetric_result, R)
388+
return BicoloringResult(
389+
A,
390+
ag,
391+
symmetric_result,
392+
row_color,
393+
column_color,
394+
symmetric_to_row,
395+
symmetric_to_column,
396+
R,
397+
)
366398
else
367399
return row_color, column_color
368400
end

src/result.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -686,14 +686,15 @@ function BicoloringResult(
686686
A::AbstractMatrix,
687687
ag::AdjacencyGraph{T},
688688
symmetric_result::AbstractColoringResult{:symmetric,:column},
689+
row_color::Vector{T},
690+
column_color::Vector{T},
691+
symmetric_to_row::Vector{T},
692+
symmetric_to_column::Vector{T},
689693
decompression_eltype::Type{R},
690694
) where {T,R}
691695
m, n = size(A)
692696
symmetric_color = column_colors(symmetric_result)
693697
num_sym_colors = maximum(symmetric_color)
694-
row_color, column_color, symmetric_to_row, symmetric_to_column = remap_colors(
695-
T, symmetric_color, num_sym_colors, m, n
696-
)
697698
column_group = group_by_color(T, column_color)
698699
row_group = group_by_color(T, row_color)
699700
Br_and_Bc = Matrix{R}(undef, n + m, num_sym_colors)

0 commit comments

Comments
 (0)