welcome:
location: GracefulGraphs

Graceful Graphs

Problem Description

A graph (V,E) is called a graceful graph if its vertices V can be labelled with distinct integers from 0 to |E| such that, when each edge is labelled with the absolute difference between its vertex labels, the resulting edge labels are all distinct. The task is to determine the existence of a graceful labelling of a graph.

Predicates

• Input: edge/2

• Output: value/2

Input format

The edges of the graph are provided by instances of the predicate edge/2.

Output format

If a graceful labelling exists, a witness containing vertex labels encoded in the predicate value/2 has to be provided. value(X,I) means the vertex X is labelled with the unsigned integer I.

Example(s)

The example encodes a clique with 3 nodes:

edge(a,b). edge(b,c). edge(c,a).

It is graceful. An assignment of the values 0, 1, and 3 to the nodes provides a graceful labelling.

Thus, the output of the solver should look like:

value(a,0). value(b,1). value(c,3).

Other graceful labellings are also possible.

Problem Peculiarities

Type: Search Competition: Both Complexity: NP