[Lemon-user] Question regarding the MaxWeightedPerfectMatching class

Balazs Dezso deba at inf.elte.hu
Thu Jul 17 15:42:15 CEST 2008


Hi

The current algorithm runs on undirected graphs, so the solution is to use 
ListUGraph instead of ListGraph.

The fixed code:

#include <iostream>
#include <lemon/list_graph.h>
#include <lemon/max_matching.h>

int main()
{
  typedef lemon::ListUGraph UGraph;
  typedef Graph::UEdgeMap<int> LengthMap;
  using lemon::INVALID;

  UGraph g;

  LengthMap length(g);

  typedef lemon::MaxWeightedPerfectMatching<UGraph,LengthMap> MWPM;
  // MWPM gg(g, length);
}

If you would like to use directed graphs, you can use the UndirGraphAdaptor to 
give the directed graph object for the matching algorithm.

Best, Balazs


On Thursday 17 July 2008 14:44:30 Dragos Trinca wrote:
> Hi,
>
> I have a question regarding the MaxWeightedPerfectMatching class.
>
> The following code works well:
>
>
> #include <iostream>
> #include <lemon/list_graph.h>
> #include <lemon/max_matching.h>
>
> int main()
> {
>   typedef lemon::ListGraph Graph;
>   typedef Graph::EdgeMap<int> LengthMap;
>   using lemon::INVALID;
>
>   Graph g;
>
>   LengthMap length(g);
>
>   typedef lemon::MaxWeightedPerfectMatching<Graph,LengthMap> MWPM;
>   // MWPM gg(g, length);
> }
>
>
> However, if I remove the comments from the last line, it gives me errors as
> follows:
>
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h: In instantiation of
> âlemon::MaxWeightedPerfectMatching<lemon::ListGraph,
> lemon::GraphExtender<lemon::ListGraphBase>::EdgeMap<int> >â:
> hello_lemon.cc:95:   instantiated from here
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2024: error: no type
> named âUEdgeâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2024: error: no type
> named âUEdgeItâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2024: error: no type
> named âIncEdgeItâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h: In instantiation of
> âlemon::MaxWeightedPerfectMatching<lemon::ListGraph,
> lemon::GraphExtender<lemon::ListGraphBase>::EdgeMap<int> >â:
> hello_lemon.cc:95:   instantiated from here
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2055: error: no class
> template named âUEdgeMapâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2100: error: no class
> template named âUEdgeMapâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2101: error: no class
> template named âUEdgeMapâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2474: error: no type
> named âUEdgeâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2508: error: no type
> named âUEdgeâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2990: error: no type
> named âUEdgeâ in âclass lemon::ListGraphâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h: In constructor
> âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::MaxWeightedPerfectMatching(const _UGraph&, const _WeightMap&)
> [with _UGraph = lemon::ListGraph, _WeightMap =
> lemon::GraphExtender<lemon::ListGraphBase>::EdgeMap<int>]â:
> hello_lemon.cc:95:   instantiated from here
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2825: error: using
> invalid field âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::_delta3_indexâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2825: error: using
> invalid field âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::_delta3â
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h: In member function
> âvoid lemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::destroyStructures() [with _UGraph = lemon::ListGraph,
> _WeightMap = lemon::GraphExtender<lemon::ListGraphBase>::EdgeMap<int>]â:
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2828:   instantiated
> from âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::~MaxWeightedPerfectMatching() [with _UGraph =
> lemon::ListGraph, _WeightMap =
> lemon::GraphExtender<lemon::ListGraphBase>::EdgeMap<int>]â
> hello_lemon.cc:95:   instantiated from here
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2179: error: using
> invalid field âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::_delta3â
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2180: error: using
> invalid field âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::_delta3_indexâ
> /home/dnt04001/lemon-0.7/include/lemon/max_matching.h:2181: error: using
> invalid field âlemon::MaxWeightedPerfectMatching<_UGraph,
> _WeightMap>::_delta3â
>
> Maybe somebody can tell me how to use the MaxWeightedPerfectMatching class.
>
> Thanks,
>
> Dragos
>
>
>
> _______________________________________________
> Lemon-user mailing list
> Lemon-user at lemon.cs.elte.hu
> http://lemon.cs.elte.hu/mailman/listinfo/lemon-user




More information about the Lemon-user mailing list