Java 试图建立一个决策树
我有这些角色,我试着做一个像这样的决策树Java 试图建立一个决策树,java,decision-tree,Java,Decision Tree,我有这些角色,我试着做一个像这样的决策树 Name Hair Eyes Shirt Glasses Smiling Hat Alice BROWN BLUE GREEN YES YES NO Bob BROWN BROWN GREEN YES NO YES Dave BROWN BROWN GREEN NO YES YES Emily BROWN HAZEL
Name Hair Eyes Shirt Glasses Smiling Hat
Alice BROWN BLUE GREEN YES YES NO
Bob BROWN BROWN GREEN YES NO YES
Dave BROWN BROWN GREEN NO YES YES
Emily BROWN HAZEL RED YES YES YES
Frank BROWN GREEN GREEN YES YES NO
Isabelle BROWN HAZEL GREEN YES YES NO
Mallie BROWN BLUE RED YES YES NO
Nick BROWN BLUE RED NO YES NO
Philip BROWN GREEN RED NO YES NO
Quinn BROWN BROWN RED NO YES NO
Robert BROWN BROWN RED NO YES YES
Tucker BROWN BLUE BLUE NO YES NO
Wendy BROWN BLUE RED YES NO NO
Zander BROWN BROWN BLUE NO YES NO
不幸的是,每个角色都尝试了很多次,我想知道是否有人可以帮助我?
我试图使每个角色的尝试次数达到10次或不足10次,但我似乎无法用if语句达到50%
有什么帮助吗?
我已经把其他发色分类了,但是棕色给我带来了麻烦不要用if-then-else
Key
的新类来保存属性hashCode()
和equals()
方法映射
,并使用帖子中表格的内容对其进行初始化键
,并设置属性值,将其用作地图中的查找键。例如:
if (g.hairIsColor(Color.BROWN))
{
if(g.isWearingGlasses())
{
if(g.shirtIsColor(Color.GREEN))
{
k = "Bob";
if(g.eyeIsColor(Color.GREEN))
{
k = "Frank";
}
if(g.eyeIsColor(Color.BLUE))
{
k = "Alice";
break outerloop;
}
if(g.eyeIsColor(Color.HAZEL))
{
k = "Isabelle";
}
}
if(g.eyeIsColor(Color.HAZEL))
k = "Emily";
if (g.isSmiling())
k = "Mallie";
}
else if(g.eyeIsColor(Color.BROWN))
{
if (g.shirtIsColor(Color.RED))
{
if(g.isWearingHat())
k = "Robert";
else
k = "Quinn";
}
else if(g.shirtIsColor(Color.GREEN))
k = "Dave";
else
k = "Zander";
}
else if(g.shirtIsColor(Color.RED))
{
if(g.eyeIsColor(Color.BLUE))
k = "Nick";
if(g.eyeIsColor(Color.GREEN))
k = "Philip";
}
else if(g.eyeIsColor(Color.BLUE) && g.shirtIsColor(Color.BLUE))
k = "Tucker";
}
条件运算符
if
提供0到1位的信息:
则提供零位,因为头发颜色是恒定的如果头发颜色为棕色
提供一位,因为它将搜索空间一分为二if glasses
使用提供完整位的测试在理论上可以通过四个测试来识别每个人。根据实际数据选择良好的测试应该可以实现这一点。但它可能要求测试的每个分支都有唯一的逻辑。例如,
glass=yes
可能在衬衫颜色上测试下一个,而glass=no
可能在帽子上测试下一个,以便将各自的搜索空间分支分成两半。修复了我的问题,结果是我从错误的第一个决定开始,最终做了错误的决定。我从眼睛颜色的不同if开始,并从那里开始解决我的问题如果你让别人做作业,人们不会愿意做。如果陈述是我应该如何做项目的哎哟!将复杂的决策树作为一系列if-then-else语句进行处理是一种反模式,因为它们不可能理解和维护。几乎任何替代方法都比在代码中嵌入决策树好。很抱歉,你必须这样做。我希望老师会提出更好的替代方案。
Key k = new Key(name, hair, eyes, shirt, glasses, hat, smiling, ...whatever);
String name = map.get(key);