JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 程式分享區 » Networking  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [遊戲]網路圍棋對奕程式 [精華]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-02-21 12:11 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這是我三年前寫的程式
原來的目的是希望能寫出一個有人工智慧的圍棋程式, 可以跟我在網路上玩圍棋.
後來寫不到兩個禮拜就放棄了, 因為人工智慧的部份對圍棋來說需要很大的計算能量, 目前的電腦還無法負擔.
由於那算是我第一次用 Java 寫 GUI, 所以有很多地方是可以改善的.
歡迎您拿去研究並與以加強.
因為是三年前寫的, 很多細節我忘了, 線在也沒時間去再回頭研究, 若您有興趣的化可能很多部份得要靠您自己了.

註: 新版已經推出, 舊板的下載已經刪除, 新版的下載請見後面討論.


caterpillar edited on 2005-02-02 10:25
reply to postreply to post
作者 Re:網路圍棋對奕程式 [Re:worookie]
hhocean





發文: 153
積分: 4
於 2004-02-22 03:46 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
想請問一下,
我以前也想寫過圍棋的程式,
但是卡在一個關鍵,
就是取子要怎麼判斷?

我知道以圍棋術語來講,
「氣」沒有了,就可以取子,
但是對程式來說,要怎麼去判斷呢?


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
sai





發文: 265
積分: 1
於 2004-04-01 09:36 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
雖然目前的一台電腦無法負荷這種龐大的運算,
不過,你要不要考慮用分散式運算的方式,
讓好幾台電腦同時算?
因為我正在寫象棋程式,用Java寫棋力一定是比不過用組合語言或C寫的程式,
我想用分散式的方式來寫,又不知道怎麼寫… Black Eye
如果可以集思廣義的話… Big Smile


reply to postreply to post
整合勞保、公保及勞工、公務員的退休制度,讓年資可以帶著走,這樣可以讓公部門和私部門的人才有機會交流,才不會讓公部門變成一灘死水!
作者 Re:[遊戲]網路圍棋對奕程式 [Re:sai]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-04-01 10:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sai wrote:
雖然目前的一台電腦無法負荷這種龐大的運算,
不過,你要不要考慮用分散式運算的方式,
讓好幾台電腦同時算?
因為我正在寫象棋程式,用Java寫棋力一定是比不過用組合語言或C寫的程式,
我想用分散式的方式來寫,又不知道怎麼寫… Black Eye
如果可以集思廣義的話… Big Smile


象棋的話一台電腦就夠了, 全世界也沒多少人下的贏電腦的象棋.

可是如果是圍棋的話, 把全世界的電腦叫來一起算, 其棋力還是很笨.


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
sai





發文: 265
積分: 1
於 2004-04-01 10:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
這樣看來圍棋的問題就不在電腦計算速度,而在演算法還太差…
象棋目前最高棋力似乎也只到六段左右,要說非常高其實還沒有,
還有蠻大的進步空間,所以我才會想用分散式的方式來加強棋力,
而且,用分散式的方式是有他的實用價值,
因為在許多網路象棋廳當你找不到對手時,可以找電腦下,
如果用一台電腦運算,只要有兩個人和電腦下,就可以把電腦操死了!
這時候分散式運算就可以粉墨登場了…


reply to postreply to post
整合勞保、公保及勞工、公務員的退休制度,讓年資可以帶著走,這樣可以讓公部門和私部門的人才有機會交流,才不會讓公部門變成一灘死水!
作者 Re:[遊戲]網路圍棋對奕程式 [Re:sai]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-04-01 11:04 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sai wrote:
如果用一台電腦運算,只要有兩個人和電腦下,就可以把電腦操死了!


咦 看來這兩個人都是高段高手.
我在十年前和 286 電腦下象棋只能打成平手.
那時我的棋力雖沒上段, 但也懂得什麼順砲,屏風碼,反攻碼什麼的, 也打敗班上隔壁班上隔壁隔壁班上的同學無敵手.
後來升級到 386 後就再也沒贏過電腦了. 嗚嗚嗚...
(註: 後來寫該象棋程式的作者虞希舜出了套象棋大師的軟體, 當時賣 500 元一套, 是一般電玩軟體的兩三倍價錢. 後來虞希舜又自己當了老闆, 現在不知如何了)
可是那時候我看電腦都算的很快啊. 怎麼十年後電腦還這麼笨呢?


worookie edited on 2004-04-01 11:11
reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
sai





發文: 265
積分: 1
於 2004-04-01 12:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
虞希舜的特級大師(二段)和將族我也有購買,
現在台灣棋力比較高的是象棋水滸戰2,號稱六段,
每次我跟六段玩CPU都衝到100%,
我想這個很正常,要棋力高就是在計算時一定"拼命算",
這樣才能在最短時間算出結果來,但是即使這樣,還是常算好幾分鐘,
所以,要是有兩個人一起玩,電腦肯定是不行的了…
ps. 象棋水滸戰2如果將棋力調成二段來下,倒是蠻快的,很快就落子了,
比特級大師和將族快非常多。


sai edited on 2004-04-01 12:16
reply to postreply to post
整合勞保、公保及勞工、公務員的退休制度,讓年資可以帶著走,這樣可以讓公部門和私部門的人才有機會交流,才不會讓公部門變成一灘死水!
作者 Re:[遊戲]網路圍棋對奕程式 [Re:sai]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-04-01 12:43 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sai wrote:
虞希舜的特級大師(二段)和將族我也有購買,
現在台灣棋力比較高的是象棋水滸戰2,號稱六段,
每次我跟六段玩CPU都衝到100%,
我想這個很正常,要棋力高就是在計算時一定"拼命算",
這樣才能在最短時間算出結果來,但是即使這樣,還是常算好幾分鐘,
所以,要是有兩個人一起玩,電腦肯定是不行的了…
ps. 象棋水滸戰2如果將棋力調成二段來下,倒是蠻快的,很快就落子了,
比特級大師和將族快非常多。


哈哈 看來大家都喜歡和高手下棋.

那好吧, 我門兩人來一起研究分散式計算的程式好了.
不過一個研究象棋, 一個研究圍棋的, 這樣兜不起來.
先暫時改成五子其簡單一點的如何?


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
sai





發文: 265
積分: 1
於 2004-04-01 17:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不曉得你打算要怎麼合作研究?

reply to postreply to post
整合勞保、公保及勞工、公務員的退休制度,讓年資可以帶著走,這樣可以讓公部門和私部門的人才有機會交流,才不會讓公部門變成一灘死水!
作者 Re:[遊戲]網路圍棋對奕程式 [Re:sai]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-04-01 17:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sai wrote:
不曉得你打算要怎麼合作研究?


可能就是開個 open source 的計畫吧並在這招兵買馬一下.
目前手頭很忙 (剛幫公司完成一套產品, 要到處去把該產品的知識傳授下去),
所以要等一段時間後才能開始進行.
開發環境的主機就用我的個人主機(及網站)好了, 不過測試環境就得各自想辦法, 畢竟各自至少需要有兩台以上的電腦能跑才叫做分散式吧.


worookie edited on 2004-04-01 17:57
reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
sai





發文: 265
積分: 1
於 2004-04-02 12:25 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
要兩台電腦是沒什麼問題,反正Java跨平台,
找起機器來方便多了,
不過,要等一段時間嘛~~~~
那就等你確定後再說會比較好。


reply to postreply to post
整合勞保、公保及勞工、公務員的退休制度,讓年資可以帶著走,這樣可以讓公部門和私部門的人才有機會交流,才不會讓公部門變成一灘死水!
作者 Re:網路圍棋對奕程式 [Re:hhocean]
nekokiller





發文: 13
積分: 0
於 2004-05-25 15:09 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
hhocean wrote:
想請問一下,
我以前也想寫過圍棋的程式,
但是卡在一個關鍵,
就是取子要怎麼判斷?

我知道以圍棋術語來講,
「氣」沒有了,就可以取子,
但是對程式來說,要怎麼去判斷呢?


要分成幾個部分:
在單步下一子時,是否有可以立刻取子的判斷,只要判斷最近落子處的上下左右,有無對方的子,再用遞迴或迴圈,搜尋對方子所連接的所有子,用走迷宮的方式,檢查對方的子四周圍有無空地,只要檢查到一個空地,就可以停止搜尋了,因為無法取子。反之就可以取子。
這部分簡單,而且搜尋時間可以極短。

在終盤的時候,判斷死子或活子,比較複雜,主要是要檢查區塊內有無「兩眼」,有兩眼者活。
這部分如果盤末下到很明確的地步,可以很好算,但圍棋高手往往只要下到中盤,就知道會輸會贏,所以很多空地都不會下,這時候對程式而言,很多地方是屬於「未知」的,只能標一個「問號」來處理。


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:sai]
nekokiller





發文: 13
積分: 0
於 2004-05-25 15:21 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
sai wrote:
雖然目前的一台電腦無法負荷這種龐大的運算,
不過,你要不要考慮用分散式運算的方式,
讓好幾台電腦同時算?
因為我正在寫象棋程式,用Java寫棋力一定是比不過用組合語言或C寫的程式,
我想用分散式的方式來寫,又不知道怎麼寫… Black Eye
如果可以集思廣義的話… Big Smile


小弟認為,棋力跟用什麼語言寫的無關。如果您是指執行速度,我想,那個是跟程式碼的最佳化有關,組合語言和C語言,譯成機器碼時,同樣一段程式,寫在java,譯成機器碼後的程式長度,會比組合語言、C語言來得多,這是高階語言必然的問題,但是程式碼最佳化是可以改善的,同樣的目的(指下棋的策略)如果是不變的,高階語言的機器碼最佳化是比較複雜,沒有最佳化之前,機器碼長的,執行速度就久,導致影響棋力。但最佳化之後,機器碼和組合語言程式編譯後的機器碼,應該是要一樣的。
影響棋力的關鍵,九成還是在程式中所設計的演算法、策略才對。

分散式處理,現在最新的技術就是平行處理,使用MPI技術,國內中研院、許多大專院校都有使用MPI架設成電腦叢集(就是讓一堆便宜的PC合力對某個程式作運算)
而且小弟認為這部分的技術已經蠻久的了,我在大學時代也架設了四個note的平行處理平台,(就是四部PC),執行一個程式。

因此分散式處理的技術,時下還比較簡單,難的還是下棋策略的改進。


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
nekokiller





發文: 13
積分: 0
於 2004-05-25 15:35 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
worookie wrote:
這是我三年前寫的程式
原來的目的是希望能寫出一個有人工智慧的圍棋程式, 可以跟我在網路上玩圍棋.
後來寫不到兩個禮拜就放棄了, 因為人工智慧的部份對圍棋來說需要很大的計算能量, 目前的電腦還無法負擔.
由於那算是我第一次用 Java 寫 GUI, 所以有很多地方是可以改善的.
歡迎您拿去研究並與以加強.
因為是三年前寫的, 很多細節我忘了, 線在也沒時間去再回頭研究, 若您有興趣的化可能很多部份得要靠您自己了.


[轉貼]
圍棋電腦明顯的比國際象棋電腦差,很多人以此「證明」圍棋比較高深。雖然圍棋規則很簡單,但是由於盤面廣大(一般的對局棋盤是 19×19),實際上對局時的變化卻比其他的棋戲複雜得多。例如國際象棋或象棋,已能藉由一些簡單的推理與深度的搜尋思考而達到相當高的棋力,但這種方法卻不太適合應用在圍棋這種高複雜度的棋戲中。A.Samuel 估計跳棋的複雜度大約是 10 的 40 次方〔Samuel, 1959〕,而 A.Newll 估計國際象棋的複雜度大約是 10 的 120 次方〔Newell et al., 1958〕。這兩種棋戲的複雜度雖然已是天文數字,但比起圍棋的複雜度則要小得多了,Brown 及 Dowsey 估計圍棋所有可能的變化大約是 10 的 700 次方〔Brown and Dowsey 81〕....
[轉貼結束]

如上文提到的,國際象棋(西洋棋)的複雜度已經是「天文數字」了,但是跟圍棋比起來,還是小巫見大巫。
因此圍棋程式的策略,如只是單純用計算、深度搜尋的方式,其計算量絕對是遠遠超過目前的電腦運算科技。

所以在許多的研究報告指出圍棋程式的策略,暫時要改用人工思維的方式,把人的想法給予電腦才行,這「人的想法」不是用算的,而是下圍棋的戰略,這就牽涉到圍棋棋士們的思路了。

小弟目前也在撰寫電腦圍棋程式,也是研究所的課題,我的指導教授也是寫電腦圍棋程式,他的程式在國際比賽中,每年都有得名,我還在跟他學習中。如果有新的發現,再來與大大們討論研究。


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:nekokiller]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-05-25 15:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
[轉貼]
圍棋電腦明顯的比國際象棋電腦差,很多人以此「證明」圍棋比較高深。雖然圍棋規則很簡單,但是由於盤面廣大(一般的對局棋盤是 19×19),實際上對局時的變化卻比其他的棋戲複雜得多。例如國際象棋或象棋,已能藉由一些簡單的推理與深度的搜尋思考而達到相當高的棋力,但這種方法卻不太適合應用在圍棋這種高複雜度的棋戲中。A.Samuel 估計跳棋的複雜度大約是 10 的 40 次方〔Samuel, 1959〕,而 A.Newll 估計國際象棋的複雜度大約是 10 的 120 次方〔Newell et al., 1958〕。這兩種棋戲的複雜度雖然已是天文數字,但比起圍棋的複雜度則要小得多了,Brown 及 Dowsey 估計圍棋所有可能的變化大約是 10 的 700 次方〔Brown and Dowsey 81〕....
[轉貼結束]

如上文提到的,國際象棋(西洋棋)的複雜度已經是「天文數字」了,但是跟圍棋比起來,還是小巫見大巫。
因此圍棋程式的策略,如只是單純用計算、深度搜尋的方式,其計算量絕對是遠遠超過目前的電腦運算科技。

所以在許多的研究報告指出圍棋程式的策略,暫時要改用人工思維的方式,把人的想法給予電腦才行,這「人的想法」不是用算的,而是下圍棋的戰略,這就牽涉到圍棋棋士們的思路了。

小弟目前也在撰寫電腦圍棋程式,也是研究所的課題,我的指導教授也是寫電腦圍棋程式,他的程式在國際比賽中,每年都有得名,我還在跟他學習中。如果有新的發現,再來與大大們討論研究。


您該不會是許舜欽老師家族的學生吧
另外有一個網友 sai 跟我兩個人正在慢慢進行一些 open source 的程式計畫, 他在寫他的象棋程式, 我的圍棋程式也在慢慢改寫中. 如果您有興趣的話, 非常歡迎加入我門一同討論. 您只要給我您的 email, 我就把該計畫的主要網址告訴您.


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:nekokiller]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-05-25 16:13 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
小弟認為,棋力跟用什麼語言寫的無關。如果您是指執行速度,我想,那個是跟程式碼的最佳化有關,組合語言和C語言,譯成機器碼時,同樣一段程式,寫在java,譯成機器碼後的程式長度,會比組合語言、C語言來得多,這是高階語言必然的問題,但是程式碼最佳化是可以改善的,同樣的目的(指下棋的策略)如果是不變的,高階語言的機器碼最佳化是比較複雜,沒有最佳化之前,機器碼長的,執行速度就久,導致影響棋力。但最佳化之後,機器碼和組合語言程式編譯後的機器碼,應該是要一樣的。
影響棋力的關鍵,九成還是在程式中所設計的演算法、策略才對。

分散式處理,現在最新的技術就是平行處理,使用MPI技術,國內中研院、許多大專院校都有使用MPI架設成電腦叢集(就是讓一堆便宜的PC合力對某個程式作運算)
而且小弟認為這部分的技術已經蠻久的了,我在大學時代也架設了四個note的平行處理平台,(就是四部PC),執行一個程式。

因此分散式處理的技術,時下還比較簡單,難的還是下棋策略的改進。


前陣子在和 sai 私下討論時, 我有去找了一些平行計算的資料.
可是找到的資料都算是滿舊的, 不知道跟不跟的上現代機器的技術.
可否請您推薦一些研讀資料呢.

java 的部份相關資料也很少. j2se1.5 中有一些新的 java.util.concurrent package, 不知道跟平行處理有沒有關係?

另外不知道您知不知道有個 apple 好像是 G4 機器所組成的叢集大型刺服器, 只用幾百萬美金就打造出來了全世界最快的電腦之ㄧ. 可謂很划算的機器. 不知道您有沒有剛好知道其所運用的技術是哪種呢?

謝謝


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
nekokiller





發文: 13
積分: 0
於 2004-05-25 16:17 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
worookie wrote:
您該不會是許舜欽老師家族的學生吧
另外有一個網友 sai 跟我兩個人正在慢慢進行一些 open source 的程式計畫, 他在寫他的象棋程式, 我的圍棋程式也在慢慢改寫中. 如果您有興趣的話, 非常歡迎加入我門一同討論. 您只要給我您的 email, 我就把該計畫的主要網址告訴您.


唔,被你發現了~~
許教授是我的教授的教授。@@

剛剛才註冊,還不知道怎麼設定個人屬性。

nekoliu@mail2000.com.tw


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
nekokiller





發文: 13
積分: 0
於 2004-05-25 16:50 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
worookie wrote:
前陣子在和 sai 私下討論時, 我有去找了一些平行計算的資料.
可是找到的資料都算是滿舊的, 不知道跟不跟的上現代機器的技術.
可否請您推薦一些研讀資料呢.
java 的部份相關資料也很少. j2se1.5 中有一些新的 java.util.concurrent package, 不知道跟平行處理有沒有關係?
另外不知道您知不知道有個 apple 好像是 G4 機器所組成的叢集大型刺服器, 只用幾百萬美金就打造出來了全世界最快的電腦之ㄧ. 可謂很划算的機器. 不知道您有沒有剛好知道其所運用的技術是哪種呢?
謝謝


呃,不用謝,我還是只是個拜師學藝的嫩學生。

java我還在搞1.4,1.5的我可能還要再了解。

你說的叢集大型伺服器,其實只要牽涉到叢集,它的英文若是Clusters的話,幾乎都是平行處理的領域。clusters的特色就是「效能價格比」高,就是效能除上價格,的比例。
你提到G4 clusters所運用的技術,我雖然不確定。但就我所知,核心應該是用MPI技術,因為 MPI 技術的發展已經有段時日了,而且越來越容易使用,功越能越來越強。就我所了解,很多國家的叢集系統,都用MPI為基礎,是個趨勢。

已經以前作研究時,架設了 4 部 pc 的clusters,一直到後來擴增為 19 部 pc 的clusters,我們用的作業系統是redhat,連線、共享設定好之後(用一般網路卡連成區域網路而已)灌上MPI的軟體 package,就可以開始寫平行程式,作平行處理了。核心技術就是 MPI 這個好用的東東,一言難盡。

簡單的講,MPI只是socket技術的包裝,弄成你完全不需要碰 socket,它都會幫你做好,你只要呼叫MPI function就好了。網路上應該有一些資料。搜尋「MPI」就行了。它全名是 message passing interface。

我查了一下 apple G4,它本身cpu就很強了。再把一堆G4 ,組成cluster(可能介面是用MPI技術),而變成超級伺服器吧。


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:nekokiller]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-05-25 17:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
已經以前作研究時,架設了 4 部 pc 的clusters,一直到後來擴增為 19 部 pc 的clusters,我們用的作業系統是redhat,連線、共享設定好之後(用一般網路卡連成區域網路而已)灌上MPI的軟體 package,就可以開始寫平行程式,作平行處理了。核心技術就是 MPI 這個好用的東東,一言難盡。

簡單的講,MPI只是socket技術的包裝,弄成你完全不需要碰 socket,它都會幫你做好,你只要呼叫MPI function就好了。網路上應該有一些資料。搜尋「MPI」就行了。它全名是 message passing interface。


謝謝
我剛上網搜尋了一下 java+MPI 的資料, 找到了滿多的, 看來我得要花一駝時間來消化他.
想先請教一下, 您在 redhat 上所灌的軟體是不是要花錢買的, 還有該軟體應該不是給 java 用的吧 (因為 java 沒有 function Big Smile), 如果是要給 java 用的, 不知道您有沒有剛好知道有不錯的軟體呢?


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
nekokiller





發文: 13
積分: 0
於 2004-05-25 17:28 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
worookie wrote:
謝謝
我剛上網搜尋了一下 java+MPI 的資料, 找到了滿多的, 看來我得要花一駝時間來消化他.
想先請教一下, 您在 redhat 上所灌的軟體是不是要花錢買的, 還有該軟體應該不是給 java 用的吧 (因為 java 沒有 function Big Smile), 如果是要給 java 用的, 不知道您有沒有剛好知道有不錯的軟體呢?


我記得那時候是直接從國外的網站上downlaod的,mpi是免費的,而且是open source的,當時就有 for linux 的、有 for windows 的版本,java平台的好像也有,但我沒有試過耶。
如果是for java,它應該自然會是package,呼叫類別物件的方式。

電腦圍棋下贏人類,是我的夢想,我的打算是準備要投入我畢生的心血在電腦圍棋上面,呵呵,西洋棋發展了40年,我想圍棋大概也要xx年吧。
雖然我還很嫩,但希望能加入你們的PDCAI。


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:nekokiller]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-05-25 17:37 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
我記得那時候是直接從國外的網站上downlaod的,mpi是免費的,而且是open source的,當時就有 for linux 的、有 for windows 的版本,java平台的好像也有,但我沒有試過耶。
如果是for java,它應該自然會是package,呼叫類別物件的方式。

謝謝您提供的寶貴資訊


電腦圍棋下贏人類,是我的夢想,我的打算是準備要投入我畢生的心血在電腦圍棋上面,呵呵,西洋棋發展了40年,我想圍棋大概也要xx年吧。
雖然我還很嫩,但希望能加入你們的PDCAI。


40 年時間我大概也有吧. 歡迎一起來實現夢想.


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:nekokiller]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-05-26 02:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
簡單的講,MPI只是socket技術的包裝,弄成你完全不需要碰 socket,它都會幫你做好,你只要呼叫MPI function就好了。網路上應該有一些資料。搜尋「MPI」就行了。它全名是 message passing interface。


目前我還不是很懂 MPI... 正在設計我的圍棋程式的基本架構說, 想先請教個平行處理的問題:
假設有一個計算, 包含了 5 種變化 (為求簡化, 變化難度假設皆為相等). 我門的目的是要把這 5 種變化算完, 然後找出最佳的答案. 現在假設有 5 台同等級的電腦可供使用, 那要如何使用這 5 台電腦來獲得最佳效應呢? 目前我想到的有兩種執行模式:

(1) 由 5 台電腦分別去算 5 種變化, 等通通算好後, 再來一起比較 5 種結果.

(2) 由 5 台電腦合力去把 5 種變化一個接著一個的算完.

上述兩種方法各有優缺點, 例如:

- 第 (1) 種的方法, 並無法充分發揮 Alpha-Beta 的功能 (Alpha-Beta 的介紹, 可參見這裡的討論), 也就是說由於各電腦分開運算, 合作不夠密切, 造成有很多不必要的計算.

- 第 (2) 種的方法, 可充分發揮 Alpha-Beta 的功能, 但是合作可能過於密切, 造成網路傳輸資料的過熱 (overhead). 也就是說花太多時間在"合作"上面, 對於"計算"部份反而忽略了.

不知道諸位先進有無高見, 您覺得哪種模式較好呢?

(如果覺得離題太遠的話, 我再把此討論移到 J2SE 版去討論)


worookie edited on 2004-05-26 03:02
reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:worookie]
nekokiller





發文: 13
積分: 0
於 2004-05-26 08:13 user profilesend a private message to usersend email to nekokillerreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
worookie wrote:
(1) 由 5 台電腦分別去算 5 種變化, 等通通算好後, 再來一起比較 5 種結果.
(2) 由 5 台電腦合力去把 5 種變化一個接著一個的算完.
上述兩種方法各有優缺點, 例如:

- 第 (1) 種的方法, 並無法充分發揮 Alpha-Beta 的功能 (Alpha-Beta 的介紹, 可參見這裡的討論), 也就是說由於各電腦分開運算, 合作不夠密切, 造成有很多不必要的計算.

- 第 (2) 種的方法, 可充分發揮 Alpha-Beta 的功能, 但是合作可能過於密切, 造成網路傳輸資料的過熱 (overhead). 也就是說花太多時間在"合作"上面, 對於"計算"部份反而忽略了.

不知道諸位先進有無高見, 您覺得哪種模式較好呢?

(如果覺得離題太遠的話, 我再把此討論移到 J2SE 版去討論)


小弟的看法,還要了解那5個變化本身,每一個變化的計算中,有沒有辦法平行化。
因為假設一個計算過程中,又分好幾道步驟,而每一道步驟之間有強烈的先後順序關係,就是說第一步一定要先算完,才能算第二步的話,這種計算是無法平行化的,就是只能交由一顆CPU處理。反之,如果第一步還沒算完,第二步、第三步其實可以獨立先計算的話,那就可以平行化,同時處理,就可以交由多顆獨立的CPU處理。

如果那5種變化,每一種都不適合平行化,那麼應該要先考慮 (1) 的作法。如果那5種變化,都可以平行化,那麼 (1) 的作法所花費的時間,跟(2) 的作法所花費的"計算"時間,應該是一樣的。(我是以我實作上的經驗來假設)

而 作法(2) 的確會有網路傳輸資料的過熱的問題,在總花費時間的比較上,作法(2) 比 作法(1) 多出來的時間量,恰好就是網路傳輸的時間。
(而實作上,網路傳輸過熱,造成的影響很大,一不小心就能導致5台電腦的 CPU 都在閒置,網路卡都在拚命的傳資料,傳輸時間就遠大於計算時間,我稱之為網路崩潰)

誠如您所言,作法(1)也有缺點,合作不夠密切的必然問題。但這是可以調整的,就是在計算過程中,在程式中有需要的地方,我們可以再加上一些程式碼,讓那5台電腦在需要的時候,彼此交換一下資料,交流一下,讓重複計算的部分降到最低。(也就是程式碼平行化的課題,平行程式設計的課題)

而作法(2)的網路傳輸過熱問題,恐怕除了砸錢,買最好的網路通訊設備之外,只要到了網路傳輸的上限,可能就會束手無策了。

不過我想,兩種作法可以實驗比較,或許我有未考慮之處。


reply to postreply to post
作者 Re:[遊戲]網路圍棋對奕程式 [Re:nekokiller]
worookie

Small Ship

版主

發文: 2092
積分: 21
於 2004-05-26 08:26 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
小弟的看法...

感謝您的看法... 因為討論內容和原來標題有點遠了, 我會另外在 J2SE 版開個新的討論串.


worookie edited on 2004-05-26 08:55
reply to postreply to post
作者 Re:網路圍棋對奕程式 [Re:nekokiller]
UndeadJ

UX & UI Design



發文: 384
積分: 3
於 2004-05-26 11:41 user profilesend a private message to usersend email to UndeadJreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
nekokiller wrote:
要分成幾個部分:
在單步下一子時,是否有可以立刻取子的判斷,只要判斷最近落子處的上下左右,有無對方的子,再用遞迴或迴圈,搜尋對方子所連接的所有子,用走迷宮的方式,檢查對方的子四周圍有無空地,只要檢查到一個空地,就可以停止搜尋了,因為無法取子。反之就可以取子。
這部分簡單,而且搜尋時間可以極短。

在終盤的時候,判斷死子或活子,比較複雜,主要是要檢查區塊內有無「兩眼」,有兩眼者活。
這部分如果盤末下到很明確的地步,可以很好算,但圍棋高手往往只要下到中盤,就知道會輸會贏,所以很多空地都不會下,這時候對程式而言,很多地方是屬於「未知」的,只能標一個「問號」來處理。


雙活、打劫也是一個問題
如何讓電腦在盤中有打劫的情況下,判斷目前局勢(盤面)好或不好,進而打輸或打贏這個劫

而雙活則是結束時(記地時)的另一個問題,雙方都有單眼or無眼時是可以雙活的
所以在記地時,不只是要檢查沒無二眼,再加上其它你所說的「問號」,複雜度又增加了


reply to postreply to post
我們是懷抱各自的夢想,買了車票的乘客,不過就像列車一定會有終點,人生有時會碰到必須換車的時候...

我們站在名為「今天」的車站,在名為「昨天」的列車下車,轉搭為「明天」的列車

不過,若沒及時搭上的話....
go to first page go to previous page  1   2  go to next page go to last page
» JWorld@TW »  Java 程式分享區 » Networking

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8