Information

Author(s) pschaus
Deadline No deadline
Submission limit 2 submissions
every 1 hour(s)

Sign in

[Part2 Theory] Domains, Sparse Sets and StateManager


Question 1: Time Complexity of x.fix

The domain of a variable \(x\) is assumed to be implemented with a sparse-set. The domain size of \(x\) i is \(n\). What is the time complexity of the method \(x\).fix()?

Question 2: Sparse Set

The current internal state of a sparse set identified below as set and initially containing the values {0,1,2,3,4,5,6,7,8,9} is represented here:

insertion

What is the content of indexes after the following operations on the sparse set:

set.remove(7)
set.remove(0)
set.removeAllBut(1)

Give your answer as a comma-separated list, for instance:

0,6,2,3,4,5,7,9,8,1
Question 3: min() and max() Operations on Sparse Sets

Being able to retrieve the minimum and maximum value of a sparse-set domain is a very useful operation, especially for implementing bound-consistent propagators. What is the strategy followed in the default implementation of StateSparseSet.java for implementing efficiently the following operations:

min()
max()
Question 4: Sparse Set Backtrack

Assume the domain of a variable \(x\) is implemented with a sparse set and contains \(n\) values.

insertion

At some point, while exploring the search tree, assume the domain of \(x\) becomes empty and we need to backtrack all the way up to the root node in order to visit the right child node of the root. In the worst case, what is the time complexity required to restore all the values in the domain of \(x\)? Select the most accurate answer:

Question 5:
StateManager sm;

StateInt a = sm.makeStateInt(6);
StateInt b = sm.makeStateInt(12);

sm.saveState();

a.setValue(6);

sm.saveState();

a.setValue(6);
a.setValue(8);

sm.saveState();
sm.restoreState();
System.out.println(a.value());
a.setValue(5);
System.out.println(a.value());
sm.restoreState();
sm.restoreState();

What is printed?

Question 6:
StateManager sm = new Trailer();

StateInt a = sm.makeStateInt(6);
StateInt b = sm.makeStateInt(12);

sm.saveState();

a.setValue(6);

sm.saveState();

a.setValue(6);
a.setValue(8);

sm.saveState();
sm.restoreState();
System.out.println(a.value());
a.setValue(5);
System.out.println(a.value());
sm.restoreState();
sm.restoreState();

How many objects of type StateEntry are created overall when executing this program ?

Question 7:
StateManager sm = new Copier();

StateInt a = sm.makeStateInt(6);
StateInt b = sm.makeStateInt(12);

sm.saveState();

a.setValue(6);

sm.saveState();

StateInt c = sm.makeStateInt(9);

a.setValue(6);
a.setValue(8);

sm.saveState();
sm.restoreState();
System.out.println(a.value());
a.setValue(5);
System.out.println(a.value());
sm.restoreState();
sm.restoreState();

How many objects of type StateEntry are created overall when executing this program ?