welcome: please sign in

Revision 7 as of 2011-01-25 15:32:06

Clear message
location: FinalProblemDescriptions / CompanyControls

Company Controls

Problem Description

Company Controls is a problem in the area of stock market, in which the goal is to determine the pair of companies X,Y such that X controls Y, given information on stock possessions of companies. We are interested in a decision version of this problem.

Given a situation of shareholdership and a company C, is it true that C is the main controller? In other words, is the number of companies controlled by C greater than or equals to the number of companies controlled by any other company?

Remind that, in order to control a company Y, a company X has to exert control over more than 50% of the stock of Y. Company X can exert control over stock of Y in two different ways: X itself may possess a certain percentage of stock of Y, in this case we say that X directly exerts control over the respective percentage of stock of Y. Alternatively, if X controls a company Z, which exerts control over stock of Y, then we say that X indirectly exerts control over the respective stock of Y. Company X then exerts control over the sum of stock of Y over which it directly and indirectly exerts control. Alternatively, we can define the control relation inductively, by saying that company X controls Y if the sum of the shares in Y possessed by X and by companies controlled by X is more than 50%.

The input is comprised of the company C, the set of all companies and the percentages of directly controlled stock.

More details in the following papers:

Predicates

Input format

The company C is specified by a ground query for predicate "hasMaxControls", for example:

hasMaxControls(c1)?

The set of companies is specified by instances of "company", for example:

company(c1). company(c2). company(c3). company(c4).

The percentages of directly controlled stock is given by instances of "owns", for example:

owns(c1,c2,60). owns(c1,c3,20). owns(c2,c3,40). owns(c3,c4,51).

Output format

If the number of companies which are controlled by C is greater than or equals to the number of controlled companies by any other company, the output should be the input ground query or nothing otherwise, in agreement with the Input and Output format specifications.

Example(s)

For the input

company(c1). company(c2). company(c3). company(c4). 
owns(c1,c2,60). owns(c1,c3,20). owns(c2,c3,40). owns(c3,c4,51).
hasMaxControls(c1)?

the output should be

hasMaxControls(c1).

because

Similarly, for

company(c1). company(c2). company(c3). company(c4). 
owns(c1,c2,60). owns(c1,c3,20). owns(c2,c3,40). owns(c3,c4,51).
hasMaxControls(c3)?

the output should be INCONSISTENT

Author(s)