A computer implemented method, computer program product and system for generating a Bayesian network. A dataset comprising multiple instances of multiple variables is received. A target variable from the received dataset is selected. Multiple parent sets of variables for the target variable are determined, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables. For multiple variables of the received dataset, the selecting of a new target variable from the received dataset and determining multiple parent sets of variables for the new target variable is repeated. A Bayesian network (includes a directed acyclic graph of nodes and edges) is then generated for the variables such that one or more of the determined parent sets of variables for the target variables are inserted into the graph and edges from the graph are removed to ensure that the graph is acyclic.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A computer implemented method for generating a Bayesian network, the method comprising: receiving a dataset comprising multiple instances of multiple variables; selecting a target variable from the received dataset; determining multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables; repeating, for multiple variables of the received dataset, the selecting of a new target variable from the received dataset and determining of multiple parent sets of variables for the new target variable, such that, for each parent set of variables, the new target variable is functionally dependent on the respective parent set of variables, and generating, by a processor, the Bayesian network for the variables, the Bayesian network comprising a directed acyclic graph of nodes and edges, the generating including inserting one or more of the determined parent sets of variables for the target variables into the graph and removing edges from the graph to ensure that the graph is acyclic. 2. The method as recited in claim 1, wherein the repeating, for multiple variables of the received dataset, the selecting of the new target variable from the received dataset and determining of multiple parent sets of variables for the new target variable, such that, for each parent set of variables, the new target variable is functionally dependent on the respective parent set of variables, comprises repeating the selecting of the new target variable and determining of multiple parent sets of variables for the new target variable for all variables within the dataset for which such parent sets of variables can be generated. 3. The method as recited in claim 1, wherein the determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, comprises representing the parent set of variables as a path within a tree. 4. The method as recited in claim 3, wherein the determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, further comprises defining a starting path for the parent set of variables, transforming the starting path into a candidate path via a random modification of the path and checking the candidate path for a functional dependency between the parent set of variables defined by the candidate path and the target variable. 5. The method as recited in claim 4, wherein the determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, further comprises minimizing the candidate path by removing any parent variables that are not required for the functional dependency between the parent set of variables defined by the candidate path and the target variable. 6. A computer program product for generating a Bayesian network, the computer program product comprising a computer readable storage medium having program code embodied therewith, the program code comprising the programming instructions for: receiving a dataset comprising multiple instances of multiple variables; selecting a target variable from the received dataset; determining multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables; repeating, for multiple variables of the received dataset, the selecting of a new target variable from the received dataset and determining of multiple parent sets of variables for the new target variable, such that, for each parent set of variables, the new target variable is functionally dependent on the respective parent set of variables, and generating the Bayesian network for the variables, the Bayesian network comprising a directed acyclic graph of nodes and edges, the generating including inserting one or more of the determined parent sets of variables for the target variables into the graph and removing edges from the graph to ensure that the graph is acyclic. 7. The computer program product as recited in claim 6, wherein the programming instructions for repeating, for multiple variables of the received dataset, the selecting of the new target variable from the received dataset and determining of multiple parent sets of variables for the new target variable, such that, for each parent set of variables, the new target variable is functionally dependent on the respective parent set of variables, comprises programming instructions for repeating the selecting of the new target variable and determining of multiple parent sets of variables for the new target variable for all variables within the dataset for which such parent sets of variables can be generated. 8. The computer program product as recited in claim 6, wherein the programming instructions for determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, comprises programming instructions for representing the parent set of variables as a path within a tree. 9. The computer program product as recited in claim 8, wherein the programming instructions for determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, further comprises programming instructions for defining a starting path for the parent set of variables, transforming the starting path into a candidate path via a random modification of the path and checking the candidate path for a functional dependency between the parent set of variables defined by the candidate path and the target variable. 10. The computer program product as recited in claim 9, wherein the programming instructions for determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, further comprises programming instructions for minimizing the candidate path by removing any parent variables that are not required for the functional dependency between the parent set of variables defined by the candidate path and the target variable. 11. A system, comprising: a memory unit for storing a computer program for generating a Bayesian network; and a processor coupled to the memory unit, wherein the processor is configured to execute the program instructions of the computer program comprising: receiving a dataset comprising multiple instances of multiple variables; selecting a target variable from the received dataset; determining multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables; repeating, for multiple variables of the received dataset, the selecting of a new target variable from the received dataset and determining of multiple parent sets of variables for the new target variable, such that, for each parent set of variables, the new target variable is functionally dependent on the respective parent set of variables, and generating the Bayesian network for the variables, the Bayesian network comprising a directed acyclic graph of nodes and edges, the generating including inserting one or more of the determined parent sets of variables for the target variables into the graph and removing edges from the graph to ensure that the graph is acyclic. 12. The system as recited in claim 11, wherein the program instructions for repeating, for multiple variables of the received dataset, the selecting of the new target variable from the received dataset and determining of multiple parent sets of variables for the new target variable, such that, for each parent set of variables, the new target variable is functionally dependent on the respective parent set of variables, comprises program instructions for repeating the selecting of the new target variable and determining of multiple parent sets of variables for the new target variable for all variables within the dataset for which such parent sets of variables can be generated. 13. The system as recited in claim 11, wherein the program instructions for determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, comprises program instructions for representing the parent set of variables as a path within a tree. 14. The system as recited in claim 13, wherein the program instructions for determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, further comprises program instructions for defining a starting path for the parent set of variables, transforming the starting path into a candidate path via a random modification of the path and checking the candidate path for a functional dependency between the parent set of variables defined by the candidate path and the target variable. 15. The system as recited in claim 14, wherein the program instructions for determining of multiple parent sets of variables for the target variable, such that, for each parent set of variables, the target variable is functionally dependent on the respective parent set of variables, further comprises program instructions for minimizing the candidate path by removing any parent variables that are not required for the functional dependency between the parent set of variables defined by the candidate path and the target variable.