Page 1

A.I. Fall 2007 Homework #2  94703024  資科三  劉凱新  2007/12/4    1‐1. a1.  最上方的三角形為倒三角形,  可知為第二位玩家做選擇.  在 D, E, F, G 時,  輪到第二位玩家做選擇,  他會選擇分數比較高的 node,  依序為 I(3,6),  J(‐1,8), M(2,5), N(7,3).  在 B, C 時,  輪到第一位玩家選擇,  他也會選擇自己 分數較高的 node,  分析 D, E, F, G 的情形之後, B, C 的選擇依序為 I(3,6),  N(7,3).  此時回到 A,  第一位玩家做選擇,  分析 B, C 的情形,  選擇 I(3,6).  因 此會走 a1 的路線.    1‐2.

1‐3. 2‐1.   2‐2.   2‐3.

2‐4.

需要. 這個遊戲並非傳統的零和遊戲,  兩位玩家都是個別在追求自己的最 高分數, leaf node 標示的數值也是將兩個玩家的分數分開.  我認為在這樣 的遊戲中無法因為 alpha‐beta‐search 而能夠減少搜尋的複雜度.  舉例來說,  我們搜尋完 H, I,  然後確定 D 情形時,  第二位玩家會選擇 I(3,6),  於是我們 更新了 B 的參考值為 I(3,6).  接著沿 E 往下看 J,  更新 E 的參考值為 J(‐1,8),  此時我們沒有辦法使用 E 來跟 D 比較,  不管怎樣都必需要去檢查 K,  因為 K 裡記載的第二位玩家的分數,  會決定 E 之後會往哪一個 node 走.  補充第一大題:  我想如果這個遊戲是以追求”分數差”,  來做搜尋, 1‐2 題使 用 alpha‐beta‐search 才會對於減少搜尋的複雜度有幫助.  R1 ‐> C, R2 ‐> M, R4 ‐> E, R6 ‐> G. G 成立  R6 ‐>  找 E, F.  找 E, R4 <‐  找 C, D.  找 C, R1 <‐ A, B 皆為 true, C 為 true. R4 <‐ C,  D 為 true, E 為 true. R6 <‐ E, F 為 true, G 為 true.  得證.  R1, R2, R7 都在可以執行的狀態,  但因 R1 的排序優先,  則先取 R1 執行. R1  ‐> C.  此時 R2, R4, R7 皆在可執行狀態,  但因只有 R4 有 C,  使用 depth first  search,  執行 R4 ‐> E.  此時 R2, R6, R7 接在可執行狀態,  只有 R6 有 E,  執行 R6 ‐> G.  得證 G 為 true.  擁有上次個 rule 推導出來產生的結果的 rule 優先 執行,  若有兩個以上,  則以排序來決定誰先執行.  R6, R7 可推導出 G,  因 R6 排序優先,  執行 R6 <‐  找 E, F. F 為 true.  因 breadth  first search,  找 R7 <‐ H.  此時要尋找 E, H. R4, R5, R9 為可能的 rule. R4 <‐ C, D.  D 已經為 true; R5 <‐ Y; R9 <‐ L.  此時要尋找  C, L, Y.  此時 R1, R3 為可能的 rule. R1 <‐ A, B. A, B 皆為 true; R3 <‐ X.  此時可知 R1 ‐> C, R4 ‐> E, R6 ‐> G,  得 證. 


3‐1. 3‐2.

3‐3.

純粹更改名稱並不影響程式的執行, 程式還是依照各個 rule 的條件來決定 是否進入該 rule.  如果現行的 facts 中有符合(checkguess waiting)的 fact.  則把?f1 這個變數指 到那個 fact.  然後繼續檢查其他 LHS 的 pattern. LHS 全部符合,  進入 RHS,  此時第一行就會做 retract ?f1,  將這個 fact 移除,  讓現行的 facts 的狀態可 以被 get‐guess 這個 rule 接受,  讓玩家可以重新輸入猜測的數字.  不會有影響,  程式會自動把這個 pattern 加到 LHS,  然後還是會執行這個 rule. 

3‐4.   3‐5.

3‐6.

這樣 facts 就沒有辦法符合任何一個 pattern, 不會進入任何的 rule,  使得遊 戲無法進行.  check‐guess‐valid 確認玩家輸入的數字在 1~100 之間,  若沒有把 (checkguess done)做設定的話,  就沒有辦法符合 answer‐hit,  answer‐missed‐bigger 或 answer‐missed‐smaller 三個 rule 的任何一個,  但是 同時 guess 也不是‐1,  不會進入 get‐guess.  程式執行到這邊之後,  就沒辦法 執行下去了.  這三個 rule 都必需在擁有(checkguess done)這個 fact 在的時候才會執行.  answer‐hit  檢查玩家輸入的數字是不是等於答案,  然後輸出”You  got  me…” 的文字,  並且將剩餘的 facts 全部 retract 掉. answer‐missed‐bigger 跟 answer‐missed‐smaller 則是分別測試數字是否大於或小於答案,  再輸出鄉 對應的文自訊息,  把 checkguess 跟 guess 這兩個 facts 給 retract 掉,  重設 (guess ‐1)使得 facts 的狀態可以符合 get‐guess 這個 rule 的 pattern,  玩家也 可以重新輸入猜測的數字. 

my homework two  

cool cool coll

Read more
Read more
Similar to
Popular now
Just for you