332,491 research outputs found
Rooted Graph Programs
We present an approach for programming with graph transformation rules in which programs can be as efficient as programs in imperative languages. The basic idea is to equip rules and host graphs with distinguished nodes, so-called roots, and to match roots in rules with roots in host graphs. This enables graph transformation rules to be matched in constant time, provided that host graphs have a bounded node degree (which in practice is often the case). Hence, for example, programs with a linear bound on the number of rule applications run in truly linear time. We demonstrate the feasibility of this approach with a case study in graph colouring
Linear-Time Graph Algorithms in GP 2
GP 2 is an experimental programming language based on graph transformation rules which aims to facilitate program analysis and verification. However, implementing graph algorithms efficiently in a rule-based language is challenging because graph pattern matching is expensive. GP 2 mitigates this problem by providing rooted rules which, under mild conditions, can be matched in constant time. In this paper, we present linear-time GP 2 programs for three problems: tree recognition, binary directed acyclic graph (DAG) recognition, and topological sorting. In each case, we show the correctness of the program, prove its linear time complexity, and also give empirical evidence for the linear run time. For DAG recognition and topological sorting, the linear behaviour is achieved by implementing depth-first search strategies based on an encoding of stacks in graphs
Exponential Time Complexity of Weighted Counting of Independent Sets
We consider weighted counting of independent sets using a rational weight x:
Given a graph with n vertices, count its independent sets such that each set of
size k contributes x^k. This is equivalent to computation of the partition
function of the lattice gas with hard-core self-repulsion and hard-core pair
interaction. We show the following conditional lower bounds: If counting the
satisfying assignments of a 3-CNF formula in n variables (#3SAT) needs time
2^{\Omega(n)} (i.e. there is a c>0 such that no algorithm can solve #3SAT in
time 2^{cn}), counting the independent sets of size n/3 of an n-vertex graph
needs time 2^{\Omega(n)} and weighted counting of independent sets needs time
2^{\Omega(n/log^3 n)} for all rational weights x\neq 0.
We have two technical ingredients: The first is a reduction from 3SAT to
independent sets that preserves the number of solutions and increases the
instance size only by a constant factor. Second, we devise a combination of
vertex cloning and path addition. This graph transformation allows us to adapt
a recent technique by Dell, Husfeldt, and Wahlen which enables interpolation by
a family of reductions, each of which increases the instance size only
polylogarithmically.Comment: Introduction revised, differences between versions of counting
independent sets stated more precisely, minor improvements. 14 page
On the Complexity of Local Graph Transformations
We consider the problem of transforming a given graph G_s into a desired graph G_t by applying a minimum number of primitives from a particular set of local graph transformation primitives. These primitives are local in the sense that each node can apply them based on local knowledge and by affecting only its 1-neighborhood. Although the specific set of primitives we consider makes it possible to transform any (weakly) connected graph into any other (weakly) connected graph consisting of the same nodes, they cannot disconnect the graph or introduce new nodes into the graph, making them ideal in the context of supervised overlay network transformations. We prove that computing a minimum sequence of primitive applications (even centralized) for arbitrary G_s and G_t is NP-hard, which we conjecture to hold for any set of local graph transformation primitives satisfying the aforementioned properties. On the other hand, we show that this problem admits a polynomial time algorithm with a constant approximation ratio
On the Hardness and Inapproximability of Recognizing Wheeler Graphs
In recent years several compressed indexes based on variants of the Burrows-Wheeler transformation have been introduced. Some of these are used to index structures far more complex than a single string, as was originally done with the FM-index [Ferragina and Manzini, J. ACM 2005]. As such, there has been an increasing effort to better understand under which conditions such an indexing scheme is possible. This has led to the introduction of Wheeler graphs [Gagie et al., Theor. Comput. Sci., 2017]. Gagie et al. showed that de Bruijn graphs, generalized compressed suffix arrays, and several other BWT related structures can be represented as Wheeler graphs, and that Wheeler graphs can be indexed in a way which is space efficient. Hence, being able to recognize whether a given graph is a Wheeler graph, or being able to approximate a given graph by a Wheeler graph, could have numerous applications in indexing. Here we resolve the open question of whether there exists an efficient algorithm for recognizing if a given graph is a Wheeler graph. We present:
- The problem of recognizing whether a given graph G=(V,E) is a Wheeler graph is NP-complete for any edge label alphabet of size sigma >= 2, even when G is a DAG. This holds even on a restricted, subset of graphs called d-NFA\u27s for d >= 5. This is in contrast to recent results demonstrating the problem can be solved in polynomial time for d-NFA\u27s where d <= 2. We also show the recognition problem can be solved in linear time for sigma =1;
- There exists an 2^{e log sigma + O(n + e)} time exact algorithm where n = |V| and e = |E|. This algorithm relies on graph isomorphism being computable in strictly sub-exponential time;
- We define an optimization variant of the problem called Wheeler Graph Violation, abbreviated WGV, where the aim is to remove the minimum number of edges in order to obtain a Wheeler graph. We show WGV is APX-hard, even when G is a DAG, implying there exists a constant C >= 1 for which there is no C-approximation algorithm (unless P = NP). Also, conditioned on the Unique Games Conjecture, for all C >= 1, it is NP-hard to find a C-approximation;
- We define the Wheeler Subgraph problem, abbreviated WS, where the aim is to find the largest subgraph which is a Wheeler Graph (the dual of the WGV). In contrast to WGV, we prove that the WS problem is in APX for sigma=O(1);
The above findings suggest that most problems under this theme are computationally difficult. However, we identify a class of graphs for which the recognition problem is polynomial time solvable, raising the open question of which parameters determine this problem\u27s difficulty
A Fast Graph Program for Computing Minimum Spanning Trees
When using graph transformation rules to implement graph algorithms, a
challenge is to match the efficiency of programs in conventional languages. To
help overcome that challenge, the graph programming language GP 2 features
rooted rules which, under mild conditions, can match in constant time on
bounded degree graphs. In this paper, we present an efficient GP 2 program for
computing minimum spanning trees. We provide empirical performance results as
evidence for the program's subquadratic complexity on bounded degree graphs.
This is achieved using depth-first search as well as rooted graph
transformation. The program is based on Boruvka's algorithm for minimum
spanning trees. Our performance results show that the program's time complexity
is consistent with that of classical implementations of Boruvka's algorithm,
namely O(m log n), where m is the number of edges and n the number of nodes.Comment: In Proceedings GCM 2020, arXiv:2012.0118
Fast Rule-Based Graph Programs
Implementing graph algorithms efficiently in a rule-based language is
challenging because graph pattern matching is expensive. In this paper, we
present a number of linear-time implementations of graph algorithms in GP 2, an
experimental programming language based on graph transformation rules which
aims to facilitate program analysis and verification. We focus on two classes
of rule-based graph programs: graph reduction programs which check some graph
property, and programs using a depth-first search to test some property or
perform an operation such as producing a 2-colouring or a topological sorting.
Programs of the first type run in linear time without any constraints on input
graphs while programs of the second type require input graphs of bounded degree
to run in linear time. Essential for achieving the linear time complexity are
so-called rooted rules in GP 2, which, in many situations, can be matched in
constant time. For each of our programs, we prove both correctness and
complexity, and also give empirical evidence for their run time.Comment: 47 pages, 202
GP 2: Efficient Implementation of a Graph Programming Language
The graph programming language GP (Graph Programs) 2 and its implementation is the subject of this thesis. The language allows programmers to write visual graph programs at a high level of abstraction, bringing the task of solving graph-based problems to an environment in which the user feels comfortable and secure. Implementing graph programs presents two main challenges. The first challenge is translating programs from a high-level source code representation to executable code, which involves bridging the gap from a non-deterministic program to deterministic machine code. The second challenge is overcoming the theoretically impractical complexity of applying graph transformation rules, the basic computation step of a graph program.
The work presented in this thesis addresses both of these challenges. We tackle the first challenge by implementing a compiler that translates GP 2 graph programs directly to C code. Implementation strategies concerning the storage and access of internal data structures are empirically compared to determine the most efficient approach for executing practical graph programs. The second challenge is met by extending the double-pushout approach to graph transformation with root nodes to support fast execution of graph transformation rules by restricting the search to the local neighbourhood of the root nodes in the host graph. We add this theoretical construct to the GP 2 language in order to support rooted graph transformation rules, and we identify a class of rooted rules that are applicable in constant time on certain classes of graphs. Finally, we combine theory and practice by writing rooted graph programs to solve two common graph algorithms, and demonstrate that their execution times are capable of matching the execution times of tailored C solutions
- …