continue;
disconnect_edge(neighbor, edge);
- reorder_node(neighbor);
+ reorder_node_after_edge_deletion(neighbor);
}
/* Remove node from old bucket */
merged_node = node;
}
-void reorder_node(pbqp_node *node)
+void reorder_node_after_edge_deletion(pbqp_node *node)
{
unsigned degree = pbqp_node_get_degree(node);
/* Assume node lost one incident edge. */
/* Same bucket as before */
if (degree > 2) return;
- if (!node_bucket_contains(node_buckets[old_degree], node)) {
- /* Old arity is new arity, so we have nothing to do. */
- assert(node_bucket_contains(node_buckets[degree], node));
- return;
- }
-
/* Delete node from old bucket... */
node_bucket_remove(&node_buckets[old_degree], node);
}
#endif
- reorder_node(other_node);
+ reorder_node_after_edge_deletion(other_node);
#if KAPS_STATISTIC
pbqp->num_r1++;
/* Free local matrix. */
obstack_free(&pbqp->obstack, mat);
- reorder_node(src_node);
- reorder_node(tgt_node);
+ reorder_node_after_edge_deletion(src_node);
+ reorder_node_after_edge_deletion(tgt_node);
}
#if KAPS_DUMP
void initial_simplify_edges(pbqp *pbqp);
void select_alternative(pbqp_node *node, unsigned selected_index);
void simplify_edge(pbqp *pbqp, pbqp_edge *edge);
-void reorder_node(pbqp_node *node);
+void reorder_node_after_edge_deletion(pbqp_node *node);
int node_is_reduced(pbqp_node *node);
#include "kaps.h"
#include "matrix.h"
+#include "optimal.h"
#include "pbqp_edge.h"
#include "pbqp_edge_t.h"
#include "pbqp_node.h"
edge->src = NULL;
edge->tgt = NULL;
- reorder_node(src_node);
- reorder_node(tgt_node);
+ reorder_node_after_edge_deletion(src_node);
+ reorder_node_after_edge_deletion(tgt_node);
}
unsigned is_deleted(pbqp_edge *edge)