UnCoVer (Using Coverability for Verification)
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Member Functions | Private Member Functions | List of all members
OldMinorOrder Class Reference

This class is an old implementation of the Hypergraph Minor Ordering based on searching for disjoint paths. More...

#include <OldMinorOrder.h>

Inheritance diagram for OldMinorOrder:
Inheritance graph
[legend]
Collaboration diagram for OldMinorOrder:
Collaboration graph
[legend]

Classes

class  PathFinder
 Searching for paths between two vertices. More...
 
struct  twoIDLists
 

Public Member Functions

 OldMinorOrder ()
 Creates a new OldMinorOrder object.
 
virtual ~OldMinorOrder ()
 Destroys the current OldMinorOrder object.
 
virtual bool isLessOrEq (graphs::Hypergraph const &smaller, graphs::Hypergraph const &bigger) const override
 Checks whether the first given graph is a minor of the second. More...
 

Private Member Functions

bool mapping (graphs::Hypergraph const &minor, graphs::Hypergraph const &graph, std::map< string, vector< IDType > > &occurencesG, vector< pair< IDType, string > > &occurencesM, size_t currentI, std::map< IDType, IDType > &mappings) const
 Finds a mapping of an edge in M in G. More...
 
bool createEdgeTupels (graphs::Hypergraph const &minor, graphs::Hypergraph const &graph, std::map< IDType, IDType > &mappings) const
 creates from the given edge-matches vertex-matches. More...
 
bool findPaths (graphs::Hypergraph const &g, std::list< std::set< IDType > > &connV, std::set< IDType > mappedEdges) const
 Based on the edgeTupels, sets of pathFinders are created for every edgeTupel. More...
 
void createCombinations (std::list< PathFinder > &p, std::list< PathFinder >::iterator it, std::list< std::set< IDType > > &result) const
 is called for each edgeTupel. More...
 
bool combinePaths (std::list< std::list< std::set< IDType > > * >::iterator it0, std::list< std::list< std::set< IDType > > * >::iterator end, std::set< IDType > &nodesUsed) const
 Tries all possible combinations of all possible combinations of paths of edgeTupels. More...
 

Detailed Description

This class is an old implementation of the Hypergraph Minor Ordering based on searching for disjoint paths.

It is only correct for directed graphs, i.e. where every edge is incident to at most two nodes.

Deprecated:
use the MinorOrder instead
See Also
MinorOrder
Author
Jan Stückrath
Marvin Heumüller

Member Function Documentation

bool combinePaths ( std::list< std::list< std::set< IDType > > * >::iterator  it0,
std::list< std::list< std::set< IDType > > * >::iterator  end,
std::set< IDType > &  nodesUsed 
) const
private

Tries all possible combinations of all possible combinations of paths of edgeTupels.

Long sentence, long act. Calls itself recursively until a combination of all necessary disjoint paths is found. Returns true in case of success.

void createCombinations ( std::list< PathFinder > &  p,
std::list< PathFinder >::iterator  it,
std::list< std::set< IDType > > &  result 
) const
private

is called for each edgeTupel.

Creates for each path combination a set of vertices and edges which lie on these paths. Each of those set will be added to the resulting list of possible combinations.

bool createEdgeTupels ( graphs::Hypergraph const &  minor,
graphs::Hypergraph const &  graph,
std::map< IDType, IDType > &  mappings 
) const
private

creates from the given edge-matches vertex-matches.

This is done by checking every vertex m in M and find a set of vertices <g> in G which are adjacent (correct port number) to every mapping of the edges which are adjacent to m. Calls FindPaths.

bool findPaths ( graphs::Hypergraph const &  g,
std::list< std::set< IDType > > &  connV,
std::set< IDType mappedEdges 
) const
private

Based on the edgeTupels, sets of pathFinders are created for every edgeTupel.

If edgeTupel t consists of vertices a, b, c, PathFinders p1 from a to b and p2 from b to c are created. Calls createCombinations in every step. Calls CombinePaths.

bool isLessOrEq ( graphs::Hypergraph const &  smaller,
graphs::Hypergraph const &  bigger 
) const
overridevirtual

Checks whether the first given graph is a minor of the second.

Parameters
smallerthe possible minor
biggerthe possibly larger graph
Returns
true iff the first graph is a minor of the second

Implements Order.

bool mapping ( graphs::Hypergraph const &  minor,
graphs::Hypergraph const &  graph,
std::map< string, vector< IDType > > &  occurencesG,
vector< pair< IDType, string > > &  occurencesM,
size_t  currentI,
std::map< IDType, IDType > &  mappings 
) const
private

Finds a mapping of an edge in M in G.

Function calls itself recursively. When all edges are mapped, the minor test process continues. If the result is bad, the function tries gradually any other mapping. Calls createEdgetupels.


The documentation for this class was generated from the following files: