锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 2銆?寤洪犺呮ā寮?Builder Pattern) 3銆?鍘熷瀷妯″紡(Prototype Pattern) 4銆?宸ュ巶鏂規硶妯″紡(Factory Method Pattern) 瀛愮被銆?/p> 5銆?鍗曚緥妯″紡(Singleton Pattern) 緇撴瀯鍨嬫ā寮?Structural Pattern) 浜涚被鍙互涓璧峰伐浣溿?/p> 7銆?妗ユ帴妯″紡(Bridge Pattern) 8銆?緇勫悎妯″紡(Composite Pattern) 鎬с?/p> 9銆?瑁呴グ妯″紡(Decorator Pattern) 10銆?澶栬妯″紡(Facade Pattern) 鍔犲鏄撲嬌鐢ㄣ?/p> 11銆?浜厓妯″紡(Flyweight Pattern) 12銆?浠g悊妯″紡(Proxy Pattern) 琛屼負鍨嬫ā寮?Behavioral Pattern) 娌跨潃榪欐潯閾句紶閫掕璇鋒眰錛岀洿鍒版湁涓涓璞″鐞嗗畠銆?/p> 14銆?鍛戒護妯″紡(Command Pattern) 鍙婃敮鎸佸彲鍙栨秷鐨勬搷浣溿?/p> 15銆?瑙i噴鍣ㄦā寮?Interpreter Pattern) 16銆?榪唬鍣ㄦā寮?Iterator Pattern) 17銆?涓粙鑰呮ā寮?Mediator Pattern) 涓斿彲浠ョ嫭绔嬪湴鏀瑰彉瀹冧滑涔嬮棿鐨勪氦浜掋?/p> 18銆?澶囧繕褰曟ā寮?Memento Pattern) 璞℃仮澶嶅埌淇濆瓨鐨勭姸鎬併?/p> 19銆?瑙傚療鑰呮ā寮?Observer Pattern) 鑷姩鍒鋒柊銆?/p> 20銆?鐘舵佹ā寮?State Pattern) 21銆?絳栫暐妯″紡(Strategy Pattern) 瀹冪殑瀹㈡埛銆?/p> 22銆?妯℃澘鏂規硶妯″紡(Template Method Pattern) 娉曠殑緇撴瀯鍗沖彲閲嶅畾涔夎綆楁硶鐨勬煇浜涚壒瀹氭楠ゃ?/p> 23銆?璁塊棶鑰呮ā寮?Visitor Pattern) 绱犵殑鏂版搷浣溿?/p> 瀵逛簬綆鍗曠殑澶氬厓鏁版嵁錛屾渶甯歌鐨勫彲瑙嗗寲鏂規硶鏄暎鐐瑰浘錛坰catterplot錛夈傛瘮濡傦紝瀵逛簬浜岀淮鏁版嵁錛岄氬父鐨勬柟娉曞氨鎶婂畠浠洿鎺ョ敾鎴愪簩緇村潗鏍囦笂鐨勪竴緋誨垪鐐癸紝浠庤屽彲浠ョ湅鍑烘暟鎹彉鍖栬秼鍔褲傚浜庢洿楂樼淮鐨勬暟鎹紝涓縐嶆柟娉曟槸鎶婃暟鎹殑姣忕灞炴х敤涓嶅悓鐨勫浘褰紝棰滆壊錛岀汗鐞嗙瓑錛岃〃紺哄湪浜岀淮鍧愭爣涓娿傛瘮濡備笅闈㈢殑鍥炬槸鐢?a >www.gapminder.org鐢熸垚鐨勶紝鐢ㄦ潵鏄劇ず浜嗕笘鐣屼笂鍥藉鐨勮儲瀵屽拰浜哄潎瀵垮懡鐨勫叧緋匯傛í杞存槸浜哄潎鏀跺叆錛岀旱杞存槸騫沖潎瀵垮懡錛屾瘡涓浗瀹惰〃紺轟竴涓渾錛屽渾鐨勫ぇ灝忚〃紺鴻鍥界殑浜哄彛錛屽渾鐨勯鑹插搴斾簬鎵鍦ㄧ殑鍖哄煙銆傝繖鏍蜂竴寮犲浘琛ㄨ揪浜嗕竴涓浗瀹剁殑4涓睘鎬с傚乏杈圭殑鍥炬槸鍩轟簬1980騫寸殑鏁版嵁錛岃屽彸杈圭殑鍥炬槸鍩轟簬2009騫寸殑鏁版嵁銆傚浘涓偅涓ぇ澶х殑綰㈠渾灝辨槸鎴戜滑涓浗錛屾垜浠彲浠ュ緢鐩磋鐨勭湅鍑鴻繖30騫翠腑鍥界殑鍙戝睍榪樻槸寰堢粰鍔涳紒緗戠珯涓婅繕鑳界敓鎴愬姩鐢伙紝婕旂ず鍚勪釜鍦嗙殑浣嶇疆鍙樻崲錛屽儚涓浗閭d箞澶х殑鍦嗚繕鑳藉姩閭d箞蹇紝涔熸槸鐙竴鏃犱簩鐨勩?/p> 瀵逛簬鏈夋洿澶氬睘鎬х殑鏁版嵁錛岀敤涓婇潰鐨勬柟娉曞氨寰寰涓嶈兘鏄劇ず浜嗐傚父瑙佺殑鏂規硶鏄敤鏁g偣鍥劇煩闃碉紙scatterplot matrix錛夛紝濡傛灉鏁版嵁鏈塏緇達紙N涓睘鎬э級錛屾墍鏈夌殑灞炴т袱涓ょ粍鍚堝氨鐢熸垚N x N涓簩緇存暎鐐瑰浘銆傛妸榪欎簺鍥炬帓鍒楁垚N x N鐨勭煩闃點傝繖鏍峰彲浠ヨ瀵熶換鎰忎袱涓睘鎬ч棿鐨勫叧緋匯傛瘮濡備笅闈㈣繖寮犲浘灝辨樉紺轟簡姹借濺鐨勪富瑕佸睘鎬ч棿鐨勬暎鐐瑰浘銆?銆戙傚叾涓璏PG浠h〃浜嗘苯杞︾殑娌硅楋紙姣忓姞浠戞補鑳藉紑鐨勬梾紼嬶級錛屼粠鍥鵑噷鎴戜滑鐪嬪嚭錛屽彂鍔ㄦ満椹姏瓚婂ぇMPG瓚婂皬錛岃濺瓚婇噸MPG瓚婂皬錛屽勾榫勮秺澶PG瓚婂皬錛岀瓑絳夈? 銆?銆慚. O. Ward. Xmdvtool: Integrating multiple methods for visualizing multivariate data. In Proceedings of IEEE Conference on Visualization, 1994. 鏁g偣鍥懼彲浠ュ緢濂界殑鏄劇ず灝戦噺灞炴х殑鏁版嵁銆備絾鏄紝鍗充嬌鐢ㄦ暎鐐瑰浘鐭╅樀涔熸棤娉曡В鍐沖睘鎬ф洿澶氱殑鎯呭喌錛岃屼笖姣忎釜灝忓浘鍙兘鏄劇ず2涓睘鎬ч棿鐨勮仈緋伙紝澶氫釜灞炴ч棿鐨勫叧緋誨茍涓嶆槸寰?鐩磋銆傝繖縐嶅眬闄愭т富瑕佹潵鑷皢鏁版嵁鎶曞獎鍦ㄤ簡浜岀淮鐩磋鍧愭爣緋諱笂銆備漢浠彁鍑轟竴緋誨垪鐨勬柟娉曟潵瑙e喅榪欎釜灞闄愭э紝鑰屽叾涓渶钁楀悕鐨勬槸1981騫碅lfred Inselberg 鎻愬嚭鐨勫鉤琛屽潗鏍囩郴錛圥arallel Coordinates錛夈傝繖縐嶆柟娉曟妸鍚勪釜灞炴ц〃紺烘垚涓緋誨垪鐨勫鉤琛岀殑杞達紝緇勬垚涓涓鉤琛屽潗鏍囩郴錛屾瘡鏉℃暟鎹氨琛ㄧず鎴愯繖涓潗鏍囩郴閲岀殑涓鏉$洿綰褲傛瘮濡傛垜浠湁榪欐牱涓 緇勬暟鎹? 鍙互鏂逛究鐨勮〃紺烘垚榪欐牱鐨勫鉤琛屽潗鏍? 騫寵鍧愭爣緋葷殑浼樺娍鍦ㄤ簬鍙戠幇澶ц妯℃暟鎹棿鐨勫睘鎬ц仈緋匯傛瘮濡傚啀鍥炲埌鍓嶉潰鐨勬苯杞︾殑鏁版嵁錛岀敤騫寵鍧愭爣鍙互琛ㄧず鎴愩?銆?img alt="" src="https://lh3.googleusercontent.com/KfvqDuK0W293UbOjnyxpj5jEaeaJiTUkH4P3k1kgO2fiLVC1DrwDilznywKrSzcqGVBjRTKQTOp-eaO2Magmc84R9OiImEK_NI1Kmq7hdVMScOex9w" width="573" /> 鍐嶅洖鍒版垜浠墠闈㈢涓涓緥瀛愶紝铏界劧鐪嬩笂鍘誨鍘嗗拰鏀跺叆鎴愬弽姣旓紝浣嗘槸濡傛灉鎴戜滑鏈夋洿澶氱殑鏁版嵁錛屽儚姹借濺鐨勪緥瀛愪竴鏍鳳紝騫寵鍧愭爣涔熷彲浠ョ粰鎴戜滑鏇存竻妤氭樉紺烘敹鍏ュ拰瀛﹀巻錛屽勾榫勭瓑絳夌殑鍏崇郴錛屾墍浠ヨ繕鍦ㄨ楂樺浣嶇殑鏈嬪弸鍏堜笉瑕佺伆蹇冨晩銆?/p> 銆?銆慚. O. Ward. Xmdvtool: Integrating multiple methods for visualizing multivariate data. In Proceedings of IEEE Conference on Visualization, 1994. 浣滀負澶氬厓鏁版嵁鍙鍖栫殑涓昏涓ょ鏂規硶錛屾暎鐐瑰浘鍜屽鉤琛屽潗鏍囧悇鏈変紭緙虹偣銆傛暎鐐瑰浘閫氬父鍙兘鏄劇幇涓や釜灞炴ч棿鐨勮仈緋伙紝浣嗘槸姣忔潯鏁版嵁閮借〃紺烘垚涓涓偣錛屼粠鑰屽噺灝戜簡鎬葷殑鍍忕礌鏁?閲忓拰瑙嗚澶嶆潅搴︼紱騫寵鍧愭爣鑳芥樉紺哄涓睘鎬ч棿鐨勮仈緋伙紝浣嗘槸姣忔潯鏁版嵁錛堝鏉″睘鎬э級琛ㄧず鎴愪竴鏉$嚎錛屽鍔犱簡鍍忕礌鐨勬暟閲忥紝褰撴暟鎹噺寰堝ぇ鐨勬椂鍊欙紝澶嶆潅搴﹀氨澶уぇ澧炲姞錛岃屾棤娉曟樉紺烘暟鎹棿鐨勮仈緋匯?009騫村寳澶х殑琚佹檽濡傛暀鎺堝湪IEEE VisWeek 涓婂彂琛ㄤ簡綃囨枃绔犮?銆戯紝鎻愬嚭浜嗕竴縐嶆妧鏈皢涓ょ鏂規硶緇撳悎鍦ㄤ竴鍧椼傚熀鏈殑鎯蟲硶鏄湪騫寵鍧愭爣閲岀殑杞翠箣闂存樉紺烘暎鐐瑰浘錛屼粠鑰屼嬌鍘熸潵鍦ㄥ鉤琛屽潗鏍囬噷鐪嬩笉娓呯殑鏁版嵁瓚嬪娍鐢ㄦ暎鐐瑰浘琛ㄧず銆傚儚涓嬮潰鐨勫乏鍥炬樉紺虹殑鏄鉤琛屽潗鏍囧浘錛岃屽彸鍥劇粨鍚堜簡鏁g偣鍥俱?/p> 鍦ㄤ袱涓鉤琛岃醬涔嬮棿鐢繪暎鐐瑰浘鐨勫熀鏈濊礬鏄妸鍙寵竟鐨勮醬鏃嬭漿90鍥撅紝榪欐牱涓庡乏杈圭殑褰㈡垚鐩磋鍧愭爣緋伙紝鏁g偣鍥劇殑緇樺埗鍜岃В璇諱篃灝變笌浼犵粺鐨勪竴鑷淬傜敾鏁g偣鍥劇殑鍖哄煙涓師鏉ョ殑鐩寸嚎鍙樻垚絀胯繃鏁g偣鍥劇殑鏇茬嚎錛岃繖鏍蜂繚鎸佷簡鍘熸潵騫寵鍧愭爣閲岀殑榪炴帴鍏崇郴錛屼篃鏀寔閫氳繃綰挎潵榪涜鏁版嵁絳涢夌殑鍔熻兘銆傝繖縐嶆柊鐨勬妧鏈篃鐢ㄥ埌浜嗗墠闈㈡墍璇寸殑姹借濺鏁版嵁鐨勪緥瀛愶紝鏈夊叴瓚g殑璇濇壘榪欑瘒璁烘枃璇諱竴璇誨惂銆?/p> 銆?銆?Xiaoru Yuan, et al. Scattering Points in Parallel Coordinates. IEEE Transactions on Visualzation and Computer Graphics, November/December 2009 (vol. 15 no. 6) 鍦ㄧ瀛﹁綆楀彲瑙嗗寲鐨勬椂鍊欙紝鐪嬪埌浜嗚繖綃嘼log錛屾枃绔犺瑙e緱闈炲父濂斤紒浣滆呬篃鏄潪甯哥墰鐨勶紒鐗規杞澆鍒版錛?/p> 澶у鍙互鍘婚《涓涓嬭繖涓猙log 鍏ㄦ枃杞澆濡備笅錛?/p> 鍙堟槸涓涓禌瀛b︹︾湅鍒板緢澶氫笉鐭ュ悕鐨処D寮濮嬪湪OJ涓婄殑鍑哄ご錛岀湅鍒頒互鍓嶆垜浠紶緇熸剰涔変笂瑙夊緱鍙兘鏄滃急鏍♀濈殑涓浜涘鏍′篃寮濮嬪璧鳳紝鐪熺殑寰堜負浠栦滑鎰熷埌楂樺叴錛屽挨鍏舵槸澶╂觸澶у錛岀湅鍒板ぉ澶у凡緇忓彲浠ュ湪娌℃湁RoBa鐨勬儏鍐典笅涔熻兘鍔涘帇鍏朵粬鐨勫悕鏍℃嬁鍒板鏍″悕嬈$涓夛紝鐪熺殑榪樻槸鏈夊緢澶氭劅鎱ㄧ殑銆? 紿佺劧寰堟劅鎱紝灝卞儚ikki鏈鍚庝竴鍙ワ紝榪欎竴鍒囬兘鏄技姘存祦騫淬傘傘?/p> 鍦ˋrena涓婃湁浠栫殑涓漢姣旇禌璁板綍錛岀湅鍒頒簡閭e彞logo:Never underestimate or just rely on your potential.鏄鑷繁鐨勫繝鍛婏紒鍔犳補錛佹垨璁革紝鏌愪竴澶╁綋ikki鐪嬪埌鑷繁鐨勮繖綃囨葷粨榪樿兘嬋鍔辯潃鏌愪簺浜哄墠榪涜鐨勬椂鍊欙紝浠栨垨璁鎬篃浼氭劅鍙逛竴鍙ワ紝浼兼按嫻佸勾鍚с傘傘傘?/p> 榪欏紶鍥劇墖鏄粡鍏稿晩錛屼袱縐嶉粍鑹茬殑紼嬪害鏄竴鏍風殑錛岀粰浜虹殑鎰熻闈炲父涓嶄竴鏍楓傘傘傘?/p> 浜虹殑瑙嗛敟瀵瑰厜鐨勬劅瑙夋槸瀹炶川涓婃槸榪欐牱涓涓Н鍒嗐傘傘?/p> 鎴戜滑鎵鐪嬪埌鐨凴GB錛屽綋鐒朵笉浠呬粎鏄疪錛屾槸寰堝涓嶅悓棰戠巼鐨勫厜鐨勬販鍚堢粨鏋勶紝鑰屼笖浠呬粎鐢盧錛孏錛孊涓嶈兘鏋勬垚鏁翠釜鐨勮壊褰╃┖闂淬傘傘傚叾瀹炶繖鏄竴涓繀鐒訛紝CIE鐨勮壊褰╃┖闂村緢鏄劇劧涓嶆槸涓涓弗鏍肩殑涓夎褰紝鎵浠ョ湅涓嶅叏鏄簲璇ョ殑銆傘傘傚綋鐒訛紝鎴戜滑鐨勫叏褰╂墦鍗幫紝褰撶劧涔熷仛涓嶅埌姣忎竴縐嶅僵鑹查兘鎵撳嵃鍑烘潵錛屾槸涓涓潪甯鎬笉瑙勫垯鐨勫尯鍩熴傘?/p> 瀛旈泙鐨勫熬宸翠負浠涔堜簲棰滃叚鑹詫紝鑹插僵鏂戞枔銆傘備笉瑕佸ぉ鐪熺殑浠ヤ負鐢ㄤ笉鍚岄鑹叉潗璐ㄥ氨鍙互妯℃嫙銆傘傘?/p> 絳旀錛?Iridescence銆傘傘傛垜涓嶆竻妤氭眽璇簲璇ユ庝箞緲昏瘧榪欎釜璇嶃傘傚共娑夛紵銆傘傘?/p> 鐢變簬鍗婇忔槑琛ㄧ毊鐨勮〃灞傚帤搴︿笉鍚岋紝錛堣繖涓被浼間簬鑲ョ殏娉$殑浜旈鍏壊錛夈傘傛墍浠ュ嚭鐜頒笅闈㈣繖縐嶆儏鍐點?/p> OK錛屾殏鏃跺埌姝ょ粨鏉熴?/p>
1銆?鎶借薄宸ュ巶妯″紡(Abstract Factory Pattern)
浠嬬粛
鎻愪緵涓涓垱寤轟竴緋誨垪鐩稿叧鎴栫浉浜掍緷璧栧璞$殑鎺ュ彛錛岃屾棤闇鎸囧畾瀹冧滑鍏蜂綋鐨勭被銆?/p>
浠嬬粛
灝嗕竴涓鏉傚璞$殑鏋勫緩涓庡畠鐨勮〃紺哄垎紱伙紝浣垮緱鍚屾牱鐨勬瀯寤鴻繃紼嬪彲浠ュ垱寤轟笉鍚岀殑琛ㄧず銆?/p>
浠嬬粛
鐢ㄥ師鍨嬪疄渚嬫寚瀹氬垱寤哄璞$殑縐嶇被錛屽茍涓旈氳繃鎷瘋礉榪欎釜鍘熷瀷鏉ュ垱寤烘柊鐨勫璞°?/p>
浠嬬粛
瀹氫箟涓涓敤浜庡垱寤哄璞$殑鎺ュ彛錛岃瀛愮被鍐沖畾灝嗗摢涓涓被瀹炰緥鍖栥侳actory Method浣夸竴涓被鐨勫疄渚嬪寲寤惰繜鍒板叾
浠嬬粛
淇濊瘉涓涓被浠呮湁涓涓疄渚嬶紝騫舵彁渚涗竴涓闂畠鐨勫叏灞璁塊棶鐐廣?/p>
6銆?閫傞厤鍣ㄦā寮?Adapter Pattern)
浠嬬粛
灝嗕竴涓被鐨勬帴鍙h漿鎹㈡垚瀹㈡埛甯屾湜鐨勫彟澶栦竴涓帴鍙c侫dapter妯″紡浣垮緱鍘熸湰鐢變簬鎺ュ彛涓嶅吋瀹硅屼笉鑳戒竴璧峰伐浣滅殑閭?/p>
浠嬬粛
灝嗘娊璞¢儴鍒嗕笌瀹冪殑瀹炵幇閮ㄥ垎鍒嗙錛屼嬌瀹冧滑閮藉彲浠ョ嫭绔嬪湴鍙樺寲銆?/p>
浠嬬粛
灝嗗璞$粍鍚堟垚鏍戝艦緇撴瀯浠ヨ〃紺衡滈儴鍒?鏁翠綋鈥濈殑灞傛緇撴瀯銆傚畠浣垮緱瀹㈡埛瀵瑰崟涓璞″拰澶嶅悎瀵硅薄鐨勪嬌鐢ㄥ叿鏈変竴鑷?/p>
浠嬬粛
鍔ㄦ佸湴緇欎竴涓璞℃坊鍔犱竴浜涢澶栫殑鑱岃矗銆傚氨鎵╁睍鍔熻兘鑰岃█錛屽畠姣旂敓鎴愬瓙綾繪柟寮忔洿涓虹伒媧匯?/p>
浠嬬粛
涓哄瓙緋葷粺涓殑涓緇勬帴鍙f彁渚涗竴涓竴鑷寸殑鐣岄潰錛孎acade妯″紡瀹氫箟浜嗕竴涓珮灞傛帴鍙o紝榪欎釜鎺ュ彛浣垮緱榪欎竴瀛愮郴緇熸洿
浠嬬粛
榪愮敤鍏變韓鎶鏈湁鏁堝湴鏀寔澶ч噺緇嗙矑搴︾殑瀵硅薄銆?/p>
浠嬬粛
涓哄叾浠栧璞℃彁渚涗竴涓唬鐞嗕互鎺у埗瀵硅繖涓璞$殑璁塊棶銆?/p>
13銆?璐d換閾炬ā寮?Chain of Responsibility Pattern)
浠嬬粛
涓鴻В闄よ姹傜殑鍙戦佽呭拰鎺ユ敹鑰呬箣闂磋﹀悎錛岃屼嬌澶氫釜瀵硅薄閮芥湁鏈轟細澶勭悊榪欎釜璇鋒眰銆傚皢榪欎簺瀵硅薄榪炴垚涓鏉¢摼錛屽茍
浠嬬粛
灝嗕竴涓姹傚皝瑁呬負涓涓璞★紝浠庤屼嬌浣犲彲鐢ㄤ笉鍚岀殑璇鋒眰瀵瑰鎴瘋繘琛屽弬鏁板寲錛涘璇鋒眰鎺掗槦鎴栬褰曡姹傛棩蹇楋紝浠?/p>
浠嬬粛
緇欏畾涓涓璦錛屽畾涔夊畠鐨勬枃娉曠殑涓縐嶈〃紺猴紝騫跺畾涔変竴涓В閲婂櫒, 璇ヨВ閲婂櫒浣跨敤璇ヨ〃紺烘潵瑙i噴璇█涓殑鍙ュ瓙銆?/p>
浠嬬粛
鎻愪緵涓縐嶆柟娉曢『搴忚闂竴涓仛鍚堝璞′腑鍚勪釜鍏冪礌, 鑰屽張涓嶉渶鏆撮湶璇ュ璞$殑鍐呴儴琛ㄧず銆?/p>
浠嬬粛
鐢ㄤ竴涓腑浠嬪璞℃潵灝佽涓緋誨垪鐨勫璞′氦浜掋備腑浠嬭呬嬌鍚勫璞′笉闇瑕佹樉寮忓湴鐩鎬簰寮曠敤錛屼粠鑰屼嬌鍏惰﹀悎鏉炬暎錛岃?/p>
浠嬬粛
鍦ㄤ笉鐮村潖灝佽鎬х殑鍓嶆彁涓嬶紝鎹曡幏涓涓璞$殑鍐呴儴鐘舵侊紝騫跺湪璇ュ璞′箣澶栦繚瀛樿繖涓姸鎬併傝繖鏍蜂互鍚庡氨鍙皢璇ュ
浠嬬粛
瀹氫箟瀵硅薄闂寸殑涓縐嶄竴瀵瑰鐨勪緷璧栧叧緋?浠ヤ究褰撲竴涓璞$殑鐘舵佸彂鐢熸敼鍙樻椂,鎵鏈変緷璧栦簬瀹冪殑瀵硅薄閮藉緱鍒伴氱煡騫?/p>
浠嬬粛
鍏佽涓涓璞″湪鍏跺唴閮ㄧ姸鎬佹敼鍙樻椂鏀瑰彉瀹冪殑琛屼負銆傚璞$湅璧鋒潵浼間箮淇敼浜嗗畠鎵灞炵殑綾匯?/p>
浠嬬粛
瀹氫箟涓緋誨垪鐨勭畻娉曪紝鎶婂畠浠竴涓釜灝佽璧鋒潵錛屽茍涓斾嬌瀹冧滑鍙浉浜掓浛鎹€傛湰妯″紡浣垮緱綆楁硶鐨勫彉鍖栧彲鐙珛浜庝嬌鐢?/p>
浠嬬粛
瀹氫箟涓涓搷浣滀腑鐨勭畻娉曠殑楠ㄦ灦錛岃屽皢涓浜涙楠ゅ歡榪熷埌瀛愮被涓俆emplate Method浣垮緱瀛愮被鍙互涓嶆敼鍙樹竴涓畻
浠嬬粛
琛ㄧず涓涓綔鐢ㄤ簬鏌愬璞$粨鏋勪腑鐨勫悇鍏冪礌鐨勬搷浣溿傚畠浣夸綘鍙互鍦ㄤ笉鏀瑰彉鍚勫厓绱犵殑綾葷殑鍓嶆彁涓嬪畾涔変綔鐢ㄤ簬榪欎簺鍏?/p>
澶氫釜灞炴ч棿鐨勮仈緋繪瘮鏁g偣鍥捐娓呮櫚銆傛瘮濡傚彲浠ユ竻妤氱湅鍑烘潵Cylinder澶氱殑杞︼紝MPG鐩稿灝忥紝浣嗘槸椹姏澶э紱Cylinder灝忕殑杞︼紝MPG鐩稿澶э紝浣嗘槸椹姏 灝忋傚湪騫寵鍧愭爣閲岋紝鎴戜滑榪樺彲浠ユ柟渚跨殑榪涜浜や簰寮忓垹閫夋暟鎹紝鏂逛究瑙傚療錛屾瘮濡備笅闈㈢殑鍥撅紝鎴戜滑鍙互鐪嬩竴涓嬶紝Cylinders澶氾紝MPG灝忥紝椹姏澶х殑杞︾殑鍏朵粬灞炴ф庝箞鏍楓?img alt="" src="https://lh4.googleusercontent.com/eM4jWPIOVrpMJf8Ccvx88DpJdPD4J69A1SpX187e7HKWcPnWykQjidEWV3cWpk-iRFo3gDP7KbyzLNCXvmchEAnuka5DsEQFaTaQXH_Rxug99cvJEA" width="578" />
褰撴暟鎹繃澶氱殑鏃跺欙紝騫寵鍧愭爣緋婚噷鐨勭嚎灝變細寰堝錛屾暟鎹棿鐨勮仈緋誨氨鐪嬩笉娓呮浜嗭紝灝卞儚涓嬮潰鐨勫乏鍥俱備竴縐嶈В鍐蟲柟娉曟槸鎶婄嚎鐢繪垚鍗婇忔槑錛岃繖鏍蜂富瑕佺殑綰跨殑瓚嬪娍灝變細闅忕潃綰跨殑鏁扮洰鐨勫鍔犺屾竻鏅幫紝鍍忎笅闈㈢殑鍙沖浘銆?銆戙傚綋鏁版嵁寰堝ぇ鐨勬椂鍊欙紝涓昏鐨勮秼鍔跨殑鍒嗘瀽閫氬父鏄暟鎹殑鍒嗘瀽鐨勭涓姝ャ?
銆?銆?Chad Jones, et al. An Integrated Exploration Approach to Visualizing Multivariate Particle Data. Computing in Science & Engineering, Volume 10, Number 4, July/August, 2008, pp. 20-29
]]>
浜庢槸錛屼綔涓簊tyc絎斾笅鐨?quot;a notorious martyr of acm/icpc"錛屾蹇墊垜鐨?嬈egional銆?
1) Shanghai 2004
涓婃潵灝卞叏鍦虹涓涓猄ubmit浜咰 - The Counting Problem錛屾病鏈夌湅鏁版嵁瑙勬ā灝辨毚鍔涗簡涓涓嬶紝娌℃湁浠諱綍鎮康鐨凾LE鎺変簡錛岀劧鍚庡紑濮嬫悶H - Tian Ji - The Horse
Racing錛岀湅浜嗕竴鐪奸鐩氨璇存槸鏈澶у尮閰嶏紝寮濮嬫媿鍖歸厤錛屽張娌$畻澶嶆潅搴︼紝鍖歸厤鍖瑰畬涔嬪悗鍙戠幇鍙圱LE浜嗏︹︽渶鎼炵瑧鐨勪簨鎯呮槸鎴戝綋鏃惰繕鍐欎簡涓狧opcraft-Karp鍖歸厤鈥︹﹀悗鏉ュ彂鐜拌鍙互鏈浼樺尮閰?..褰撶劧錛屼篃TLE浜嗏︹?
鏈鍚庢垜鍦ㄦ瘮璧涘満涓婂嚑涔庡氨鏄棤鎵浜嬩簨錛屽嚟鐫鎴戜滑闃熼暱jwise鐨勭鍕囧彂鎸ュ湪鏈鍚庝竴涓皬鏃墮《浣忓叏鍦篘澶氭皵鐞冧絾鏄垜浠病鏈夋皵鐞冪殑鍘嬪姏錛屾妸閭d袱涓鐩繃浜?.鏈鍚庝竴鍒嗛挓鎴戝ソ鍍忔槸鍦ㄨ椽蹇僇 - Jamie's Contact Group錛屽悗鏉ユ墠鐭ラ亾閭d釜棰樼洰鏄釜緗戠粶嫻併?
絎竴嬈℃瘮璧涙繪槸寰堥毦蹇橈紝涓嶈繃鐜板湪鍥炴兂璧鋒潵闄や簡鍙嶅簲鍑烘潵鑷繁寮變篃娌′粈涔堝叾浠栧彲浠ヨ鐨勩?
2) Beijing 2005
涓涓殤鍋囧湪POJ涓婂壊浜?00+棰樼洰涔嬪悗鍙戠幇寰堝棰樼洰濂藉儚鍙互鍐欎竴鍐欎簡錛岃繖灝辨湁浜嗚嚜宸辯殑Beijing Regional涔嬭銆傛垜濡傛灉娌℃湁璁伴敊榪欏満姣旇禌鏄疉CRush絎竴嬈″嚭閬揳cm/icpc錛屽紑鍦?鍒嗛挓ACRush榪囨帀浜咵 鈥?Holiday
Hotel錛屽叏鍦洪渿鎯婏紝鍚庢潵澶у鍙戠幇榪欐槸涓涓彍棰樼悍綰稟C錛屾垜濂藉儚鏄湪10鍒嗛挓榪樻槸15鍒嗛挓榪囨帀浜嗚繖涓鐩傚湪榪欎釜鏃跺橝CRush榪囨帀浜咷 鈥?Desert
King錛?5鍒嗛挓錛岃繃浜?涓紝澶у灝辯悍綰瘋寰桮涔熸槸涓彍棰橈紝鐒跺悗寮濮嬬湅G錛屾垜涔熶笉渚嬪鈥︹︿笉榪囩湅鐫鐪嬬潃鎴戝厛浠ヤ負G鍙互璐績錛屽悗鏉ユ兂浜嗘兂錛堟垜涓嶈寰楁湁娌℃湁浜ょ▼搴忛獙璇佷簡錛夛紝鍙嶆榪囦笉鎺夛紝鍚庢潵紿佺劧鎯寵搗鏉ヨ繖涓鐩ソ鍍忓湪SRbGa鐨勯粦涔︿笂鏈夊啓綾諱技鐨勨︹︽墍浠ユ嬁鍑洪粦涔︼紝鎵懼埌鈥滄渶浼樻瘮鐜囩敓鎴愭爲鈥?
錛岀幇鍦哄綆楁硶錛岀幇鍦鴻繃鎺変簡鈥︹﹀ソ鍍忛偅涓鐩繕鏈変竴鐐圭偣鍗″父鏁板洜瀛愶紝鍥犱負鏄瀵嗗浘鎵浠ruskal榪囦笉鎺夛紝濂藉儚鐒﹀摜褰撴椂鏄鍗″湪浜嗚繖閲屻?
榪囦簡涓や釜棰樼洰涔嬪悗闃熷弸鍙戠幇浜咥 鈥?Angle and Squares鏄釜寮遍錛屽啓浜嗕竴涓嬭繃浜嗭紝涓棿濂藉儚榪樹互涓哄繕璁頒簡sin鍜宑os鏄姬搴﹀埗鐨勮皟浜嗗緢涔呪︹︾劧鍚庡氨鏄瘮杈冮『鍒╃殑鐢ㄥ尮閰嶈繃鎺変簡C 鈥?Purifying Machine錛屽綋鏃?棰樼殑鏃跺欒嚜宸辯湡鐨勪互涓哄揩瑕佸嚭綰夸簡錛屽洜涓哄ソ鍍忚繕鏈変袱涓皬鏃躲?
鐒跺悗灝辨槸鐥涜嫤鐨?涓皬鏃朵簡錛屽厛鏄湅鍒頒簡鎴戣寰楁渶鏈夊笇鏈涜繃鐨凞 鈥?Finding Treasure錛屾槑鏄懼氨鏄竴涓珮鏂秷鍏冨槢錛屼絾鏄庝箞閮借繃涓嶅幓鈥︹︽庝箞鍐欎篃榪囦笉鍘伙紝铏界劧鍚庢潵鎴戠煡閬撴洿綆鍗曠殑鍋氭硶鏄殢鏈轟唬鐐癸紝浣嗘槸楂樻柉娑堝厓涔熸槸鍙繃鐨勨︹︿絾鏄垜灝辨槸榪囦笉鍘燴︹ 鈥?Get Luffy
Out鏄釜2SAT錛屼絾鏄垜涓嶆噦2SAT鈥︹︽墍浠ョ湅鐫闃熷弸鐪肩潄鐫佺殑璐績浜嗗緢涔咃紝寰堜箙寰堜箙鈥︹﹀悗鏉ヤ紶闂昏榪欎釜棰樼洰鏁版嵁寮憋紝鎼滄悳涔熻繃浜嗏︹﹀叾浠栭鐩垜榪為鐩兘娌$湅鈥︹?
3) Hangzhou 2005
鍦˙eijing鎷夸簡涓涓冿紝瀹嬭佸笀褰撴椂榪樺鎴戜滑闃熷瘎浜堝帤鏈涜浜夊彇鍦ㄦ澀宸炲嚭綰匡紝鎴戜篃鐪熶互涓烘垜浠兘鍦嗕釜Final姊︼紝寰堝紑蹇冪殑鍘諱簡鏉窞錛岃繖嬈℃瘮璧汬QM錛孼Y錛孻SY濂藉儚鏄竴闃燂紝騫朵笖寰堥『鍒╃殑浠栦滑鍒囨帀浜咥CRush鈥︹?
涓婃潵寰堥『鍒╃殑鍒囦簡A 鈥?Auction錛岀劧鍚庣湅鍒癇 鈥?Bridge鍙戠幇涓嶄細閭d釜縐垎錛岀湅鍒癈 -
Cell鎴戜竴涓嬪氨寮蹇冧簡錛岃鎴慘AO榪欎笉鏄釜LCA涔堬紝鎷垮嚭渚嬬▼寮濮嬫暡錛屾暡瀹屽彂鐜癛E浜嗭紝欏挎椂FT錛屼互涓烘暟緇勫紑灝忎簡鏁版嵁涓嶅悎娉曪紝鎵浠ユ祴璇曚簡寰堜箙寰堜箙寰堜箙鈥︹︾敋鑷沖埌鏈鍚庤嚜宸卞紑濮嬪啓浜嗕竴涓祴璇曟満寮濮嬬敓鎴愭暟鎹紝鍦ㄨ嚜宸辨満鍣ㄤ笂嫻嬭瘯鍙戠幇涔烺E浜嗏︹﹂偅涓椂鍊欐兂鍒板師鏉ユ槸stack
overflow鈥︽垜灝遍棶闃熷弸浼氫笉浼氭妸閫掑綊鏀歸潪閫掑綊錛屽緱鍒扮殑絳旀鏄笉浼氣︹﹀綋鏃舵垜灝辯煡閬撹繖涓鐩紝瀹屽叏鐭ラ亾闂鍦ㄥ摢閲岋紝鐭ラ亾璇ユ庝箞鍋氾紝浣嗘槸涓嶅彲鑳借繃浜嗏︹﹀綋鐒朵簡錛屽悗鏉ユ垜鐭ラ亾閭d釜棰樼洰瀵瑰簲浜庣櫧鑹叉嫭鍙峰畾鐞嗭紝鍙互鐩存帴DFS鈥︹︿絾鏄繕鏄鍐欓潪閫掑綊鐨凞FS錛屾垜榪樻槸榪囦笉鎺夛紝鎵浠ユ鍦ㄤ簡DFS涓娿?
B鍙戠幇涓嶅彲鍋氫箣鍚庢垜寮濮嬬炕鎵嬪ご鐨勫ぇ瀛︽暟瀛︿功錛屽湪澶у鏁板涔︿笂鎵懼埌浜嗕竴涓被浼肩殑寮忓瓙錛屾妸閭d釜鎶涚墿綰塊暱搴︾Н鍒嗙Н鍑烘潵浜嗭紝璁板緱褰撴椂鐨刯udge榪樻湁鐐瑰崱甯告暟錛屼笉榪囧垢濂斤紝B 鈥?Bridge榪囦簡銆傚綋鏃剁殑鎯呭喌鎴戣寰楁垜鐨勫垽鏂槸鍑?鍙互鍑虹嚎錛屾墍浠ュ彧鑳芥嫾棰樻暟浜嗭紝鎶奍 鈥?
Instructions涓㈢粰what20錛寃hat20鐪嬩簡鐪嬪憡璇夋垜鏄椽蹇冿紝浠栬偗瀹氳兘榪囷紝鎴戝氨娌$浜嗭紝鍚庢潵鍙戠幇鎬庝箞鍐欎篃涓嶈繃鎬庝箞鍐欎篃涓嶈繃錛屽埌鏈鍚庢瘮璧涜繕鏈?0鍒嗛挓緇撴潫鎴戠湅浜嗕竴涓嬮鐩垜璇碖AO榪欎笉鏄釜鏈鐭礬涔堬紝鍒犳帀浠栫殑鏀鐮寸鐨勭▼搴忓紑濮嬮噸鍐欌︹︿絾鏄潵涓嶅強浜嗏︹﹀湪鏈鍚庢瘮璧涚粨鏉熺殑鏃跺欙紝鎴戠殑紼嬪簭濂?
鍍忓垰鍒氬啓鍑轟簡鍙互compile鐨勯洀褰紝but that鈥檚 definitely too late.
璇磋G 鈥?Generator錛岃繖涓鐩槸鍏蜂綋鏁板涓婄殑鍘熼錛屾垜鐨勯槦鍙嬬寽鍑轟簡涓涓叕寮忥紝鎴戝彛綆椾簡涓涓嬭濂藉儚鍜岀瓟妗堝樊鐨勮繙鈥︹︽牴鏈病璇曗︹?棰橈紝緇撴潫浜嗘澀宸炰箣琛岋紝榪為摐鐗岄兘娌℃湁銆?
璧涘悗Savior璺熸垜璇寸殑涓鍙ヨ瘽錛屾垜鍒頒粖澶╅兘璁板緱銆傚洜涓烘垜浠湪鍖椾含鐨勫悕嬈¤涓嶅畾浣犺榪愭皵濂借繕鑳藉嚭綰匡紝鎵浠avior璇達細鈥淔inal瑙佸暒鈥︹︹?榪欎竴鍙ヨ瘽鎴愪負鎴戞案榪滅殑浼わ紝鏃犻檺閫艱繎浣嗘槸姘歌繙榪涗笉鍘燴︹﹀悗鏉ワ紝鎴戜滑榪樼‘瀹炴墡鎵庡疄瀹炵殑涓轟簡浠嶣eijing鎷垮悕棰濆嚭綰垮仛浜嗕竴鐣簤鍙栵紝Beijing涓寮濮嬬粰浜嗛潪甯?
灝戠殑鍚嶉錛屾垜灝辨兂鍘諱簤鍙栬繖涓悕棰濓紝鍙戜俊緇欐潕鏂囨柊鑰佸笀鍜岄粍閲戠唺錛屽寳澶х殑鏉庢枃鏂拌佸笀榪樹負
鎴戜滑浜夊彇鍚嶉錛屾渶鍚庡府鎴戜滑鎺掑悕鍓嶉潰涓浣嶇殑USTC浜夊彇鍒頒簡錛屾垜浠病鏈夆︹﹁繕璁板緱褰撴椂USTC鍦≒OJ鐨凚BS涓婅璋㈣阿鏉庤佸笀錛屾潕鑰佸笀璇翠笉鐢ㄥ啓鎴戯紝瑕佽阿璋kki鈥︹﹀搸錛岃櫧鐒剁湅鍒癠STC鐨勫厔寮熷嚭綰夸篃涓嶉敊錛屼絾鏄ソ姝規槸涓轟粬浜哄仛浜嗕釜瀚佽。瑁斥︹?
4) Beijing 2006
2006騫達紝鎴戝噯澶囧嚭鍥戒簡錛屽湪鍑嗗GRE鍜孏RE SUB鈥︹︽墍浠ユ垜鍏跺疄鍩烘湰娌″仛浠涔堝噯澶囷紝浣嗘槸榪欐緇勫埌浜咼iangYY鍚屽鍜孎reeDian鍚屽錛屽綋鏃舵垜鎰熻榪欐槸鍗楀ぇ榪戝嚑騫磋兘緇勫嚭鐨勬渶寮洪槦浜嗭紝鎵浠ュFinal涔熷厖婊′簡緹庡ソ鐨刌Y銆?
榪樿寰桱iangYY鍚屽璺熸垜璇達細鈥滄嬁閲戠墝鍜屽嚭綰垮摢涓剰涔夋洿澶э紝鎴戜滑鏄劇劧瑕佸嚭綰庫︹︹濆ソ鍚э紝閭e氨鍑虹嚎鍚э紝娓呭崕鐨勬瘮璧涳紝璧涘墠閭d竴澶╂櫄涓婃湵娉藉洯鍚屽璺戞潵鍛婅瘔鎴戜滑璇存槑澶╀綘浠笉瑕佺揣寮狅紝鎴戜滑璧涘墠璇曢榪欏棰樼洰寰堢畝鍗曪紝浣犱滑鐨勫疄鍔涘簲璇ヨ兘鍋氬嚭7棰樷︹︽垜鍦ㄨ繖涓椂鍊欏紑鐜╃瑧璺烰iangYY璇達紝濡傛灉鏄庡ぉ
鑰冨鉤闈㈠浘鏈澶ф祦浣犱細鍋氫笉錛孞YY璇村綋鐒舵噦錛屾垜鍏ㄦ噦錛屼笉灝辨槸Dijkstra涔堚︹︽垜璇翠綘浼氬仛灝卞ソ錛屽弽姝f垜鏄笉鎳傗︹?
姣旇禌鐨勬椂鍊橣reeDian鍏堝憡璇夋垜E 鈥?Guess鏄椽蹇冿紝榪呴熺殑榪囦簡E錛屽綋鏃剁殑閫熷害濂藉儚宸竴鐐瑰氨鏄叏鍦虹涓涓繃E鐨勶紝鐒跺悗鍙戠幇H 鈥?
Ruler鏄庢樉鍙仛錛屼絾鏄垜涓嶇煡閬撴庝箞鍋氾紝褰撴椂鍏堢寽浜嗕竴涓寽鎯籌紝鍙戠幇鐚滄兂涓嶅錛屽悗鏉ユ悳錛屽彂鐜伴偅涓暟鎹妯℃悳鑲畾瓚呮椂浜嗭紝鎵浠ユ垜灝遍棶JiangYY 鍚屽鎬庝箞鍋氾紝鎴戣鈥淛iangYY浣犱笉鏄繕鍐欒繃濡備綍鎼滅儲鐨勬枃绔犱箞鈥︹︿綘鎼滀竴涓傗滼iangYY鍚屽璇存瘺鈥︹︽垜鎼滀笉鍑衡︹﹀悗鏉ュ疄鍦ㄦ病鍔炴硶浜嗭紝鎴戝紑濮嬪姞闅忔満
鍖栫殑鍓灊鍜屼竴浜涘皬鐨勪紭鍖栵紝騫朵笖鎷夸竴涓毚鍔涚殑鎼滅儲鍜岄偅涓殢鏈哄寲鐨勪紭鍖栧湪涓嶅仠鐨勫鎷嶏紝絳夊埌瀵規媿閭d釜浼樺寲鍚庣増鏈兘鍏ㄨ繃浜嗭紝鎴戝氨浜ゃ?
涓轟簡榪欎釜棰樼洰鎴戝啓浜哊涓椽蹇冪増 + 涓涓毚鍔涚増 + N涓敼榪涗紭鍖栫増 + 鏁版嵁鐢熸垚瀵規媿鍣紝褰撴垜榪囦簡涔嬪悗鎴戝叴濂嬩笉宸詫紝浣嗘槸緇嗙粏涓鐪嬶紝鍜︼紝鎴戝ソ鍍忎氦閿欑▼搴忔妸閭d釜鏆村姏鐗堜氦涓婂幓浜嗭紝鎴慘AO錛屽師鏉ヨ繖涓鐩暟鎹急錛屾毚鍔涙悳绱㈠氨鑳借繃鈥︹﹀綋鏃惰鏉浜虹殑蹇冮兘鏈変簡銆?
宸偣蹇樹簡鏈姣旇禌鏈鎴忓墽鎬х殑鍦烘櫙浜嗭紝JiangYY鍚屽緲婚鐩紝緲諱簡涓涓嬪憡璇夋垜璇粹滄槉鍝ワ紝鐪熺殑鍑哄鉤闈㈠浘鏈澶ф祦浜嗐傗濇垜璇撮偅濂藉晩錛屼綘涓嶆槸浼氬仛涔堚︹iangYY鍚屽璇達細鈥滀細涓瘺錛屾垜灝辯煡閬揇ijkstra錛屼笉鐭ラ亾鎬庝箞Dijkstra銆傗濇垜KAO褰撴椂鎴戝湪鍦轟笂蹇冮兘鍑変簡錛岀劧鍚嶻Y鍚屽灝卞湪涓嶅仠鐨勫緩妯℃庝箞Dijks
tra鈥︹︿竴浼氬憡璇夋垜瑕佷笁嬈★紝涓浼氬憡璇夋垜瑕?嬈★紝涓浼氬憡璇夋垜瑕?2嬈ijkstra鈥︹﹁繖灝辨槸B 鈥?Animal Run鐨勬偛鎯ㄩ伃閬囥?
鍚庢潵YY鍚屽錛岃嚜縐頒負榪囦簡USACO鎵鏈塆old Contest鍥捐棰橈紝鍥捐灝忕帇瀛愮殑YY鍚屽錛屽紑濮嬫悶G 鈥?What a Special
Graph錛岀劧鍚庝竴浼氬憡璇夋垜瑕佹敹緙╀竴涓嬭姳鍋欴FS鍟ョ殑鈥︹﹀悗鏉ユ垜璇翠笉瀵光﹀垢濂芥垜娌¤榪鋒儜浣忓紑濮嬫暡G鈥︹﹁禌鍚庡拰Bamboo鐨勪竴鍙ヨ瘽錛孊amboo 璇達細鈥滄垜浠垽鏂竴涓槦錛屾湁娌℃湁鍓嶉旓紝灝辨槸鐪嬩粬鍦ㄤ笉鍦ㄦ悶G錛屽鏋滃湪鎼烇紝灝辨病鍓嶉斾簡鈥︹︹滸鏄釜璁烘枃棰橈紝涓嶅彲鍋氱殑鈥﹀綋鐒朵簡錛岃繖濂楅鐩垜褰撴椂鍦ㄨ禌鍦轟笂濂藉儚鏄?
閮界湅浜嗙殑錛孉 鈥?Robot鏈夌偣鎯蟲硶浣嗘槸涓嶄細錛孖 鈥?A Funny Stone Game澶儚DP浜嗭紝浣嗘槸涔熶笉浼氣︹﹂兘涓嶄細@_@
2棰橈紝鍐嶄竴嬈$粨鏉熶簡錛岀粨鏉熶簡鎴戞湰縐戠敓娑殑acm/icpc銆?
5) Seoul 2007
闃村樊闃抽敊鐨勬潵鍒頒簡HKUST涔嬪悗錛屽彲浠ュ嚭鍥芥瘮璧涳紝Seoul鍜孌anang涔熸垚涓轟簡浜虹敓acm/icpc鐨勭粷鍝嶏紝鏈鍚庣殑涓や釜絎洓涔熻鎴戞案榪滃Final璇翠簡澹板啀瑙併傚叾瀹濻eoul鐨勫け璐ワ紝鍙互璇存鍦ㄦ垜鐨勬墜涓婏紝B 鈥?
Editor鏄竴涓潪甯稿急鐨勬渶闀垮叕鍏卞瓙涓茬殑棰樼洰錛屼覆闀垮皬浜?000錛屾槑鏄綝P鍢涳紝涓嶇煡閬撴垜褰撴椂澶ц剳涓轟粈涔堟娊絳嬩簡錛屽紑濮嬪啓Suffix Array錛岃屼笖榪樻槸鍐欑殑鏄嚎鎬ф椂闂寸殑Suffix
Array錛屽啓瀹屼箣鍚庡彂鐜拌嚜宸卞緢涔呮病鍐欏悗緙鏁扮粍浜嗭紝榪囦笉鍘諱簡錛岃皟涓嶈繃鏍蜂緥錛岃繖涓椂鍊欑粏緇嗕竴鎯蟲墠鎶夿鐢ㄨ繎涔庢毚鍔涚殑鏂瑰紡榪囦簡鈥︹﹁繖涓椂鍊欏湪鏃墮棿涓婃垜浠凡緇忔氮璐瑰皢榪戜竴涓皬鏃朵簡錛屽悗鏉ュ彂鐜板鏋滄垜浠妸榪欎竴涓皬鏃惰妭綰﹀湪緗氭椂涓婏紝姣忎釜棰樼洰閮藉皯浜嗕笉灝戠殑鏃墮棿錛屾垜浠簲璇ュ氨絎笁鍚嶅嚭綰夸簡鈥︹︾涓夊悕
涔熸槸7棰橈紝緗氭椂姣旀垜浠ソ涓鐐癸紝姣旀垜浠皯浜?23鍒嗛挓鐨勭綒鏃訛紝濡傛灉鎴戜滑榪欓亾棰樼洰娌℃湁鎸夌収鎴慪Y鐨勬柟寮忓仛錛屽氨鈥︹﹀簲璇ユ槸絎笁浜嗗惂錛?
褰撶劧錛岀幇瀹炴病鏈夊鏋滐紝鑰屼笖鎴戦偅涓や釜闃熷弸褰撴椂榪橀棶鎴戣鏄笉鏄彲浠P鐨勬牱瀛愶紝鎴戠洿鎺ユ柀閽夋埅閾佺殑璇粹滀笉鍙互錛佲濆茍涓斿憡璇変粬浠繖涓槸鍚庣紑鏁扮粍緇忓吀棰橈紝浠栦滑鍚畬灝變笉璇磋瘽寮濮嬩換鎴慪Y鐨勫啓浜嗏︹?
鎴戠姱鐨勭浜屽畻緗氨鏄偅涓狪 鈥?Turtle Graphics錛屽綋鏃舵垜榪囧畬涓閬嶉鐩湅鍒癐 鈥?Turtle
Graphics涔嬪悗鎴戦】鏃跺氨鎯沖埌浜咰ERC榪樻槸NEERC涓閬撲篃鏄繖縐嶈蛋姘村鉤绔栫洿鏂瑰悜涔辨悶鐨勯鐩紝閭d釜棰樼洰鎴戝ソ鍍忎笉浼氾紝欏挎椂蹇冪悊闃村獎浜х敓浜嗭紝褰撻槦鍙嬮棶鎴戣繖涓鐩彲鍋氬惁錛屾垜鐩存帴涓鍙ヨ瘽鈥滆繖涓鐩垜浠ュ墠濂藉儚鐪嬭繃錛屼笉浼氬仛錛屼綘浠埆鐪嬩簡鈥︹︹濅粠濮嬭嚦緇堬紝閭i亾I灝辨病鏈夎鎴戜滑紕拌繃鈥︹﹀悗鏉ュ彂鐜版槸涓急
棰樸?
浜鴻錛岃嚜浣滃錛屼笉鍙椿銆?
6) Danang 2007
鍏跺疄Danang璧涘尯鎴戝鑷繁鐨勮〃鐜頒篃榪樻槸婊℃剰鐨勪簡錛屼富瑕佹槸棰樼洰澶猂P錛屽悓鏍風殑C 鈥?Prime k-tuple錛屾煇闃烳iller-Rabin灝辮兘榪囷紝鎴慚iller-Rabin灝盩LE錛孌 鈥?The longest constant
game錛岃繖嬈$‘紜疄瀹炴槸瑕佷笂鍚庣紑鏁扮粍浜嗭紝寰堝彲鎯滄垜鍙甫浜哋(nlogn)鐗堟湰鐨勶紝鍙戠幇灞呯劧鍗¤繖涓猯ogn鐨勫父鏁幫紝鍚庢潵瀹炲湪娌″姙娉曚貢鎼炰簡O(n) 鐨勫悗緙鏁扮粍鎵嶈繃錛孍 鈥?Lazy Susan錛岃繖涓鐩垜鍜孧ath Guy鐜板満鎺ㄤ簡濂戒箙鐨勮寰嬶紝鏈鍚庢悶鍑烘潵鐨勬椂鍊欑湡鐨勬槸闈炲父鍏村錛孞 鈥揝pace
Beacon錛岃繖涓鐩槸鎴戞渶鎬曞啓鐨勯鐩紝闄堢悰鏁簬涓婃墜錛屽茍涓斿湪鏈鍚嶹A鐨勬椂鍊欐垜緇欎粬鐜板満鍐欐暟鎹敓鎴愬櫒鏆村姏瀵規媿錛屽湪鏈鍚?鍒嗛挓鐨勬椂鍊欒繃鎺夎繖涓鐩紝PH鐨勪竴澹板拞鍝甕es錛屽叏鍦轟負鎴戜滑鐨勯紦鎺屸︹﹁櫧鐒舵渶鍚庣敱浜庣縐嶅師鍥犺寮傜殑琚玆ejudge浜嗕竴涓鐩帓鍚嶆帀鍒頒簡絎洓錛屼絾鏄涓嬈★紝璁╂垜鎰熻鍦ㄨ禌鍦?
涓婁技涔庢病鏈夐仐鎲俱傚湪4灝忔椂灝佹澘鐨勬椂鍊欐垜涔熺涓嬈$湅鍒頒簡Hong Kong University of Science and Technology灞呯劧绔欏湪褰撴椂鐨勭涓浣嶄笂錛岀Final鐨勬ⅵ錛屽綋鏃惰鎴戞劅瑙夋槸榪欎箞榪戙?
榪欎箞澶氭錛屽叾瀹炲悎浣滄渶鎰夊揩鐨勮繕鏄湪HKUST錛屽敖綆¢槦鍛樼殑瀹炲姏涓嶆槸鐗瑰埆寮猴紝浣嗘槸浠栦滑鑲厤鍚堟垜鑲負鎴戝仛浜嬫儏鎯抽鐩紝涓鐩村潥鎸佷笉鏀懼純鐨勭簿紲炴垜涔熶竴鐩村彲浠ョ湅鍒扳︹︾湡鐨勫緢甯屾湜鑳藉拰浠栦滑涓璧風珯鍦‵inal鐨勮禌鍦轟笂銆?
鍙槸鍙儨錛岃繖涓鍒囬兘宸茬粡鏄技姘存祦騫淬?/p>
EM綆楁硶鍙敤浜庡緢澶氶棶棰樼殑妗嗘灦錛屽叾涓渶瑕佷及璁′竴緇勬弿榪版鐜囧垎甯冪殑鍙傛暟錛屽彧緇欏畾浜嗙敱姝や駭鐢熺殑鍏ㄩ儴鏁版嵁涓兘瑙傚療鍒扮殑涓閮ㄥ垎錛?/p>
EM綆楁硶鏄竴縐嶈凱浠g畻娉曪紝瀹冪敱鍩烘湰鐨勪袱涓楠ょ粍鎴愶細
E step錛氫及璁℃湡鏈涙楠?/p>
浣跨敤瀵歸殣鍙橀噺鐨勭幇鏈変及璁℃潵璁$畻log鏋佸ぇ浼肩劧
M step: 鏈澶у寲鏈熸湜姝ラ
璁$畻涓涓闅愬彉閲忔洿濂界殑浼拌錛屼嬌鍏舵渶澶у寲log浼肩劧鍑芥暟瀵歸殣鍙橀噺Y鐨勬湡鏈涖傜敤鏂拌綆楃殑闅愬彉閲忓弬鏁頒唬鏇夸箣鍓嶇殑瀵歸殣鍙橀噺鐨勪及璁★紝榪涜涓嬩竴姝ョ殑榪唬錛?/p>
瑙傛祴鏁版嵁錛氳嫻嬪埌鐨勯殢鏈哄彉閲廥鐨処ID鏍鋒湰錛?/p>
緙哄け鏁版嵁錛氭湭瑙傛祴鍒扮殑闅愬惈鍙橀噺(闅愬彉閲?Y鐨勫鹼細
瀹屾暣鏁版嵁錛?鍖呭惈瑙傛祴鍒扮殑闅忔満鍙橀噺X鍜屾湭瑙傛祴鍒扮殑闅忔満鍙橀噺Y鐨勬暟鎹紝Z=(X,Y)
浼肩劧鍑芥暟錛?浼肩劧鍑芥暟鐨勫嚑縐嶅啓娉?
log浼肩劧鍑芥暟涓猴細
E step錛氱敤瀵歸殣鍙橀噺鐨勭幇鏈変及璁?img alt="\boldsymbol\theta^{(t)}" src="http://upload.wikimedia.org/math/c/d/5/cd50a7515b9fdfb7102bb2da1634f8cc.png" />璁$畻闅愬彉閲廦鐨勬湡鏈?/p>
鍏朵腑闇瑕佺敤鍒拌礉鍙舵柉鍏紡錛?/p>
M step錛氭渶澶у寲鏈熸湜錛岃幏寰楀闅愬彉閲忔洿濂界殑浼拌
緇村熀涓殑琛ㄨ堪鏄繖鏍峰瓙錛?/p>
Given a statistical model consisting of a set of observed data, a set of unobserved latent data or missing values Y, and a vector of unknown parameters
, along with a likelihood function
, the maximum likelihood estimate (MLE) of the unknown parameters is determined by the marginal likelihood of the observed data
However, this quantity is often intractable.
The EM algorithm seeks to find the MLE of the marginal likelihood by iteratively applying the following two steps:
Note that in typical models to which EM is applied:
However, it is possible to apply EM to other sorts of models.
The motivation is as follows. If we know the value of the parameters , we can usually find the value of the latent variables Y by maximizing the log-likelihood over all possible values of Y, either simply by iterating over Y or through an algorithm such as the Viterbi algorithm for hidden Markov models. Conversely, if we know the value of the latent variables Y, we can find an estimate of the parameters
fairly easily, typically by simply grouping the observed data points according to the value of the associated latent variable and averaging the values, or some function of the values, of the points in each group. This suggests an iterative algorithm, in the case where both
and Y are unknown:
The algorithm as just described will in fact work, and is commonly called hard EM. The K-means algorithm is an example of this class of algorithms.
However, we can do somewhat better by, rather than making a hard choice for Y given the current parameter values and averaging only over the set of data points associated with a particular value of Y, instead determining the probability of each possible value of Y for each data point, and then using the probabilities associated with a particular value of Y to compute a weighted average over the entire set of data points. The resulting algorithm is commonly called soft EM, and is the type of algorithm normally associated with EM. The counts used to compute these weighted averages are called soft counts (as opposed to the hard counts used in a hard-EM-type algorithm such as K-means). The probabilities computed for Y areposterior probabilities and are what is computed in the E-step. The soft counts used to compute new parameter values are what is computed in the M-step.
鎬葷粨錛?/p>
EM is frequently used for data clustering in machine learning and computer vision.
EM浼氭敹鏁涘埌灞閮ㄦ瀬鑷達紝浣嗕笉鑳戒繚璇佹敹鏁涘埌鍏ㄥ眬鏈浼樸?/p>
EM瀵瑰垵鍊兼瘮杈冩晱鎰燂紝閫氬父闇瑕佷竴涓ソ鐨勶紝蹇熺殑鍒濆鍖栬繃紼嬨?/p>
榪欐槸鎴戠殑Machine Learning璇劇▼錛屽厛鎬葷粨鍒拌繖閲岋紝 涓嬮潰鐨勫伐浣滄槸鍋氫竴涓狦M_EM鐨勬葷粨錛屽緇撮珮鏂瘑搴︿及璁★紒
Given a set of observations (x1, x2, 鈥? xn), where each observation is a d-dimensional real vector, k-means clustering aims to partition the n observations into k sets (k < n) S = {S1, S2, 鈥? Sk} so as to minimize the within-cluster sum of squares (WCSS):
where 渭i is the mean of points in Si.
Regarding computational complexity, the k-means clustering problem is:
Thus, a variety of heuristic algorithms are generally used.
鎵浠ユ敞鎰忓埌Algorithm鏄竴涓吀鍨嬬殑NP闂錛屾墍浠ラ氬父鎴戜滑瀵繪壘浣跨敤鐨勬槸鍚彂寮忔柟娉曘?/p>
The most common algorithm uses an iterative refinement technique.鏈甯哥敤鐨勪竴涓妧宸ф槸榪唬姹傜簿銆?/p>
Due to its ubiquity it is often called the k-means algorithm; it is also referred to as , particularly in the computer science community.
Given an initial set of k means m1(1),鈥?mk(1), which may be specified randomly or by some heuristic, the algorithm proceeds by alternating between two steps:[8]
The algorithm is deemed to have converged when the assignments no longer change.
鏁翠釜綆楁硶鐨勬祦紼嬪氨鏄涓婂浘鎵紺?/p>
As it is a heuristic algorithm, there is no guarantee that it will converge to the global optimum, and the result may depend on the initial clusters. As the algorithm is usually very fast, it is common to run it multiple times with different starting conditions. However, in the worst case, k-means can be very slow to converge: in particular it has been shown that there exist certain point sets, even in 2 dimensions, on whichk-means takes exponential time, that is 2惟(n), to converge[9][10]. These point sets do not seem to arise in practice: this is corroborated by the fact that the smoothed running time of k-means is polynomial[11].
鏈鍧忕殑鏃墮棿澶嶆潅搴︽槸O(2惟(n)),浣嗘槸鍦ㄥ疄璺典腑錛屼竴鑸〃鐜版槸涓涓欏瑰紡綆楁硶銆?/strong>
The "assignment" step is also referred to as expectation step, the "update step" as maximization step, making this algorithm a variant of the generalized expectation-maximization algorithm.
k-means clustering result for the Iris flower data set and actual species visualized using ELKI. Cluster means are marked using larger, semi-transparent symbols.
k-means clustering and EM clustering on an artificial dataset ("mouse"). The tendency of k-means to produce equi-sized clusters leads to bad results, while EM benefits from the Gaussian distribution present in the data set
The two key features of k-means which make it efficient are often regarded as its biggest drawbacks:
A key limitation of k-means is its cluster model. The concept is based on spherical clusters that are separable in a way so that the mean value converges towards the cluster center. The clusters are expected to be of similar size, so that the assignment to the nearest cluster center is the correct assignment. When for example applying k-means with a value of k = 3 onto the well-known Iris flower data set, the result often fails to separate the three Iris species contained in the data set. With k = 2, the two visible clusters (one containing two species) will be discovered, whereas withk = 3 one of the two clusters will be split into two even parts. In fact, k = 2 is more appropriate for this data set, despite the data set containing 3 classes. As with any other clustering algorithm, the k-means result relies on the data set to satisfy the assumptions made by the clustering algorithms. It works very well on some data sets, while failing miserably on others.
The result of k-means can also be seen as the Voronoi cells of the cluster means. Since data is split halfway between cluster means, this can lead to suboptimal splits as can be seen in the "mouse" example. The Gaussian models used by the Expectation-maximization algorithm (which can be seen as a generalization of k-means) are more flexible here by having both variances and covariances. The EM result is thus able to accommodate clusters of variable size much better than k-means as well as correlated clusters (not in this example).
榪欑瘒鏄蹇典粙緇嶇瘒錛屼互鍚庡嚭浠g爜鍜屼竴涓狵鍧囧間紭鍖栫殑璁烘枃
Fast Hierarchical Clustering Algorithm Using Locality-Sensitive Hashing
const int MAX_LEN = 128;
const int MAX_LINE = 20;
int main(int argc, char* argv[])
{
char str[MAX_LEN] = "1";
char tmp_str[MAX_LEN] = "";
char buf[MAX_LEN] = "";
printf("%s\n",str);
for (int line = 1;line <= MAX_LINE;++line)
{
strcpy(tmp_str,str);
str[0] = '\0';
for (int i=0;tmp_str[i] != 0;++i)
{
char ch = tmp_str[i];
int count = 1;
for (;tmp_str[i+1] == tmp_str[i];++i)
{
++count;
}
sprintf(buf,"%d%c",count,ch);
strcat(str,buf);
}
printf("%s\n",str);
}
return 0;
}
3錛?#160; 鍒嗗埆鎵嶈綰挎ц〃銆佷簩鍙夊鉤琛℃爲鍜屽搱甯岃〃瀛樺偍鏁版嵁錛岃鍒嗘瀽瀹冧滑鍚勬湁浠涔堜紭鍔o紵錛?0鍒嗭級
絎簩棰?綆楁硶涓庣▼搴忚璁★紙40鍒嗭級
1錛?#160; 鏈変竴涓查灝劇浉榪炵殑鐝犲瓙錛屾誨叡m棰楋紝姣忛鐝犲瓙閮芥湁鑷繁鐨勯鑹詫紝鍏ㄩ儴棰滆壊鎬誨叡鏈塶錛坣<=10錛夌銆傜幇鍦ㄨ鍦ㄩ噷闈㈡埅鍙栦竴孌碉紝瑕佹眰鍖呭惈鎵鏈変笉鍚岀殑棰滆壊錛屽茍涓旈暱搴﹁秺鐭秺濂姐傛眰濡備綍鎴彇銆?
璇瘋緇嗘弿榪頒綘鐨勭畻娉曟濊礬錛堝闇瑕侊紝鍙粰鍑轟吉浠g爜鏉ヨ緟鍔╂弿榪幫級錛屽茍鍒嗘瀽鍏舵椂闂村鏉傚害鍜岀┖闂村鏉傚害銆傦紙20鍒嗭級
2錛?#160; 璁捐涓涓猻trnumcmp鍑芥暟錛屽姣旀櫘閫氱殑strcmp鍑芥暟錛屽樊鍒湪浜庯紝褰撳瓧絎︿覆涓亣鍒版暟瀛楁椂錛屼互鏁板瓧澶у皬涓哄噯銆傚浜庡彧鏈夊叾涓竴涓瓧絎︿覆涓烘暟瀛楃殑鎯呭喌錛屼粛鐒舵部鐢ㄥ師鏉ョ殑strcmp鏂瑰紡銆?錛?0鍒嗭級
涓句緥璇?
strnumcmp鐨勫垽瀹氱粨鏋滐細鈥漚bc鈥?lt;鈥漚bc#鈥?lt;鈥漚bc1鈥?lt;鈥漚bc2鈥?lt;鈥漚bc10鈥?lt;鈥漚bcd鈥?
涓鑸殑strcmp鐨勫垽瀹氱粨鏋滐細鈥漚bc鈥?lt;鈥漚bc#鈥?lt;鈥漚bc1鈥?lt;鈥漚bc10鈥?lt;鈥漚bc2鈥?lt;鈥漚bcd鈥?
瑕佹眰錛氳緇欏嚭瀹屾暣浠g爜錛屽湪杈懼埌鐩爣鐨勬儏鍐典笅灝介噺楂樻晥錛岀畝媧併?
絎笁棰?緋葷粺璁捐棰橈紙30鍒嗭級
鍦ㄥぇ瑙勬ā鏁版嵁澶勭悊涓粡甯鎬細鐢ㄥ埌澶ц妯″瓧鍏搞傜幇闇瑕佸鐞嗕竴涓瘝鎼厤鐨勫瓧鍏搞傛潯浠朵負錛?
1錛?#160; 瀛楀吀涓瓨鍦ㄧ殑欏規槸涓や釜璇嶇殑鎼厤錛屼緥濡傦細瀛楀吀涓湁鈥滀粖澶┾濆拰鈥滄櫄涓娾濇槸涓や釜璇嶏紝閭d箞瀹冧滑緇勬垚鐨勬惌閰嶄負鈥滀粖澶﹟鏅氫笂鈥濆拰鈥滄櫄涓妡浠婂ぉ鈥?
2錛?#160; 璇嶇殑闆嗗悎寰堝ぇ錛岀害涓?0涓囬噺綰?
3錛?#160; 涓涓瘝騫朵笉浼氬拰鍏朵粬鎵鏈夎瘝鎼厤錛岄氬父鍙細鍜屼笉瓚呰繃1涓囦釜鍏朵粬姝ゆ惌閰?
4錛?#160; 瀵瑰瓧鍏哥殑浣跨敤璇繪搷浣滃緢澶э紝閫氬父姣忕鏈変笂鍗冩璇鋒眰錛屽嚑涔庢病鏈夊啓鍏ラ渶姹傘?
璇瘋璁′竴涓瓧鍏告湇鍔$郴緇燂紝褰撹姹傛槸涓や釜璇嶇殑鎼厤鏃訛紝鑳藉蹇熻繑鍥炴惌閰嶇殑鐩稿叧淇℃伅銆傝浣跨敤灝藉彲鑳藉皯鐨勮祫婧愶紝騫朵及綆楀嚭闇瑕佷嬌鐢ㄧ殑鏈哄櫒璧勬簮銆?/p>
n涓【瀹㈠湪榪涢厭搴椾箣鍓嶏紝閮戒細鎶婅嚜宸辯殑甯藉瓙緇欏墠鍙版湇鍔″憳淇濈銆傛瘡涓【瀹㈠湪紱誨紑鏃訛紝鍓嶅彴鏈嶅姟鍛樺張浼氶殢鏈哄湴鎸戦変竴涓附瀛愮粰浠栥傞棶錛氭渶緇堬紝鑳芥嬁鍒拌嚜宸卞附瀛愮殑欏懼浠湡鏈涙暟鏄灝?/p>
棣栧厛浠庣畝鍗曟儏鍐靛叆鎵嬶紝瀵逛簬n=2 n=3 寰堝鏄撴眰鍑?緇撴灉res=1錛?
瀵逛簬n>=4,鎴戜滑涓ユ牸鐨勭敤姒傜巼鏂規硶鏉ユ帹瀵間竴涓嬶紒
棣栧厛瀹氫箟P(n)涓轟集鍔埄鏀鵑敊淇$殑闂鐨勭瓟妗堛?
P_n=n!\sum_{i=2}^{n}\frac{(-1)^i}{i!}
鐒跺悗瀵逛簬n涓漢涓璱涓漢鍖歸厤姝g‘榪欎釜浜嬩歡鐨勬暟鐩槸C(n,i)P(i)
鎬誨叡鏈塶錛佷腑浜嬩歡錛?^n縐嶆儏鍐碉紝錛堝彲浠ユ妸浜虹湅鎴愭槸10涓詫紝鎷垮埌鑷繁甯藉瓙鐨勪負1錛?
鎵浠?絳旀灝辨槸
錛坣-i錛?C(n,i)P(i) /n!姹傚拰
鏁寸悊涓涓嬫槸
\sum_{i=2}^{n-1}\frac{n-i}{(n-i)!}\sum_{j=2}^{i}\frac{(-1)^j}{j!}+\frac{1}{(n-1)!}
絎竴嬈¤
璁$畻鏈哄浘褰㈣〃紺虹殑闆嗕腑鏂規硶錛?/p>
閲囨牱鐨勬柟娉?鍍忕礌)鍜屽熀浜嶰bject based 鎴戜互鍓嶆病娉ㄦ剰浠栦滑鐨勫尯鍒紝浜嬪疄鐨勭‘鏄繖鏍峰瓙錛屽尯鍒氨鏄殢鐫鍥懼儚鐨勬斁澶э紝Object Based 涓嶄細澶辯湡
瀹冭繕鎬葷粨浜嗕竴縐嶆槸Functional 錛岃繖涓氨鏄垜浠紶璇寸殑鐭㈤噺鍥撅紝杞粨鏄疐unction錛岀劧鍚庡~鍏呬竴浜涚畝鍗曠殑棰滆壊錛?涓嬪浘鏄竴涓憲鍚嶇殑鍒嗗艦鍥俱傘?/p>
鍦ㄦ枃绔犵殑鏈鍚庯紝浣滆呮寚鍑轟簡錛屾垜浠殑鐪肩潧騫朵笉鎰熺煡寮哄害鍊鹼紒渚嬪鍥句腑鐨凙B 浠栦滑鐨勫浘鍍忕伆搴︽槸鐩稿悓鐨勩傘?/p>
鐒跺悗鐪嬩竴涓嬩功錛屾劅瑙夋尯濂界殑銆傘傚搱鍝?#160; !_!~~
璁板綍涓涓嬫嬁鍒頒竴鍙版柊鏈哄櫒涔嬪悗蹇呰鐨?Python 緇勪歡錛屽熀鏈笂閮芥槸閫氳繃 setup.py 瀹夎銆?/p>
褰撶劧錛岃繕鏈?CouchDBX錛宺edis (via MacPorts)錛宮emcached (via MacPorts) 鍜?GAE SDK銆?/p>
涓浣峂achine Learning鐨刾ostgraduate鎬葷粨鐨勶紝鎭╋紝濂藉ソ鐜╋紒
Re:
http://hello-math.appspot.com/python-component
褰撻亣鍒板疄闄呴棶棰橈紝鎴戜滑搴斿綋鎬庝箞鍋氾紒
褰撴娊璞℃垚涓涓暟瀛﹂棶棰樻椂鍊欙紝鎴戜滑搴旇鎬濊冪殑鏂瑰紡鏄細
瑙傚療鐨勬椂鍊欙紝鎴戜滑闇瑕佸仛鏄粈涔堬紒