2007年8月6日
《六子棋魂》是一份由六子棋友们自发创建的中文月刊。我们各自发挥所长,共同编撰,透过这份刊物传达对六子棋的热情,期盼我们的努力能让更多的人了解六子棋、喜爱六子棋,一起领略这方圆世界中的美妙天地。
《六子棋魂》每月6号出刊。繁体、简体字混排,依原稿编码而定。刊物栏目依当期稿件而定。本期编委成员有:八步乱(台湾)、icwu(台湾)、回马枪(澳门)、Echo(台湾)、日出(广东)、Carnot(台湾)、z(悉尼)。本期总编:z。图标设计:八步乱。
《六子棋魂》是一份属于大家的刊物,需要您的支持和参与。欢迎您写下任何关于六子棋的心情随感、诘棋解答、自战解说等文章,寄给以上任何一位编委成员。我们会在下一期刊登您的作品。谢谢!
身高:171
體重:66
年齡:47
學經歷:台大電機系學士(深藍Deep Blue作者許峰雄也是此系學士)
台大資訊碩士
美國卡內基美隆大學計算機博士(深藍Deep Blue作者許峰雄也是此系博士)
嗜好:Research (gaming), Programming, Thinking
休閒活動:益智遊戲,如六子棋、圍棋、數獨(Sudoku),包含更複雜的殺手數獨(Killer Sudoku)。
從2003年,想到這遊戲開始,我其實經常想;六子棋是『必勝』、『必敗』亦或是『必和』的遊戲(『必和』部份,指的是有必和公式或下法)?若能證明任何一項,則這個棋將會變得不好玩。然而,基於過去做研究的訓練,凡事都要窮究真理。就算是最後的結論是,有必勝或必和的下法,也是我有興趣的研究議題。
此遊戲之專業比賽,未來『一定』會加上『終局算誰的五多』這個新規則。 也許目前大家不見得同意,但我相信這是未來趨勢。主因是,等未來大家對六子棋更深入了解後,會相信六子棋是個比較容易和局的遊戲,尤其是對頂尖高手!(我會這樣認為是因為很多棋局,大家研究後認為是必勝的,我們程式最後跑出一些奇怪的擋法)。
若一個棋類遊戲容易和局,也會產生一些比較奇怪的效應。我舉個例子,這次參加許舜欽 教授三年一度的『世界電腦象棋爭霸賽』,就聽到一個現象。象棋高手決定『要和』的話,難度比『要贏』,高出許多。 因此,若有人知道對手很強時,就設法與他和局。據說這個現象,產生了一個有趣但沒有證實的故事(若有錯,大陸的朋友可以指正),大陸高手一般認為『許銀川』最強,但他幾年來常常無法贏得冠軍;這是因為許多人與他下時,抱著必和的態度,因此他每次比賽積分不高。若六子棋也是傾向和局的話,未來高手也必然會用這個方式,這將使得真正高手無法出頭。 加上『終局算誰的五多』此規則後,我相信此遊戲不可限量!如同圍棋的搶目,頂尖高手必可分出高下。目前的分析,六子棋大概是世界第三複雜的遊戲(象棋),但若加上這個規則,有可能到第二複雜的遊戲(日本將棋)。
「想到一個新的想法不難,要把這想法讓別人相信及付諸實現才是難的地方」
我從小就喜歡沈思於數學題目、棋類遊戲 (圍棋棋力達業餘三段)。在念台大電機系的時候,那時電腦是相當新鮮的東西,很自然地也就產生了興趣。大四的時候,出於好奇,想要測試自己能寫多大的程式,就在當時的台大電機館(現稱為電機舊館)四樓的DEC VAX 11/750迷你電腦上,設計了一個五子棋程式。雖然這程式幾乎沒有搜尋,但已能擊敗不少當時上機的學生。而這次的設計經驗,讓當時的我開始對電腦下棋產生了極大的興趣。
2003 年暑假,我在與小女兒玩五子棋時,小女兒玩膩了五子棋下法,便提議要變更玩法,改成每次下兩子,連成六個贏。當時我第一個反應是五子棋已經對黑有利了,若下兩個,不是更有利嗎?不過想說與女兒玩好玩的,就讓女兒先下看看。當然第二個反應是若改成黑先只下一子,不就平衡了嗎?在玩得過程中,發現此遊戲有相當的難度,甚至不比五子棋差。有了這些發現後,一連好幾天廢寢忘食地讓自己與自己對下。
其實,我一直不敢以「發明」者自居,因為這樣簡單的遊戲規則,想到過這樣下法的人,一定有而且可能是更早,只是沒有發表。然而,自認為做了一個很重要的事情,就是去研究分析這個遊戲。讓大眾知道,這個新遊戲不是只是一個比五子棋多一顆子而已,而是一個有相當內涵及思惟的新遊戲。
「對奕的目的不單只是如何擊敗對方,而是在此過程中獲得成長」
本身六子棋棋力不強,並不常與「人」下六子棋,主要還是從觀察程式下法中學習。雖然只是偶爾會在新竹鴻友公司的員工餐廳出現 ( 每週三晚上新竹棋社 ),但自認對於如何下出好棋的邏輯,有一些認識。由我及學生共同開發出的『交大六號—NCTU6』,參加『第十一屆奧林匹亞電腦競賽』,便榮獲了六子棋程式冠軍;同時也在2006 年六子棋電腦人機趣味賽,首次公開和國人對奕中,結果得到了44勝4敗的優異成績。雖然當時有許多高手並未參加,但是對我們還是一種鼓勵,在接下來的人機賽,將會與嘗試和高段棋手競賽。
電腦程式的完全開發,對於棋手相互間的競賽,我認為可從『既合作、又競爭』的角度來看。以象棋為例,很多棋士用電腦軟體,來協助學習!從另一個角度,電腦也能開始下出,人們所沒想到過的好棋。以這個月(2007/07)『世界電腦象棋爭霸賽』,電腦冠軍『棋天大聖』對台灣棋王『吳貴臨』為例;當時第一場的局勢大家覺得『吳』優時,電腦程式卻下出一著大家沒想到的高棋。這對高段或低段的棋士而言,能藉由電腦程式的刺激,無疑也是一種學習。也就是說,心態上對頂尖程式,應該抱持互相學習的態度。
其實,對發展六子棋程式而言,我認為,發展強大的AI程式,並非目前最重要或唯一的事,而是可以利用電腦的強大運算能力,完成更多的目標:
l 自動產生詰棋的系統
l 自動產生定石的系統
l 驗證必勝的系統
我們可以這樣想,六子棋發表以來僅有2歲吧!這與其他棋種有百年以上的歷史,是無法相比。目前有的詰棋、定石數量都遠低於其他棋種。我認為用程式來大量發展,才能解決這些問題!因此,目前我的想法,主要還不是發展能擊敗人的程式,而是用他來發展上述系統。截至目前為止,我們深信已經能證明LG網站上四至五個,排行大約在第二十左右受歡迎的白開局定石,是黑必勝。這些反而是我們最有興趣的事情。
「我動腦你思考,讓大家都能體會下六子棋的無窮樂趣」
2007年04月15日六子棋協會的正式成立,目的在於推廣六子棋教育,提昇棋藝文化水準。期間舉辦了兩場全國性六子棋公開賽,吸引不少國內好手參賽。接下來今年 8月26日,預計舉辦的『第二屆交大盃六子棋公開賽』,也歡迎大家共襄盛舉。
對於大家所關切的問題,是如何檢定六子棋棋力。六子棋在國內是屬於相當新穎棋種,將會依循五子棋協會的方式,採用比較嚴格的程序認證。目前國內所舉辦的六子棋競賽,數量還相當少。而由『第一屆群想盃六子棋公開賽』,甲組前四強選手,六子棋協會將授予六子棋初段證書;將來,人數有到十人或更多的時候,六子棋協會也會舉辦升段賽。而對於段以下的級位認定,將可透過程式、詰棋等方式進行認證。
未來透過程式的系統開發,必定有助於國內六子棋的推廣,詰棋棋譜的生成,能帶領初學者,更容易地了解六子棋的思考方式。同時對於進階者不疑也是個,能夠訓練算子能力的好方法。不論是舉辦全國性及國際性的比賽,亦或是訂定六子棋棋力之段位、級位檢定標準,協會由衷的希望,能將這個相當有內涵及思惟的新遊戲,推廣給每一個人。
初學六子棋時,覺得比五子棋更難。因為每一步都要下兩子,所下的變化比一子多得多了;而且因為初學,不明白甚麼時候應該防守,甚麼時候可進攻也不知道。因為之前常下五子棋,在下六子棋時,就會有些不習慣;而且六子棋防守的模式不同於五子棋,六子棋防守時可隔一子防守,五子棋只是在對手沒法連攻而且對自己有利的時候才隔子防守且進攻。而我進攻太明顯,又不懂做子,基本很難取勝。
我學六子棋的時間還只是很短的時間,在這學六子棋的期間,經常與比自己實力強的人下。有些人只會和比自己實力弱的人下棋,這樣對自己並沒有好的幫助,很難提升自己的棋力。在和實力強的對手下子,從中可吸取經驗,從他們身上學會怎樣進攻和防守,學會算子,計算對手或自己可否連攻取勝。在自己可以連攻的時候,還要計算對方有沒有反四;進攻以活二為主,可以用四來與別的子想連來製造活二。因為每次下兩子,要取勝必定要有一個活四和一個死四或三個或以上死四才能取勝,所以要儘量製造多些活二。在做子的同時也要注意對方的攻勢,不要只顧自己進攻而忘了對手的攻擊,儘量防守對方的活二。因為活2容易連子再做二,但不用完全防對手,看對方可否再連子進攻。如果對方沒法進攻的話就可採取攻勢,也可繼續防守。如果對手有多於二個活二,就只好找出對手重要的位置作防守。在防止對方攻勢的同時也要幫自己製造機會,儘量找出既可攻亦可守的位置。
到現在,雖然下六子棋的時間還不長,但覺得六子棋防守比五子棋容易,可能是開始習慣了,進攻方面也進步不少,可惜做子方面仍然很差。所以有人下棋的時候就去觀戰,空閒時參考一下對戰的棋譜,從中參考雙方對戰時的棋路,在對局時可適當運用。
在知道有六子棋的時候,我一點也不感興趣,甚至還覺得有點厭惡。因為覺得有五子棋就可以,為何要多此一舉?但當嘗試過一次以後,就喜歡上了,喜歡的程度更超越了五子棋。因為六子棋的變化很大,也沒有像五子棋的禁手,沒有甚麼規則的限制,下起來比較流暢,也沒有五子棋的不公平現象,取勝也比較難;而且也容易上手,也可加強思考能力,通過這期刊,希望有更多人認識和嘗試六子棋。
基於棋局討論的必要性,六子棋需要給予一些開局命名,使得討論更為便利。然而,由於六子棋可下的範圍更大,這讓開局命名問題更為複雜。目前,提出的命名法有下:
這是六子棋研究小組研究的第一個六子棋定石。
詰棋是指巧妙設計的盤面,解題者必須很有技巧地找出問題所要求達到的目的,例如必勝下法、阻擋下法。但有些六子棋的詰棋並非只有唯一的一解,對這樣的情形,答案儘量選擇較簡易的解法。
為了紀念六子棋的創刊所製作的作品之一,照著六子棋的規則(第一手黑下一顆、之後白黑輪流下兩顆),由形狀8˙6和20手(黑19:白20)排列而成,排列時,計算黑如何有趣的追勝。 黑如何取勝?(提示:白死四攻擊、又有雙殺,但黑強攻下,是可以取勝的)
j10 k11 k9 k10 i10 i11 i9 i12 g13 h13 i13 f12 f10 f11 f13 g10 f9 h10 f7 f8 g7 i7 k7 h7 i8 k8 l10 l7 m7 n8 n9 n7 n10 m10 k12 l13 m13 k13 n13 n12
解答於下一期月刊『詰棋區』刊出。
六子棋程序虽然起步晚,但在近两年内已经取得不小进展。由台湾国立交通大学吴毅成教授、学生張修逞和方炯珽开发的“交大六号”(NCTU6)在荣获第11届电脑奥林匹亚竞赛六子棋冠军后,又在首次公开人机对战中以44胜4败的骄人成绩凯旋而归。台湾东华大学的刘思源和颜士净开发的X6则后来居上,夺得今年电脑奥林匹亚的六子棋比赛桂冠。然而目前顶尖的六子棋程序尚还无法与人类高手匹敌。这与六子棋本身的复杂性不无关系。
复杂性的根源在于六子棋庞大的分支因数(branching factor)。由于除第一步外每步需要布两子,若不剪枝的话,分枝便会逾万。如果像很多国际象棋程序那样(平均分枝约35)生成所有可能棋步的话,将会严重限制搜索深度。所以forward pruning似乎是不可避免的。以X6为例,它只考虑离已有棋子不超过3格的落点。NCTU6的move generator也是类似:首先快速选出单下一子的前n个局部最优落点,接着对这些情况分别选出前m个第二子的局部最优点,然后对候选棋步再作一次排序并进一步搜索前k个分枝。
当棋局中出现冲四、活四等迫着(threats)时,搜索分枝便非常少了。以活四为例,可行的应着只有三种。这时采用迫着搜索(threat-space search)便可以在较短的时间内分析搜索深度很大的连杀序列──通常称作VCT(victory by continuous threats),又称VCF(victory by continuous fours)。在六子棋比赛中,十步以上的高深度连杀并不罕见。为了进一步加快迫着搜索的速度,有时可以牺牲一些搜索精度,靠较小的false negative换取大幅度的性能提升。比如,让防守方分别用两颗子挡住活四的两端,把三种可能降为一种。如此一来,只需要搜索进攻方的分枝即可──adversary search被简化为了single agent search,效果类似于null-move pruning。当然,这样过于保守的分析会错过不少连杀机会。实际应用时应当在精度和速度间寻求平衡。
棋局评估(evaluation function)也是一个难点。一种简单的策略是选出一组容易快速计算的特征量,例如活二数、眠三数、局部棋形等等,然后加权求和。权重的选择除了靠手工调整外,也可以考虑使用reinforcement learning、genetic algorithm等方法进行自动学习。另一种广受围棋AI青睐、但尚未被六子棋界采纳、可能会颇为有效的方法是monte carlo simulation。它的优势在并行化计算时可能会更为明显。
Creative Commons