Ticket #5269: dfs-on_finish_edge.diff

File dfs-on_finish_edge.diff, 57.8 KB (added by expaler, 12 years ago)

Unified patch to implement, test for, and document the on_finish_edge event.

  • boost/graph/depth_first_search.hpp

    Only in .: INSTALL
    Only in .: Jamroot
    Only in .: LICENSE_1_0.txt
    Only in ./boost: accumulators
    Only in ./boost: algorithm
    Only in ./boost: aligned_storage.hpp
    Only in ./boost: any.hpp
    Only in ./boost: archive
    Only in ./boost: array.hpp
    Only in ./boost: asio
    Only in ./boost: asio.hpp
    Only in ./boost: assert.hpp
    Only in ./boost: assign
    Only in ./boost: assign.hpp
    Only in ./boost: bimap
    Only in ./boost: bimap.hpp
    Only in ./boost: bind
    Only in ./boost: bind.hpp
    Only in ./boost: blank.hpp
    Only in ./boost: blank_fwd.hpp
    Only in ./boost: call_traits.hpp
    Only in ./boost: cast.hpp
    Only in ./boost: cerrno.hpp
    Only in ./boost: checked_delete.hpp
    Only in ./boost: circular_buffer
    Only in ./boost: circular_buffer.hpp
    Only in ./boost: circular_buffer_fwd.hpp
    Only in ./boost: compatibility
    Only in ./boost: compressed_pair.hpp
    Only in ./boost: concept
    Only in ./boost: concept_archetype.hpp
    Only in ./boost: concept_check
    Only in ./boost: concept_check.hpp
    Only in ./boost: config
    Only in ./boost: config.hpp
    Only in ./boost: crc.hpp
    Only in ./boost: cregex.hpp
    Only in ./boost: cstdint.hpp
    Only in ./boost: cstdlib.hpp
    Only in ./boost: current_function.hpp
    Only in ./boost: date_time
    Only in ./boost: date_time.hpp
    Only in ./boost: detail
    Only in ./boost: dynamic_bitset
    Only in ./boost: dynamic_bitset.hpp
    Only in ./boost: dynamic_bitset_fwd.hpp
    Only in ./boost: enable_shared_from_this.hpp
    Only in ./boost: exception
    Only in ./boost: exception.hpp
    Only in ./boost: exception_ptr.hpp
    Only in ./boost: filesystem
    Only in ./boost: filesystem.hpp
    Only in ./boost: flyweight
    Only in ./boost: flyweight.hpp
    Only in ./boost: foreach.hpp
    Only in ./boost: foreach_fwd.hpp
    Only in ./boost: format
    Only in ./boost: format.hpp
    Only in ./boost: function
    Only in ./boost: function.hpp
    Only in ./boost: function_equal.hpp
    Only in ./boost: function_output_iterator.hpp
    Only in ./boost: function_types
    Only in ./boost: functional
    Only in ./boost: functional.hpp
    Only in ./boost: fusion
    Only in ./boost: generator_iterator.hpp
    Only in ./boost: get_pointer.hpp
    Only in ./boost: gil
    Only in ./boost/graph: accounting.hpp
    Only in ./boost/graph: adj_list_serialize.hpp
    Only in ./boost/graph: adjacency_iterator.hpp
    Only in ./boost/graph: adjacency_list.hpp
    Only in ./boost/graph: adjacency_list_io.hpp
    Only in ./boost/graph: adjacency_matrix.hpp
    Only in ./boost/graph: astar_search.hpp
    Only in ./boost/graph: bandwidth.hpp
    Only in ./boost/graph: bc_clustering.hpp
    Only in ./boost/graph: bellman_ford_shortest_paths.hpp
    Only in ./boost/graph: betweenness_centrality.hpp
    Only in ./boost/graph: biconnected_components.hpp
    Only in ./boost/graph: bipartite.hpp
    Only in ./boost/graph: boyer_myrvold_planar_test.hpp
    Only in ./boost/graph: boykov_kolmogorov_max_flow.hpp
    Only in ./boost/graph: breadth_first_search.hpp
    Only in ./boost/graph: bron_kerbosch_all_cliques.hpp
    Only in ./boost/graph: buffer_concepts.hpp
    Only in ./boost/graph: chrobak_payne_drawing.hpp
    Only in ./boost/graph: circle_layout.hpp
    Only in ./boost/graph: closeness_centrality.hpp
    Only in ./boost/graph: clustering_coefficient.hpp
    Only in ./boost/graph: compressed_sparse_row_graph.hpp
    Only in ./boost/graph: connected_components.hpp
    Only in ./boost/graph: copy.hpp
    Only in ./boost/graph: core_numbers.hpp
    Only in ./boost/graph: create_condensation_graph.hpp
    Only in ./boost/graph: cuthill_mckee_ordering.hpp
    Only in ./boost/graph: dag_shortest_paths.hpp
    Only in ./boost/graph: degree_centrality.hpp
    diff --recursive --unified ./boost/graph/depth_first_search.hpp ../../Libdev/boost-graph-dfs/boost/graph/depth_first_search.hpp
    old new  
    3939      vis.tree_edge(e, g);
    4040      vis.back_edge(e, g);
    4141      vis.forward_or_cross_edge(e, g);
     42      vis.finish_edge(e, g);
    4243      vis.finish_vertex(u, g);
    4344    }
    4445  private:
     
    7778    void depth_first_visit_impl
    7879      (const IncidenceGraph& g,
    7980       typename graph_traits<IncidenceGraph>::vertex_descriptor u,
    80        DFSVisitor& vis,
     81       DFSVisitor& vis,  // pass-by-reference here, important!
    8182       ColorMap color, TerminatorFunc func = TerminatorFunc())
    8283    {
    8384      function_requires<IncidenceGraphConcept<IncidenceGraph> >();
     
    8889      function_requires< ColorValueConcept<ColorValue> >();
    8990      typedef color_traits<ColorValue> Color;
    9091      typedef typename graph_traits<IncidenceGraph>::out_edge_iterator Iter;
    91       typedef std::pair<Vertex, std::pair<Iter, Iter> > VertexInfo;
     92      typedef std::pair<Iter, Iter> VertexInfo;
    9293
    9394      Iter ei, ei_end;
    9495      std::vector<VertexInfo> stack;
     
    9899
    99100      typedef typename unwrap_reference<TerminatorFunc>::type TF;
    100101
    101       put(color, u, Color::gray());
    102       vis.discover_vertex(u, g);
    103       boost::tie(ei, ei_end) = out_edges(u, g);
     102      put(color, u, Color::gray());                  vis.discover_vertex(u, g);
    104103      // Variable is needed to workaround a borland bug.
    105104      TF& fn = static_cast<TF&>(func);
    106105      if (fn(u, g)) {
    107           // If this vertex terminates the search, we push empty range
    108           stack.push_back(std::make_pair(u, std::make_pair(ei_end, ei_end)));
    109       } else {
    110           stack.push_back(std::make_pair(u, std::make_pair(ei, ei_end)));
     106        put(color, u, Color::black());               vis.finish_vertex(u, g);
     107        return;
    111108      }
    112       while (!stack.empty()) {
    113         VertexInfo& back = stack.back();
    114         u = back.first;
    115         boost::tie(ei, ei_end) = back.second;
    116         stack.pop_back();
    117         while (ei != ei_end) {
     109
     110      for (tie(ei, ei_end) = out_edges(u, g); ; ++ei) {
     111        while (ei != ei_end) {                       vis.examine_edge(*ei, g);
    118112          Vertex v = target(*ei, g);
    119           vis.examine_edge(*ei, g);
    120113          ColorValue v_color = get(color, v);
    121           if (v_color == Color::white()) {
    122             vis.tree_edge(*ei, g);
    123             stack.push_back(std::make_pair(u, std::make_pair(++ei, ei_end)));
     114          if (v_color == Color::white()) {           vis.tree_edge(*ei, g);
     115            stack.push_back(VertexInfo(ei, ei_end));
    124116            u = v;
    125             put(color, u, Color::gray());
    126             vis.discover_vertex(u, g);
    127             boost::tie(ei, ei_end) = out_edges(u, g);
     117            put(color, u, Color::gray());            vis.discover_vertex(u, g);
    128118            if (fn(u, g)) {
    129                 ei = ei_end;
     119              ei = ei_end;
     120            } else {
     121              tie(ei, ei_end) = out_edges(u, g);
    130122            }
    131           } else if (v_color == Color::gray()) {
    132             vis.back_edge(*ei, g);
    133             ++ei;
    134123          } else {
    135             vis.forward_or_cross_edge(*ei, g);
     124            if (v_color == Color::gray())            vis.back_edge(*ei, g);
     125            else                             vis.forward_or_cross_edge(*ei, g);
     126                                                     vis.finish_edge(*ei, g);
    136127            ++ei;
    137128          }
    138129        }
    139         put(color, u, Color::black());
    140         vis.finish_vertex(u, g);
     130        put(color, u, Color::black());               vis.finish_vertex(u, g);
     131        if (stack.empty()) break;
     132        tie(ei, ei_end) = stack.back();
     133        u = source(*ei, g);
     134        stack.pop_back();                            vis.finish_edge(*ei, g);
    141135      }
    142136    }
    143137
     
    173167          depth_first_visit_impl(g, v, vis, color, func);
    174168          } else if (v_color == Color::gray()) vis.back_edge(*ei, g);
    175169          else                                 vis.forward_or_cross_edge(*ei, g);
     170                                               vis.finish_edge(*ei, g);
    176171        }
    177172      put(color, u, Color::black());         vis.finish_vertex(u, g);
    178173    }
     
    257252    void forward_or_cross_edge(Edge u, const Graph& g) {
    258253      invoke_visitors(m_vis, u, g, ::boost::on_forward_or_cross_edge());
    259254    }
     255    template <class Edge, class Graph>
     256    void finish_edge(Edge u, const Graph& g) {
     257      invoke_visitors(m_vis, u, g, ::boost::on_finish_edge());
     258    }
    260259    template <class Vertex, class Graph>
    261260    void finish_vertex(Vertex u, const Graph& g) {
    262261      invoke_visitors(m_vis, u, g, ::boost::on_finish_vertex());
     
    269268    BOOST_GRAPH_EVENT_STUB(on_tree_edge,dfs)
    270269    BOOST_GRAPH_EVENT_STUB(on_back_edge,dfs)
    271270    BOOST_GRAPH_EVENT_STUB(on_forward_or_cross_edge,dfs)
     271    BOOST_GRAPH_EVENT_STUB(on_finish_edge,dfs)
    272272    BOOST_GRAPH_EVENT_STUB(on_finish_vertex,dfs)
    273273
    274274  protected:
  • boost/graph/undirected_dfs.hpp

    Only in ./boost/graph: detail
    Only in ./boost/graph: dijkstra_shortest_paths.hpp
    Only in ./boost/graph: dijkstra_shortest_paths_no_color_map.hpp
    Only in ./boost/graph: dimacs.hpp
    Only in ./boost/graph: directed_graph.hpp
    Only in ./boost/graph: distributed
    Only in ./boost/graph: dll_import_export.hpp
    Only in ./boost/graph: dominator_tree.hpp
    Only in ./boost/graph: eccentricity.hpp
    Only in ./boost/graph: edge_connectivity.hpp
    Only in ./boost/graph: edge_list.hpp
    Only in ./boost/graph: edmonds_karp_max_flow.hpp
    Only in ./boost/graph: edmunds_karp_max_flow.hpp
    Only in ./boost/graph: erdos_renyi_generator.hpp
    Only in ./boost/graph: exception.hpp
    Only in ./boost/graph: exterior_property.hpp
    Only in ./boost/graph: filtered_graph.hpp
    Only in ./boost/graph: floyd_warshall_shortest.hpp
    Only in ./boost/graph: fruchterman_reingold.hpp
    Only in ./boost/graph: geodesic_distance.hpp
    Only in ./boost/graph: graph_archetypes.hpp
    Only in ./boost/graph: graph_as_tree.hpp
    Only in ./boost/graph: graph_concepts.hpp
    Only in ./boost/graph: graph_mutability_traits.hpp
    Only in ./boost/graph: graph_selectors.hpp
    Only in ./boost/graph: graph_stats.hpp
    Only in ./boost/graph: graph_test.hpp
    Only in ./boost/graph: graph_traits.hpp
    Only in ./boost/graph: graph_utility.hpp
    Only in ./boost/graph: graphml.hpp
    Only in ./boost/graph: graphviz.hpp
    Only in ./boost/graph: grid_graph.hpp
    Only in ./boost/graph: gursoy_atun_layout.hpp
    Only in ./boost/graph: howard_cycle_ratio.hpp
    Only in ./boost/graph: incremental_components.hpp
    Only in ./boost/graph: is_kuratowski_subgraph.hpp
    Only in ./boost/graph: is_straight_line_drawing.hpp
    Only in ./boost/graph: isomorphism.hpp
    Only in ./boost/graph: iteration_macros.hpp
    Only in ./boost/graph: iteration_macros_undef.hpp
    Only in ./boost/graph: johnson_all_pairs_shortest.hpp
    Only in ./boost/graph: kamada_kawai_spring_layout.hpp
    Only in ./boost/graph: king_ordering.hpp
    Only in ./boost/graph: kolmogorov_max_flow.hpp
    Only in ./boost/graph: kruskal_min_spanning_tree.hpp
    Only in ./boost/graph: labeled_graph.hpp
    Only in ./boost/graph: leda_graph.hpp
    Only in ./boost/graph: lookup_edge.hpp
    Only in ./boost/graph: loop_erased_random_walk.hpp
    Only in ./boost/graph: make_biconnected_planar.hpp
    Only in ./boost/graph: make_connected.hpp
    Only in ./boost/graph: make_maximal_planar.hpp
    Only in ./boost/graph: matrix_as_graph.hpp
    Only in ./boost/graph: max_cardinality_matching.hpp
    Only in ./boost/graph: mcgregor_common_subgraphs.hpp
    Only in ./boost/graph: mesh_graph_generator.hpp
    Only in ./boost/graph: metis.hpp
    Only in ./boost/graph: metric_tsp_approx.hpp
    Only in ./boost/graph: minimum_degree_ordering.hpp
    Only in ./boost/graph: named_function_params.hpp
    Only in ./boost/graph: named_graph.hpp
    Only in ./boost/graph: neighbor_bfs.hpp
    Only in ./boost/graph: numeric_values.hpp
    Only in ./boost/graph: one_bit_color_map.hpp
    Only in ./boost/graph: overloading.hpp
    Only in ./boost/graph: page_rank.hpp
    Only in ./boost/graph: parallel
    Only in ./boost/graph: planar_canonical_ordering.hpp
    Only in ./boost/graph: planar_detail
    Only in ./boost/graph: planar_face_traversal.hpp
    Only in ./boost/graph: plod_generator.hpp
    Only in ./boost/graph: point_traits.hpp
    Only in ./boost/graph: prim_minimum_spanning_tree.hpp
    Only in ./boost/graph: profile.hpp
    Only in ./boost/graph: properties.hpp
    Only in ./boost/graph: property_iter_range.hpp
    Only in ./boost/graph: property_maps
    Only in ./boost/graph: push_relabel_max_flow.hpp
    Only in ./boost/graph: r_c_shortest_paths.hpp
    Only in ./boost/graph: random.hpp
    Only in ./boost/graph: random_layout.hpp
    Only in ./boost/graph: random_spanning_tree.hpp
    Only in ./boost/graph: read_dimacs.hpp
    Only in ./boost/graph: relax.hpp
    Only in ./boost/graph: reverse_graph.hpp
    Only in ./boost/graph: rmat_graph_generator.hpp
    Only in ./boost/graph: sequential_vertex_coloring.hpp
    Only in ./boost/graph: simple_point.hpp
    Only in ./boost/graph: sloan_ordering.hpp
    Only in ./boost/graph: small_world_generator.hpp
    Only in ./boost/graph: smallest_last_ordering.hpp
    Only in ./boost/graph: ssca_graph_generator.hpp
    Only in ./boost/graph: st_connected.hpp
    Only in ./boost/graph: stanford_graph.hpp
    Only in ./boost/graph: stoer_wagner_min_cut.hpp
    Only in ./boost/graph: strong_components.hpp
    Only in ./boost/graph: subgraph.hpp
    Only in ./boost/graph: tiernan_all_cycles.hpp
    Only in ./boost/graph: topological_sort.hpp
    Only in ./boost/graph: topology.hpp
    Only in ./boost/graph: transitive_closure.hpp
    Only in ./boost/graph: transitive_reduction.hpp
    Only in ./boost/graph: transpose_graph.hpp
    Only in ./boost/graph: tree_traits.hpp
    Only in ./boost/graph: two_bit_color_map.hpp
    diff --recursive --unified ./boost/graph/undirected_dfs.hpp ../../Libdev/boost-graph-dfs/boost/graph/undirected_dfs.hpp
    old new  
    2828    void undir_dfv_impl
    2929      (const IncidenceGraph& g,
    3030       typename graph_traits<IncidenceGraph>::vertex_descriptor u,
    31        DFSVisitor& vis,
     31       DFSVisitor& vis,  // pass-by-reference here, important!
    3232       VertexColorMap vertex_color,
    3333       EdgeColorMap edge_color)
    3434    {
     
    4545      typedef color_traits<ColorValue> Color;
    4646      typedef color_traits<EColorValue> EColor;
    4747      typedef typename graph_traits<IncidenceGraph>::out_edge_iterator Iter;
    48       typedef std::pair<Vertex, std::pair<Iter, Iter> > VertexInfo;
     48      typedef std::pair<Iter, Iter> VertexInfo;
    4949
     50      Iter ei, ei_end;
    5051      std::vector<VertexInfo> stack;
    5152
    52       put(vertex_color, u, Color::gray());
    53       vis.discover_vertex(u, g);
    54       stack.push_back(std::make_pair(u, out_edges(u, g)));
    55       while (!stack.empty()) {
    56         VertexInfo& back = stack.back();
    57         u = back.first;
    58         Iter ei, ei_end;
    59         boost::tie(ei, ei_end) = back.second;
    60         stack.pop_back();
    61         while (ei != ei_end) {
     53      put(vertex_color, u, Color::gray());           vis.discover_vertex(u, g);
     54      for (tie(ei, ei_end) = out_edges(u, g); ; ++ei) {
     55        while (ei != ei_end) {                       vis.examine_edge(*ei, g);
    6256          Vertex v = target(*ei, g);
    63           vis.examine_edge(*ei, g);
    6457          ColorValue v_color = get(vertex_color, v);
    6558          EColorValue uv_color = get(edge_color, *ei);
    6659          put(edge_color, *ei, EColor::black());
    67           if (v_color == Color::white()) {
    68             vis.tree_edge(*ei, g);
    69             stack.push_back(std::make_pair(u, std::make_pair(++ei, ei_end)));
     60          if (v_color == Color::white()) {           vis.tree_edge(*ei, g);
     61            stack.push_back(VertexInfo(ei, ei_end));
    7062            u = v;
    71             put(vertex_color, u, Color::gray());
    72             vis.discover_vertex(u, g);
    73             boost::tie(ei, ei_end) = out_edges(u, g);
    74           } else if (v_color == Color::gray()) {
    75             if (uv_color == EColor::white()) vis.back_edge(*ei, g);
    76             ++ei;
    77           } else { // if (v_color == Color::black())
     63            put(vertex_color, u, Color::gray());     vis.discover_vertex(u, g);
     64            tie(ei, ei_end) = out_edges(u, g);
     65          } else {
     66            if ((v_color == Color::gray()) && (uv_color == EColor::white()))
     67                                                     vis.back_edge(*ei, g);
     68                                                     vis.finish_edge(*ei, g);
    7869            ++ei;
    7970          }
    8071        }
    81         put(vertex_color, u, Color::black());
    82         vis.finish_vertex(u, g);
     72        put(vertex_color, u, Color::black());        vis.finish_vertex(u, g);
     73        if (stack.empty()) break;
     74        tie(ei, ei_end) = stack.back();
     75        u = source(*ei, g);
     76        stack.pop_back();                            vis.finish_edge(*ei, g);
    8377      }
    8478    }
    8579
     
    118112          undir_dfv_impl(g, v, vis, vertex_color, edge_color);
    119113        } else if (v_color == Color::gray() && uv_color == EColor::white())
    120114                                             vis.back_edge(*ei, g);
     115                                             vis.finish_edge(*ei, g);
    121116      }
    122117      put(vertex_color, u, Color::black());  vis.finish_vertex(u, g);
    123118    }
  • boost/graph/visitors.hpp

    Only in ./boost/graph: undirected_graph.hpp
    Only in ./boost/graph: use_mpi.hpp
    Only in ./boost/graph: vector_as_graph.hpp
    Only in ./boost/graph: vertex_and_edge_range.hpp
    diff --recursive --unified ./boost/graph/visitors.hpp ../../Libdev/boost-graph-dfs/boost/graph/visitors.hpp
    old new  
    4444      on_discover_vertex_num, on_finish_vertex_num, on_examine_vertex_num,
    4545      on_examine_edge_num, on_tree_edge_num, on_non_tree_edge_num,
    4646      on_gray_target_num, on_black_target_num,
    47       on_forward_or_cross_edge_num, on_back_edge_num,
     47      on_forward_or_cross_edge_num, on_back_edge_num, on_finish_edge_num,
    4848      on_edge_relaxed_num, on_edge_not_relaxed_num,
    4949      on_edge_minimized_num, on_edge_not_minimized_num
    5050    };
     
    7575  struct on_forward_or_cross_edge {
    7676    enum { num = detail::on_forward_or_cross_edge_num }; };
    7777  struct on_back_edge { enum { num = detail::on_back_edge_num }; };
     78  struct on_finish_edge { enum { num = detail::on_finish_edge_num }; };
    7879
    7980  struct on_edge_relaxed { enum { num = detail::on_edge_relaxed_num }; };
    8081  struct on_edge_not_relaxed {
  • libs/graph/doc/DFSVisitor.html

    Only in ./boost/graph: wavefront.hpp
    Only in ./boost/graph: write_dimacs.hpp
    Only in ./boost: icl
    Only in ./boost: implicit_cast.hpp
    Only in ./boost: indirect_reference.hpp
    Only in ./boost: integer
    Only in ./boost: integer.hpp
    Only in ./boost: integer_fwd.hpp
    Only in ./boost: integer_traits.hpp
    Only in ./boost: interprocess
    Only in ./boost: intrusive
    Only in ./boost: intrusive_ptr.hpp
    Only in ./boost: io
    Only in ./boost: io_fwd.hpp
    Only in ./boost: iostreams
    Only in ./boost: is_placeholder.hpp
    Only in ./boost: iterator
    Only in ./boost: iterator.hpp
    Only in ./boost: iterator_adaptors.hpp
    Only in ./boost: lambda
    Only in ./boost: last_value.hpp
    Only in ./boost: lexical_cast.hpp
    Only in ./boost: limits.hpp
    Only in ./boost: logic
    Only in ./boost: make_shared.hpp
    Only in ./boost: math
    Only in ./boost: math_fwd.hpp
    Only in ./boost: mem_fn.hpp
    Only in ./boost: memory_order.hpp
    Only in ./boost: mpi
    Only in ./boost: mpi.hpp
    Only in ./boost: mpl
    Only in ./boost: msm
    Only in ./boost: multi_array
    Only in ./boost: multi_array.hpp
    Only in ./boost: multi_index
    Only in ./boost: multi_index_container.hpp
    Only in ./boost: multi_index_container_fwd.hpp
    Only in ./boost: next_prior.hpp
    Only in ./boost: non_type.hpp
    Only in ./boost: noncopyable.hpp
    Only in ./boost: nondet_random.hpp
    Only in ./boost: none.hpp
    Only in ./boost: none_t.hpp
    Only in ./boost: numeric
    Only in ./boost: operators.hpp
    Only in ./boost: optional
    Only in ./boost: optional.hpp
    Only in ./boost: parameter
    Only in ./boost: parameter.hpp
    Only in ./boost: pending
    Only in ./boost: pointee.hpp
    Only in ./boost: pointer_cast.hpp
    Only in ./boost: pointer_to_other.hpp
    Only in ./boost: polygon
    Only in ./boost: pool
    Only in ./boost: preprocessor
    Only in ./boost: preprocessor.hpp
    Only in ./boost: program_options
    Only in ./boost: program_options.hpp
    Only in ./boost: progress.hpp
    Only in ./boost: property_map
    Only in ./boost: property_tree
    Only in ./boost: proto
    Only in ./boost: ptr_container
    Only in ./boost: python
    Only in ./boost: python.hpp
    Only in ./boost: random
    Only in ./boost: random.hpp
    Only in ./boost: range
    Only in ./boost: range.hpp
    Only in ./boost: rational.hpp
    Only in ./boost: ref.hpp
    Only in ./boost: regex
    Only in ./boost: regex.h
    Only in ./boost: regex.hpp
    Only in ./boost: regex_fwd.hpp
    Only in ./boost: scope_exit.hpp
    Only in ./boost: scoped_array.hpp
    Only in ./boost: scoped_ptr.hpp
    Only in ./boost: serialization
    Only in ./boost: shared_array.hpp
    Only in ./boost: shared_container_iterator.hpp
    Only in ./boost: shared_ptr.hpp
    Only in ./boost: signal.hpp
    Only in ./boost: signals
    Only in ./boost: signals.hpp
    Only in ./boost: signals2
    Only in ./boost: signals2.hpp
    Only in ./boost: smart_ptr
    Only in ./boost: smart_ptr.hpp
    Only in ./boost: spirit
    Only in ./boost: spirit.hpp
    Only in ./boost: statechart
    Only in ./boost: static_assert.hpp
    Only in ./boost: strong_typedef.hpp
    Only in ./boost: swap.hpp
    Only in ./boost: system
    Only in ./boost: test
    Only in ./boost: thread
    Only in ./boost: thread.hpp
    Only in ./boost: throw_exception.hpp
    Only in ./boost: timer.hpp
    Only in ./boost: token_functions.hpp
    Only in ./boost: token_iterator.hpp
    Only in ./boost: tokenizer.hpp
    Only in ./boost: tr1
    Only in ./boost: tuple
    Only in ./boost: type.hpp
    Only in ./boost: type_traits
    Only in ./boost: type_traits.hpp
    Only in ./boost: typeof
    Only in ./boost: units
    Only in ./boost: unordered
    Only in ./boost: unordered_map.hpp
    Only in ./boost: unordered_set.hpp
    Only in ./boost: utility
    Only in ./boost: utility.hpp
    Only in ./boost: uuid
    Only in ./boost: variant
    Only in ./boost: variant.hpp
    Only in ./boost: version.hpp
    Only in ./boost: visit_each.hpp
    Only in ./boost: wave
    Only in ./boost: wave.hpp
    Only in ./boost: weak_ptr.hpp
    Only in ./boost: xpressive
    Only in .: boost-build.jam
    Only in ../../Libdev/boost-graph-dfs: boost-graph-dfs.komodoproject
    Only in .: boost.css
    Only in .: boost.png
    Only in .: bootstrap.bat
    Only in .: bootstrap.sh
    Only in .: doc
    Only in .: index.htm
    Only in .: index.html
    Only in ./libs: accumulators
    Only in ./libs: algorithm
    Only in ./libs: any
    Only in ./libs: array
    Only in ./libs: asio
    Only in ./libs: assign
    Only in ./libs: bimap
    Only in ./libs: bind
    Only in ./libs: circular_buffer
    Only in ./libs: compatibility
    Only in ./libs: compose
    Only in ./libs: concept_check
    Only in ./libs: config
    Only in ./libs: conversion
    Only in ./libs: crc
    Only in ./libs: date_time
    Only in ./libs: detail
    Only in ./libs: disjoint_sets
    Only in ./libs: dynamic_bitset
    Only in ./libs: exception
    Only in ./libs: filesystem
    Only in ./libs: flyweight
    Only in ./libs: foreach
    Only in ./libs: format
    Only in ./libs: function
    Only in ./libs: function_types
    Only in ./libs: functional
    Only in ./libs: fusion
    Only in ./libs: gil
    Only in ./libs/graph: build
    Only in ./libs/graph/doc: AStarHeuristic.html
    Only in ./libs/graph/doc: AStarVisitor.html
    Only in ./libs/graph/doc: AddEdgeVisitor.html
    Only in ./libs/graph/doc: AdjacencyGraph.html
    Only in ./libs/graph/doc: AdjacencyMatrix.html
    Only in ./libs/graph/doc: BFSVisitor.html
    Only in ./libs/graph/doc: BUILD_DOCS.sh
    Only in ./libs/graph/doc: BasicMatrix.html
    Only in ./libs/graph/doc: BellmanFordVisitor.html
    Only in ./libs/graph/doc: BidirectionalGraph.html
    Only in ./libs/graph/doc: Buffer.html
    Only in ./libs/graph/doc: ColorValue.html
    diff --recursive --unified ./libs/graph/doc/DFSVisitor.html ../../Libdev/boost-graph-dfs/libs/graph/doc/DFSVisitor.html
    old new  
    150150</tr>
    151151
    152152<tr>
     153<td>Finish Edge</td>
     154<td><tt>vis.finish_edge(e, g)</tt></td>
     155<td><tt>void</tt></td>
     156<td>
     157This is invoked on each non-tree edge as well as on each tree edge after
     158<tt>finish_vertex</tt> has been called on its target vertex.</td>
     159</tr>
     160
     161<tr>
    153162<td>Finish Vertex</td>
    154163<td><tt>vis.finish_vertex(u, g)</tt></td>
    155164<td><tt>void</tt></td>
  • libs/graph/doc/depth_first_search.html

    Only in ./libs/graph/doc: DijkstraVisitor.html
    Only in ./libs/graph/doc: EdgeListGraph.html
    Only in ./libs/graph/doc: EdgeMutableGraph.html
    Only in ./libs/graph/doc: EventVisitor.html
    Only in ./libs/graph/doc: EventVisitorList.html
    Only in ./libs/graph/doc: Graph.html
    Only in ./libs/graph/doc: IncidenceGraph.html
    Only in ./libs/graph/doc: IteratorConstructibleGraph.html
    Only in ./libs/graph/doc: KeyedUpdatableQueue.html
    Only in ./libs/graph/doc: Makefile
    Only in ./libs/graph/doc: Monoid.html
    Only in ./libs/graph/doc: MutableGraph.html
    Only in ./libs/graph/doc: MutablePropertyGraph.html
    Only in ./libs/graph/doc: PlanarEmbedding.html
    Only in ./libs/graph/doc: PlanarFaceVisitor.html
    Only in ./libs/graph/doc: PropertyGraph.html
    Only in ./libs/graph/doc: PropertyTag.html
    Only in ./libs/graph/doc: TSPTourVisitor.html
    Only in ./libs/graph/doc: UpdatableQueue.html
    Only in ./libs/graph/doc: VertexAndEdgeListGraph.html
    Only in ./libs/graph/doc: VertexListGraph.html
    Only in ./libs/graph/doc: VertexMutableGraph.html
    Only in ./libs/graph/doc: acknowledgements.html
    Only in ./libs/graph/doc: adjacency_iterator.html
    Only in ./libs/graph/doc: adjacency_list.html
    Only in ./libs/graph/doc: adjacency_list_traits.html
    Only in ./libs/graph/doc: adjacency_matrix.html
    Only in ./libs/graph/doc: astar_heuristic.html
    Only in ./libs/graph/doc: astar_search.html
    Only in ./libs/graph/doc: astar_visitor.html
    Only in ./libs/graph/doc: awpaper.sty
    Only in ./libs/graph/doc: bandwidth.html
    Only in ./libs/graph/doc: bc_clustering.html
    Only in ./libs/graph/doc: bellman_ford_shortest.html
    Only in ./libs/graph/doc: bellman_visitor.html
    Only in ./libs/graph/doc: betweenness_centrality.html
    Only in ./libs/graph/doc: bfs_visitor.html
    Only in ./libs/graph/doc: bgl-cover.jpg
    Only in ./libs/graph/doc: bgl_named_params.html
    Only in ./libs/graph/doc: bibliography.html
    Only in ./libs/graph/doc: biconnected_components.html
    Only in ./libs/graph/doc: biconnected_components.w
    Only in ./libs/graph/doc: boyer_myrvold.html
    Only in ./libs/graph/doc: boykov_kolmogorov_max_flow.html
    Only in ./libs/graph/doc: breadth_first_search.html
    Only in ./libs/graph/doc: breadth_first_visit.html
    Only in ./libs/graph/doc: bundles.html
    Only in ./libs/graph/doc: challenge.html
    Only in ./libs/graph/doc: circle_layout.html
    Only in ./libs/graph/doc: cochet-terrasson98numerical.pdf
    Only in ./libs/graph/doc: compressed_sparse_row.html
    Only in ./libs/graph/doc: connected_components.html
    Only in ./libs/graph/doc: constructing_algorithms.html
    Only in ./libs/graph/doc: copy_graph.html
    Only in ./libs/graph/doc: cuthill_mckee_ordering.html
    Only in ./libs/graph/doc: dag_shortest_paths.html
    Only in ./libs/graph/doc: dasdan-dac99.pdf
    diff --recursive --unified ./libs/graph/doc/depth_first_search.html ../../Libdev/boost-graph-dfs/libs/graph/doc/depth_first_search.html
    old new  
    107107      <i>...</i>
    108108    <b>else if</b> (<i>color[v] =</i> BLACK)
    109109      <i>...</i>
     110    <i>...</i>
    110111  <b>end for</b>
    111112  <i>color[u] :=</i> BLACK
    112113  <i>f_time[u] := time := time + 1</i>
     
    139140<i>(u,v)</i> is a back edge
    140141-
    141142<i>(u,v)</i> is a cross or forward edge
     143finish edge <i>(u,v)</i>
    142144-
    143145finish vertex <i>u</i>
    144146-
     
    249251
    250252<li><b><tt>vis.start_vertex(s, g)</tt></b> is invoked on the source
    251253  vertex once before the start of the search.
    252  
     254
    253255<li><b><tt>vis.discover_vertex(u, g)</tt></b> is invoked when a vertex
    254256  is encountered for the first time.
    255257 
     
    259261<li><b><tt>vis.tree_edge(e, g)</tt></b> is invoked on each edge as it
    260262  becomes a member of the edges that form the search tree. If you
    261263  wish to record predecessors, do so at this event point.
    262  
     264
    263265<li><b><tt>vis.back_edge(e, g)</tt></b> is invoked on the back edges in
    264266  the graph.
    265  
     267
    266268<li><b><tt>vis.forward_or_cross_edge(e, g)</tt></b> is invoked on
    267269  forward or cross edges in the graph. In an undirected graph this
    268270  method is never called.
    269  
     271
     272<li><b><tt>vis.finish_edge(e, g)</tt></b> is invoked on the non-tree edges in
     273  the graph as well as on each tree edge after its target vertex is finished.
     274
    270275<li><b><tt>vis.finish_vertex(u, g)</tt></b> is invoked on a vertex after
    271276  all of its out edges have been added to the search tree and all of
    272277  the adjacent vertices have been discovered (but before their
  • libs/graph/doc/undirected_dfs.html

    Only in ./libs/graph/doc: depth_first_visit.html
    Only in ./libs/graph/doc: dfs_visitor.html
    Only in ./libs/graph/doc: dijkstra_shortest_paths.html
    Only in ./libs/graph/doc: dijkstra_shortest_paths_no_color_map.html
    Only in ./libs/graph/doc: dijkstra_visitor.html
    Only in ./libs/graph/doc: distance_recorder.html
    Only in ./libs/graph/doc: edge_list.html
    Only in ./libs/graph/doc: edmonds_karp_max_flow.html
    Only in ./libs/graph/doc: eg1-iso.cpp
    Only in ./libs/graph/doc: erdos_renyi_generator.html
    Only in ./libs/graph/doc: exception.html
    Only in ./libs/graph/doc: faq.html
    Only in ./libs/graph/doc: figs
    Only in ./libs/graph/doc: file_dependency_example.html
    Only in ./libs/graph/doc: filtered_graph.html
    Only in ./libs/graph/doc: find_odd_cycle.html
    Only in ./libs/graph/doc: floyd_warshall_shortest.html
    Only in ./libs/graph/doc: fruchterman_reingold.html
    Only in ./libs/graph/doc: graph_coloring.html
    Only in ./libs/graph/doc: graph_concepts.html
    Only in ./libs/graph/doc: graph_theory_review.html
    Only in ./libs/graph/doc: graph_traits.html
    Only in ./libs/graph/doc: grid_graph.html
    Only in ./libs/graph/doc: grid_graph_export_svg.sh
    Only in ./libs/graph/doc: gursoy_atun_layout.html
    Only in ./libs/graph/doc: history.html
    Only in ./libs/graph/doc: howard_cycle_ratio.html
    Only in ./libs/graph/doc: incident.html
    Only in ./libs/graph/doc: incremental_components.html
    Only in ./libs/graph/doc: index.html
    Only in ./libs/graph/doc: inv_adjacency_iterator.html
    Only in ./libs/graph/doc: is_bipartite.html
    Only in ./libs/graph/doc: is_kuratowski_subgraph.html
    Only in ./libs/graph/doc: is_straight_line_drawing.html
    Only in ./libs/graph/doc: iscope99.pdf
    Only in ./libs/graph/doc: iso-eg.dot
    Only in ./libs/graph/doc: isomorphism-impl-v2.w
    Only in ./libs/graph/doc: isomorphism-impl-v3.w
    Only in ./libs/graph/doc: isomorphism-impl.pdf
    Only in ./libs/graph/doc: isomorphism-impl.w
    Only in ./libs/graph/doc: isomorphism.html
    Only in ./libs/graph/doc: johnson_all_pairs_shortest.html
    Only in ./libs/graph/doc: jwebfrob.pl
    Only in ./libs/graph/doc: kamada_kawai_spring_layout.html
    Only in ./libs/graph/doc: kevin_bacon.html
    Only in ./libs/graph/doc: king_ordering.html
    Only in ./libs/graph/doc: known_problems.html
    Only in ./libs/graph/doc: kolmogorov_max_flow.html
    Only in ./libs/graph/doc: kruskal_min_spanning_tree.html
    Only in ./libs/graph/doc: layout_tolerance.html
    Only in ./libs/graph/doc: leda_conversion.html
    Only in ./libs/graph/doc: lengauer_tarjan_dominator.htm
    Only in ./libs/graph/doc: lgrind.sty
    Only in ./libs/graph/doc: make_biconnected_planar.html
    Only in ./libs/graph/doc: make_connected.html
    Only in ./libs/graph/doc: make_maximal_planar.html
    Only in ./libs/graph/doc: math.sty
    Only in ./libs/graph/doc: maximum_matching.html
    Only in ./libs/graph/doc: mcgregor_common_subgraphs.html
    Only in ./libs/graph/doc: metric_tsp_approx.html
    Only in ./libs/graph/doc: minimum_degree_ordering.html
    Only in ./libs/graph/doc: minimum_degree_ordering.w
    Only in ./libs/graph/doc: mungeaux.csh
    Only in ./libs/graph/doc: null_visitor.html
    Only in ./libs/graph/doc: opposite.html
    Only in ./libs/graph/doc: planar_canonical_ordering.html
    Only in ./libs/graph/doc: planar_face_traversal.html
    Only in ./libs/graph/doc: planar_graphs.html
    Only in ./libs/graph/doc: plod_generator.html
    Only in ./libs/graph/doc: predecessor_recorder.html
    Only in ./libs/graph/doc: prim_minimum_spanning_tree.html
    Only in ./libs/graph/doc: profile.htm
    Only in ./libs/graph/doc: property.html
    Only in ./libs/graph/doc: property_map.html
    Only in ./libs/graph/doc: property_put.html
    Only in ./libs/graph/doc: property_writer.html
    Only in ./libs/graph/doc: publications.html
    Only in ./libs/graph/doc: push_relabel_max_flow.html
    Only in ./libs/graph/doc: python.html
    Only in ./libs/graph/doc: quick_tour.html
    Only in ./libs/graph/doc: r_c_shortest_paths.html
    Only in ./libs/graph/doc: random.html
    Only in ./libs/graph/doc: random_layout.html
    Only in ./libs/graph/doc: random_spanning_tree.html
    Only in ./libs/graph/doc: read_dimacs.html
    Only in ./libs/graph/doc: read_graphml.html
    Only in ./libs/graph/doc: read_graphml.rst
    Only in ./libs/graph/doc: read_graphviz.html
    Only in ./libs/graph/doc: read_graphviz.rst
    Only in ./libs/graph/doc: reverse_graph.html
    Only in ./libs/graph/doc: sequential_vertex_coloring.html
    Only in ./libs/graph/doc: sloan_ordering.htm
    Only in ./libs/graph/doc: sloan_start_end_vertices.htm
    Only in ./libs/graph/doc: small_world_generator.html
    Only in ./libs/graph/doc: sorted_erdos_renyi_gen.html
    Only in ./libs/graph/doc: sparse_matrix_ordering.html
    Only in ./libs/graph/doc: stanford_graph.html
    Only in ./libs/graph/doc: stoer_wagner_imgs
    Only in ./libs/graph/doc: stoer_wagner_min_cut.html
    Only in ./libs/graph/doc: straight_line_drawing.html
    Only in ./libs/graph/doc: strong_components.html
    Only in ./libs/graph/doc: strong_components.w
    Only in ./libs/graph/doc: subgraph.html
    Only in ./libs/graph/doc: table_of_contents.html
    Only in ./libs/graph/doc: tc-out.gif
    Only in ./libs/graph/doc: tc.gif
    Only in ./libs/graph/doc: time_stamper.html
    Only in ./libs/graph/doc: topological_sort.html
    Only in ./libs/graph/doc: topology.html
    Only in ./libs/graph/doc: transitive_closure.html
    Only in ./libs/graph/doc: transitive_closure.w
    Only in ./libs/graph/doc: transpose_graph.html
    Only in ./libs/graph/doc: trouble_shooting.html
    Only in ./libs/graph/doc: tsp_tour_len_visitor.html
    Only in ./libs/graph/doc: tsp_tour_visitor.html
    diff --recursive --unified ./libs/graph/doc/undirected_dfs.html ../../Libdev/boost-graph-dfs/libs/graph/doc/undirected_dfs.html
    old new  
    77     http://www.boost.org/LICENSE_1_0.txt)
    88  -->
    99<Head>
    10 <Title>Boost Graph Library: Depth-First Search</Title>
     10<Title>Boost Graph Library: Undirected Depth-First Search</Title>
    1111<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b"
    1212        ALINK="#ff0000">
    1313<IMG SRC="../../../boost.png"
     
    116116      <b>call</b> DFS-VISIT(<i>G</i>, <i>v</i>)
    117117    <b>else if</b> (<i>vcolor[v] =</i> GRAY and <i>ec =</i> WHITE)
    118118      <i>...</i>
     119    <i>...</i>
    119120  <b>end for</b>
    120121  <i>vcolor[u] :=</i> BLACK
    121122  <i>f_time[u] := time := time + 1</i>
     
    151152-
    152153<i>(u,v)</i> is a back edge
    153154-
     155finish edge <i>(u,v)</i>
    154156-
    155157finish vertex <i>u</i>
    156158-
     
    277279
    278280<li><b><tt>vis.start_vertex(s, g)</tt></b> is invoked on the source
    279281  vertex once before the start of the search.
    280  
     282
    281283<li><b><tt>vis.discover_vertex(u, g)</tt></b> is invoked when a vertex
    282284  is encountered for the first time.
    283  
     285
    284286<li><b><tt>vis.examine_edge(e, g)</tt></b> is invoked on every out-edge
    285287  of each vertex after it is discovered.
    286288
    287289<li><b><tt>vis.tree_edge(e, g)</tt></b> is invoked on each edge as it
    288290  becomes a member of the edges that form the search tree. If you
    289291  wish to record predecessors, do so at this event point.
    290  
     292
    291293<li><b><tt>vis.back_edge(e, g)</tt></b> is invoked on the back edges in
    292294  the graph.
    293295
     296<li><b><tt>vis.finish_edge(e, g)</tt></b> is invoked on the back edges in
     297  the graph as well as on each tree edge after its target vertex is finished.
     298
    294299<li><b><tt>vis.finish_vertex(u, g)</tt></b> is invoked on a vertex after
    295300  all of its out edges have been added to the search tree and all of
    296301  the adjacent vertices have been discovered (but before their
  • libs/graph/example/dfs.cpp

    Only in ./libs/graph/doc: users.html
    Only in ./libs/graph/doc: using_adjacency_list.html
    Only in ./libs/graph/doc: using_property_maps.html
    Only in ./libs/graph/doc: visitor_concepts.html
    Only in ./libs/graph/doc: wavefront.htm
    Only in ./libs/graph/doc: write-graphviz.html
    Only in ./libs/graph/doc: write_dimacs.html
    Only in ./libs/graph/doc: write_graphml.html
    Only in ./libs/graph/doc: write_graphml.rst
    Only in ./libs/graph/example: Jamfile.v2
    Only in ./libs/graph/example: accum-compile-times.cpp
    Only in ./libs/graph/example: actor_clustering.cpp
    Only in ./libs/graph/example: adj_list_ra_edgelist.cpp
    Only in ./libs/graph/example: adjacency_list.cpp
    Only in ./libs/graph/example: adjacency_list.expected
    Only in ./libs/graph/example: adjacency_list_io.cpp
    Only in ./libs/graph/example: adjacency_matrix.cpp
    Only in ./libs/graph/example: astar-cities.cpp
    Only in ./libs/graph/example: astar_maze.cpp
    Only in ./libs/graph/example: bcsstk01
    Only in ./libs/graph/example: bcsstk01.rsa
    Only in ./libs/graph/example: bellman-example.cpp
    Only in ./libs/graph/example: bellman-ford-internet.cpp
    Only in ./libs/graph/example: bellman_ford.expected
    Only in ./libs/graph/example: bfs-example.cpp
    Only in ./libs/graph/example: bfs-example2.cpp
    Only in ./libs/graph/example: bfs-name-printer.cpp
    Only in ./libs/graph/example: bfs.cpp
    Only in ./libs/graph/example: bfs.expected
    Only in ./libs/graph/example: bfs_basics.expected
    Only in ./libs/graph/example: bfs_neighbor.cpp
    Only in ./libs/graph/example: biconnected_components.cpp
    Only in ./libs/graph/example: bipartite_example.cpp
    Only in ./libs/graph/example: boost_web.dat
    Only in ./libs/graph/example: boost_web_graph.cpp
    Only in ./libs/graph/example: boost_web_graph.expected
    Only in ./libs/graph/example: boykov_kolmogorov-eg.cpp
    Only in ./libs/graph/example: bron_kerbosch_clique_number.cpp
    Only in ./libs/graph/example: bron_kerbosch_print_cliques.cpp
    Only in ./libs/graph/example: bucket_sorter.cpp
    Only in ./libs/graph/example: canonical_ordering.cpp
    Only in ./libs/graph/example: cc-internet.cpp
    Only in ./libs/graph/example: city_visitor.cpp
    Only in ./libs/graph/example: closeness_centrality.cpp
    Only in ./libs/graph/example: clustering_coefficient.cpp
    Only in ./libs/graph/example: comm_network.graph
    Only in ./libs/graph/example: components_on_edgelist.cpp
    Only in ./libs/graph/example: components_on_edgelist.expected
    Only in ./libs/graph/example: concept_checks.expected
    Only in ./libs/graph/example: connected-components.cpp
    Only in ./libs/graph/example: connected_components.cpp
    Only in ./libs/graph/example: connected_components.expected
    Only in ./libs/graph/example: container_gen.cpp
    Only in ./libs/graph/example: container_gen.expected
    Only in ./libs/graph/example: copy-example.cpp
    Only in ./libs/graph/example: csr-example.cpp
    Only in ./libs/graph/example: cuthill_mckee_ordering.cpp
    Only in ./libs/graph/example: cuthill_mckee_ordering.expected
    Only in ./libs/graph/example: cycle-file-dep.cpp
    Only in ./libs/graph/example: cycle-file-dep2.cpp
    Only in ./libs/graph/example: cycle_ratio_example.cpp
    Only in ./libs/graph/example: dag_shortest_paths.cpp
    Only in ./libs/graph/example: data1.txt
    Only in ./libs/graph/example: data2.txt
    Only in ./libs/graph/example: data3.txt
    Only in ./libs/graph/example: dave.cpp
    Only in ./libs/graph/example: dave.expected
    Only in ./libs/graph/example: default-constructor.cpp
    Only in ./libs/graph/example: default-constructor2.cpp
    Only in ./libs/graph/example: degree_centrality.cpp
    Only in ./libs/graph/example: dfs-example.cpp
    Only in ./libs/graph/example: dfs-parenthesis.cpp
    diff --recursive --unified ./libs/graph/example/dfs.cpp ../../Libdev/boost-graph-dfs/libs/graph/example/dfs.cpp
    old new  
    2727  Tree edge: 0 --> 2
    2828  Tree edge: 2 --> 1
    2929  Back edge: 1 --> 1
     30  Finish edge: 1 --> 1
    3031  Tree edge: 1 --> 3
    3132  Back edge: 3 --> 1
     33  Finish edge: 3 --> 1
    3234  Tree edge: 3 --> 4
    3335  Back edge: 4 --> 0
     36  Finish edge: 4 --> 0
    3437  Back edge: 4 --> 1
     38  Finish edge: 4 --> 1
     39  Finish edge: 3 --> 4
     40  Finish edge: 1 --> 3
     41  Finish edge: 2 --> 1
    3542  Forward or cross edge: 2 --> 3
     43  Finish edge: 2 --> 3
     44  Finish edge: 0 --> 2
    3645  1 10
    3746  3 8
    3847  2 9
     
    6978         << " --> " <<  target(e, G) << endl;
    7079    Base::forward_or_cross_edge(e, G);
    7180  }
     81  template <class Edge, class Graph>
     82  void finish_edge(Edge e, Graph& G) {
     83    cout << "Finish edge: " << source(e, G) <<
     84      " --> " <<  target(e, G) << endl;
     85    Base::finish_edge(e, G);
     86  }
    7287};
    7388template <class VisitorList>
    7489edge_categorizer<VisitorList>
  • libs/graph/example/dfs.expected

    diff --recursive --unified ./libs/graph/example/dfs.expected ../../Libdev/boost-graph-dfs/libs/graph/example/dfs.expected
    old new  
    11Tree edge: 0 --> 2
    22Tree edge: 2 --> 1
    33Back edge: 1 --> 1
     4Finish edge: 1 --> 1
    45Tree edge: 1 --> 3
    56Back edge: 3 --> 1
     7Finish edge: 3 --> 1
    68Tree edge: 3 --> 4
    79Back edge: 4 --> 0
     10Finish edge: 4 --> 0
    811Back edge: 4 --> 1
     12Finish edge: 4 --> 1
     13Finish edge: 3 --> 4
     14Finish edge: 1 --> 3
     15Finish edge: 2 --> 1
    916Forward or cross edge: 2 --> 3
     17Finish edge: 2 --> 3
     18Finish edge: 0 --> 2
    10191 10
    11203 8
    12212 9
  • libs/graph/test/Jamfile.v2

    Only in ./libs/graph/example: dfs_basics.expected
    Only in ./libs/graph/example: dfs_parenthesis.cpp
    Only in ./libs/graph/example: dfs_parenthesis.expected
    Only in ./libs/graph/example: dijkstra-example-listS.cpp
    Only in ./libs/graph/example: dijkstra-example.cpp
    Only in ./libs/graph/example: dijkstra-no-color-map-example.cpp
    Only in ./libs/graph/example: dijkstra.expected
    Only in ./libs/graph/example: eccentricity.cpp
    Only in ./libs/graph/example: edge-connectivity.cpp
    Only in ./libs/graph/example: edge-function.cpp
    Only in ./libs/graph/example: edge-iter-constructor.cpp
    Only in ./libs/graph/example: edge_basics.cpp
    Only in ./libs/graph/example: edge_basics.expected
    Only in ./libs/graph/example: edge_connectivity.cpp
    Only in ./libs/graph/example: edge_iterator_constructor.cpp
    Only in ./libs/graph/example: edge_iterator_constructor.dat
    Only in ./libs/graph/example: edge_property.cpp
    Only in ./libs/graph/example: edge_property.expected
    Only in ./libs/graph/example: edmonds-karp-eg.cpp
    Only in ./libs/graph/example: exterior_properties.cpp
    Only in ./libs/graph/example: exterior_properties.expected
    Only in ./libs/graph/example: exterior_property_map.cpp
    Only in ./libs/graph/example: exterior_property_map.expected
    Only in ./libs/graph/example: family-tree-eg.cpp
    Only in ./libs/graph/example: family_tree.expected
    Only in ./libs/graph/example: fibonacci_heap.cpp
    Only in ./libs/graph/example: fibonacci_heap.expected
    Only in ./libs/graph/example: figs
    Only in ./libs/graph/example: file_dependencies.cpp
    Only in ./libs/graph/example: file_dependencies.expected
    Only in ./libs/graph/example: filtered-copy-example.cpp
    Only in ./libs/graph/example: filtered_graph.cpp
    Only in ./libs/graph/example: filtered_graph.expected
    Only in ./libs/graph/example: filtered_graph_edge_range.cpp
    Only in ./libs/graph/example: filtered_vec_as_graph.cpp
    Only in ./libs/graph/example: fr_layout.cpp
    Only in ./libs/graph/example: gerdemann.cpp
    Only in ./libs/graph/example: gerdemann.expected
    Only in ./libs/graph/example: girth.cpp
    Only in ./libs/graph/example: graph-assoc-types.cpp
    Only in ./libs/graph/example: graph-property-iter-eg.cpp
    Only in ./libs/graph/example: graph-thingie.cpp
    Only in ./libs/graph/example: graph.cpp
    Only in ./libs/graph/example: graph_as_tree.cpp
    Only in ./libs/graph/example: graph_property.cpp
    Only in ./libs/graph/example: graphviz.cpp
    Only in ./libs/graph/example: graphviz_example.dot
    Only in ./libs/graph/example: graphviz_test.dot
    Only in ./libs/graph/example: grid_graph_example.cpp
    Only in ./libs/graph/example: helper.hpp
    Only in ./libs/graph/example: implicit_graph.cpp
    Only in ./libs/graph/example: in_edges.cpp
    Only in ./libs/graph/example: in_edges.expected
    Only in ./libs/graph/example: inclusive_mean_geodesic.cpp
    Only in ./libs/graph/example: incremental-components-eg.cpp
    Only in ./libs/graph/example: incremental_components.cpp
    Only in ./libs/graph/example: incremental_components.expected
    Only in ./libs/graph/example: influence_prestige.cpp
    Only in ./libs/graph/example: info_network.graph
    Only in ./libs/graph/example: interior_pmap_bundled.cpp
    Only in ./libs/graph/example: interior_property_map.cpp
    Only in ./libs/graph/example: interior_property_map.expected
    Only in ./libs/graph/example: iohb.c
    Only in ./libs/graph/example: iohb.h
    Only in ./libs/graph/example: isomorphism.cpp
    Only in ./libs/graph/example: iteration_macros.cpp
    Only in ./libs/graph/example: iterator-property-map-eg.cpp
    Only in ./libs/graph/example: johnson-eg.cpp
    Only in ./libs/graph/example: johnson.expected
    Only in ./libs/graph/example: kevin-bacon.cpp
    Only in ./libs/graph/example: kevin-bacon.dat
    Only in ./libs/graph/example: kevin-bacon2.cpp
    Only in ./libs/graph/example: kevin-bacon2.dat
    Only in ./libs/graph/example: kevin-bacon2.expected
    Only in ./libs/graph/example: kevin_bacon.expected
    Only in ./libs/graph/example: king_ordering.cpp
    Only in ./libs/graph/example: knights-tour.cpp
    Only in ./libs/graph/example: knights_tour.expected
    Only in ./libs/graph/example: kruskal-example.cpp
    Only in ./libs/graph/example: kruskal-telephone.cpp
    Only in ./libs/graph/example: kruskal.expected
    Only in ./libs/graph/example: kuratowski_subgraph.cpp
    Only in ./libs/graph/example: labeled_graph.cpp
    Only in ./libs/graph/example: last-mod-time.cpp
    Only in ./libs/graph/example: leda-concept-check.cpp
    Only in ./libs/graph/example: leda-graph-eg.cpp
    Only in ./libs/graph/example: leda-regression.cfg
    Only in ./libs/graph/example: loops_dfs.cpp
    Only in ./libs/graph/example: make_biconnected_planar.cpp
    Only in ./libs/graph/example: make_connected.cpp
    Only in ./libs/graph/example: make_maximal_planar.cpp
    Only in ./libs/graph/example: makefile-dependencies.dat
    Only in ./libs/graph/example: makefile-target-names.dat
    Only in ./libs/graph/example: matching_example.cpp
    Only in ./libs/graph/example: max_flow.cpp
    Only in ./libs/graph/example: max_flow.dat
    Only in ./libs/graph/example: max_flow.expected
    Only in ./libs/graph/example: max_flow2.dat
    Only in ./libs/graph/example: max_flow3.dat
    Only in ./libs/graph/example: max_flow4.dat
    Only in ./libs/graph/example: max_flow5.dat
    Only in ./libs/graph/example: max_flow6.dat
    Only in ./libs/graph/example: max_flow7.dat
    Only in ./libs/graph/example: max_flow8.dat
    Only in ./libs/graph/example: max_flow9.dat
    Only in ./libs/graph/example: mcgregor_subgraphs_example.cpp
    Only in ./libs/graph/example: mean_geodesic.cpp
    Only in ./libs/graph/example: miles_span.cpp
    Only in ./libs/graph/example: miles_span.expected
    Only in ./libs/graph/example: min_max_paths.cpp
    Only in ./libs/graph/example: minimum_degree_ordering.cpp
    Only in ./libs/graph/example: modify_graph.cpp
    Only in ./libs/graph/example: modify_graph.expected
    Only in ./libs/graph/example: neighbor_bfs.cpp
    Only in ./libs/graph/example: ordered_out_edges.cpp
    Only in ./libs/graph/example: ordered_out_edges.expected
    Only in ./libs/graph/example: ospf-example.cpp
    Only in ./libs/graph/example: parallel-compile-time.cpp
    Only in ./libs/graph/example: planar_face_traversal.cpp
    Only in ./libs/graph/example: prim-example.cpp
    Only in ./libs/graph/example: prim-telephone.cpp
    Only in ./libs/graph/example: prim.expected
    Only in ./libs/graph/example: print-adjacent-vertices.cpp
    Only in ./libs/graph/example: print-edges.cpp
    Only in ./libs/graph/example: print-in-edges.cpp
    Only in ./libs/graph/example: print-out-edges.cpp
    Only in ./libs/graph/example: prism_3_2.graph
    Only in ./libs/graph/example: prob_network.graph
    Only in ./libs/graph/example: property-map-traits-eg.cpp
    Only in ./libs/graph/example: property_iterator.cpp
    Only in ./libs/graph/example: push-relabel-eg.cpp
    Only in ./libs/graph/example: put-get-helper-eg.cpp
    Only in ./libs/graph/example: quick-tour.cpp
    Only in ./libs/graph/example: quick_tour.cpp
    Only in ./libs/graph/example: quick_tour.expected
    Only in ./libs/graph/example: r_c_shortest_paths_example.cpp
    Only in ./libs/graph/example: reachable-loop-head.cpp
    Only in ./libs/graph/example: reachable-loop-tail.cpp
    Only in ./libs/graph/example: read_graphviz.cpp
    Only in ./libs/graph/example: read_write_dimacs-eg.cpp
    Only in ./libs/graph/example: regression.cfg
    Only in ./libs/graph/example: remove_edge_if_bidir.cpp
    Only in ./libs/graph/example: remove_edge_if_bidir.expected
    Only in ./libs/graph/example: remove_edge_if_dir.cpp
    Only in ./libs/graph/example: remove_edge_if_dir.expected
    Only in ./libs/graph/example: remove_edge_if_undir.cpp
    Only in ./libs/graph/example: remove_edge_if_undir.expected
    Only in ./libs/graph/example: reverse-graph-eg.cpp
    Only in ./libs/graph/example: reverse_graph.expected
    Only in ./libs/graph/example: roget_components.cpp
    Only in ./libs/graph/example: scaled_closeness_centrality.cpp
    Only in ./libs/graph/example: scc.cpp
    Only in ./libs/graph/example: scc.dot
    Only in ./libs/graph/example: sgb-regression.cfg
    Only in ./libs/graph/example: simple_planarity_test.cpp
    Only in ./libs/graph/example: sloan_ordering.cpp
    Only in ./libs/graph/example: social_network.graph
    Only in ./libs/graph/example: stoer_wagner.cpp
    Only in ./libs/graph/example: straight_line_drawing.cpp
    Only in ./libs/graph/example: strong-components.cpp
    Only in ./libs/graph/example: strong_components.cpp
    Only in ./libs/graph/example: strong_components.expected
    Only in ./libs/graph/example: subgraph.cpp
    Only in ./libs/graph/example: subgraph.expected
    Only in ./libs/graph/example: subgraph_properties.cpp
    Only in ./libs/graph/example: target-compile-costs.dat
    Only in ./libs/graph/example: tc.dot
    Only in ./libs/graph/example: test-astar-cities.dot
    Only in ./libs/graph/example: tiernan_girth_circumference.cpp
    Only in ./libs/graph/example: tiernan_print_cycles.cpp
    Only in ./libs/graph/example: topo-sort-file-dep.cpp
    Only in ./libs/graph/example: topo-sort-file-dep2.cpp
    Only in ./libs/graph/example: topo-sort-with-leda.cpp
    Only in ./libs/graph/example: topo-sort-with-sgb.cpp
    Only in ./libs/graph/example: topo-sort1.cpp
    Only in ./libs/graph/example: topo-sort2.cpp
    Only in ./libs/graph/example: topo_sort.cpp
    Only in ./libs/graph/example: topo_sort.expected
    Only in ./libs/graph/example: transitive_closure.cpp
    Only in ./libs/graph/example: transpose-example.cpp
    Only in ./libs/graph/example: undirected.cpp
    Only in ./libs/graph/example: undirected.expected
    Only in ./libs/graph/example: undirected_dfs.cpp
    Only in ./libs/graph/example: vector-as-graph.cpp
    Only in ./libs/graph/example: vector_as_graph.expected
    Only in ./libs/graph/example: vertex-name-property.cpp
    Only in ./libs/graph/example: vertex_basics.cpp
    Only in ./libs/graph/example: vertex_basics.expected
    Only in ./libs/graph/example: visitor.cpp
    Only in ./libs/graph/example: visitor.expected
    Only in ./libs/graph/example: write_graphviz.cpp
    Only in ./libs/graph: index.html
    Only in ./libs/graph: src
    diff --recursive --unified ./libs/graph/test/Jamfile.v2 ../../Libdev/boost-graph-dfs/libs/graph/test/Jamfile.v2
    old new  
    4242    [ run csr_graph_test.cpp : : : : : <variant>release ]
    4343    [ run dag_longest_paths.cpp ]
    4444    [ run dfs.cpp ../../test/build//boost_test_exec_monitor ]
     45    [ run undirected_dfs.cpp ../../test/build//boost_test_exec_monitor ]
    4546    [ compile dfs_cc.cpp ]
    4647    [ compile dijkstra_cc.cpp ]
    4748    [ run dijkstra_heap_performance.cpp : 10000 ]
  • libs/graph/test/dfs.cpp

    Only in ./libs/graph/test: adj_list_cc.cpp
    Only in ./libs/graph/test: adj_list_edge_list_set.cpp
    Only in ./libs/graph/test: adj_list_invalidation.cpp
    Only in ./libs/graph/test: adj_list_loops.cpp
    Only in ./libs/graph/test: adj_list_test.cpp
    Only in ./libs/graph/test: adj_matrix_cc.cpp
    Only in ./libs/graph/test: adjacency_matrix_test.cpp
    Only in ./libs/graph/test: all_planar_input_files_test.cpp
    Only in ./libs/graph/test: astar_search_test.cpp
    Only in ./libs/graph/test: basic_planarity_test.cpp
    Only in ./libs/graph/test: bellman-test.cpp
    Only in ./libs/graph/test: betweenness_centrality_test.cpp
    Only in ./libs/graph/test: bfs.cpp
    Only in ./libs/graph/test: bfs_cc.cpp
    Only in ./libs/graph/test: biconnected_components_test.cpp
    Only in ./libs/graph/test: bidir_remove_edge.cpp
    Only in ./libs/graph/test: bidir_vec_remove_edge.cpp
    Only in ./libs/graph/test: bipartite_test.cpp
    Only in ./libs/graph/test: boykov_kolmogorov_max_flow_test.cpp
    Only in ./libs/graph/test: bron_kerbosch_all_cliques.cpp
    Only in ./libs/graph/test: bundled_properties.cpp
    Only in ./libs/graph/test: closeness_centrality.cpp
    Only in ./libs/graph/test: clustering_coefficient.cpp
    Only in ./libs/graph/test: copy.cpp
    Only in ./libs/graph/test: core_numbers_test.cpp
    Only in ./libs/graph/test: csr_graph_test.cpp
    Only in ./libs/graph/test: cuthill_mckee_ordering.cpp
    Only in ./libs/graph/test: cycle_ratio_s382.90.dot
    Only in ./libs/graph/test: cycle_ratio_tests.cpp
    Only in ./libs/graph/test: dag_longest_paths.cpp
    Only in ./libs/graph/test: degree_centrality.cpp
    diff --recursive --unified ./libs/graph/test/dfs.cpp ../../Libdev/boost-graph-dfs/libs/graph/test/dfs.cpp
    old new  
    6868    using namespace boost;
    6969    BOOST_CHECK( get(m_color, target(e, g)) == Color::black() );
    7070  }
     71  template <class Edge, class Graph>
     72  void finish_edge(Edge e, Graph& g) {
     73    using namespace boost;
     74    BOOST_CHECK(
     75        (get(m_color, target(e, g)) == Color::gray())
     76     || (get(m_color, target(e, g)) == Color::black())
     77    );
     78  }
    7179  template <class Vertex, class Graph>
    7280  void finish_vertex(Vertex u, Graph&) {
    7381    using namespace boost;