2014-09-30 115 views
0
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或下嘗試每個字符,但我似乎無法得到與if語句的50% 任何幫助嗎? 我已經整理了其他頭髮的顏色,但褐色給我帶來麻煩

+0

如果您要求某人爲您做作業,人們將不會願意這樣做。 – StackFlowed 2014-09-30 01:12:34

回答

0

解決了我的問題,事實證明我從錯誤的第一個決定開始,因此最終做錯了。我從一個不同的眼睛顏色開始,然後從那裏開始並修復我的問題

1

不要用if-then-else來做。

  1. 創建一個名爲Key新類來保存屬性
  2. 確保類有一個有效的hashCode()equals()方法
  3. 創建Map<Key,String>,並與表在您的文章
內容初始化

當您需要查找某人時,請創建一個新的Key並設置屬性的值,將其用作映射中的查找鍵。如:

Key k = new Key(name, hair, eyes, shirt, glasses, hat, smiling, ...whatever); 
String name = map.get(key); 
+0

如果陳述是我應該做的項目 – Joe 2014-09-30 01:17:03

+0

哎唷!將複雜的決策樹作爲if-then-else系列語句做一個_anti-pattern_是因爲它們不可能理解和維護。幾乎所有的替代方法都比在代碼中嵌入決策樹更好。對不起,你需要這樣做。我希望老師能跟上更好的選擇。 – 2014-10-01 02:53:07

0

條件運算符if提供0到1位的信息:

  • if hair color is brown提供零個比特,因爲髮色是不變的。

  • if glasses提供了一點,因爲它將搜索空間分成了一半。

使用提供全比特能夠在理論上認同四個測試每個人的測試。根據實際數據選擇好的測試應該可以解決這個問題。但它很可能要求測試的每個分支都有獨特的邏輯。例如glasses = yes可能接下來會測試襯衫顏色,並且glasses = no可能會接下來測試帽子以便將其各自的搜索空間分爲兩半。