mirror of
https://github.com/Z3Prover/z3
synced 2025-05-10 01:05:47 +00:00
WIP on min cost flow problem
Remarks: 1. Follow the template structure of diff_logic.h 2. Try to reuse dl_graph<Ext> with some ready-to-use graph algorithms 3. Need to add 'explanation' to 'GExt' in order to instantiate dl_graph<_>
This commit is contained in:
parent
be81e77c70
commit
ebed5fa037
4 changed files with 271 additions and 69 deletions
|
@ -931,6 +931,24 @@ public:
|
|||
return found;
|
||||
}
|
||||
|
||||
// Return true if there is an edge source --> target.
|
||||
// If there is such edge, return it in parameter e.
|
||||
bool get_edge(dl_var source, dl_var target, edge & e) {
|
||||
edge_id_vector & edges = m_out_edges[source];
|
||||
typename edge_id_vector::iterator it = edges.begin();
|
||||
typename edge_id_vector::iterator end = edges.end();
|
||||
bool found = false;
|
||||
for (; it != end; ++it) {
|
||||
edge_id e_id = *it;
|
||||
edge & e0 = m_edges[e_id];
|
||||
if (e0.is_enabled() && e0.get_target() == target && !found) {
|
||||
e = e0;
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
template<typename Functor>
|
||||
void enumerate_edges(dl_var source, dl_var target, Functor& f) {
|
||||
edge_id_vector & edges = m_out_edges[source];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue