First question in the computer science section. I am currently working on a solution that optimizes decision tree redundancy.
the following is an example of optimization:
| D1 | D2 | Outcome | | true | false | Yes | | false | false | No | | true | true | Yes | | false | true | No | when optimized gives: | D1 | D2 | Outcome | | true | - | Yes | | false | - | No |
I need to program this optimization. My decision tree will be different from the one that is shown here. I will have a string outcome, that is in no way a function of the input, and my input will contain 5 different possible inputs.
boolean, string, int, double and
datetime data types will also be present. Data in the input fields will be expressed using FEEL format.
What I want to know is if there already is a known algorithm for optimizing decision tables like these, or should can I expect to work this out by myself. I don't want to reinvent the wheel here, since this is quite a challenging project. An answer from the stackexchange forum suggested that I post here. He suggested that I start with the Quine–McCluskey algorithm. I looked into this, but it seems like that it's calibrated for boolen based decision tables.
Currently I am considering an approach like the flowing:
- If there are no duplicate outcomes, stop process
- Select rules with duplicate outcomes
- See which decisions are redundant by grouping/merging them
I am to write the code in C#
EDIT: Most inputs will be comparable to a degree. For instance, a string input will be one from a set of strings, and number values will fall in a certain range. But there is no guarantee they always will be.