CodeZine ã«ã¦ KOF 2008 ã®è¨äºã¨è£è¶³
大éªå港ATCã§éå¬ããããé¢è¥¿ãªã¼ãã³ã½ã¼ã¹2008ãã®2æ¥ç®ï¼11æ8æ¥ï¼ååä¸ã®ã»ãã·ã§ã³ã§ãæ ªå¼ä¼ç¤¾ã¯ã¦ãªCTOã®ä¼è¤ç´ä¹æ°ããã¯ã¦ãªæµå¤§è¦æ¨¡ãã¼ã¿å¦çãã¨é¡ããçºè¡¨ãè¡ã£ãã
CodeZine ã§å æ¥ã® KOF 2008 (ãããããè¨ã£ã¦ããã¾ãã King of Fighters ã§ã¯ãªãã§ãããé¢è¥¿ãªã¼ãã³ãã©ã¼ã©ã ã§ã) ã®çºè¡¨ãè¨äºã«ãã¦ããã ãã¾ããããããã¨ããããã¾ãã
çºè¡¨è³æã¯ä»¥ä¸ã®ã¨ã³ããªã¼ã«ããã¾ãã®ã§ä¸ç·ã«ã覧ããã ããã°ã¨æãã¾ãã
ãã¦ãè¨äºå 容ã«ã¤ãã¦å°ãè£è¶³ããã¦ããããã¨æãã¾ãã
ã¡ã¢ãªã¨ãã£ã¹ã¯ã®é度æ¯è¼ã«ã¤ãã¦
ãã¡ã¢ãªã¯ãã£ã¹ã¯ã® 150 åãã¨ãã話ã§ããããã®å¾ç¥äººã¨è©±ãã¦æ¤ç´¢ã®ã¤ã³ããã¯ã¹ãã·ã¼ã¯ããå ´åãªã©ã¯ ms 対 ns ãããéãããã¨ãã風ã«æãã¦ããã ãã¾ããã詳ããã¯è³æã®ã¨ã³ããªã¼ã®è¿½è¨ãã覧ãã ããã150 åã¨ããã®ã¯ãã¼ã¿è»¢éé度ã§ãããã®æèã®è©±ããè¡ãã¨ã·ã¼ã¯é度ã®è©±ãããã¹ãã§ãããç¥èããããããã¿ã¾ããã§ããã
ã¡ã¢ãªãå¢è¨ã㦠I/O ãåæ£ããæ¹éã«ã¤ãã¦
ãã®è£è¶³ã¯è足ã ã¨æãã¾ãã念ã®ããã
I/O åæ£ã¯ãã£ãã·ã¥ãµã¤ãºã®ãµã¤ã¸ã³ã°ããã£ããè¡ãã¾ããã...ã¨ããæå³ã§ãåç´ã«ã¡ã¢ãªãå¢ãããã¨ã§ãI/Oè² è·ã軽æ¸ããããã¨ãã§ãããã®ã¯ãã®éãã§ããã§ãããããã¯å½ç¶ I/O åæ°ãæå°åããã¢ã«ã´ãªãºã ããã¡ã¤ã³ãã¸ãã¯ãæ¡ç¨ããåæã§ã®è©±ã«ãªãã¾ãããã¢ããªã±ã¼ã·ã§ã³ã§å¯¾å¿ããªãã§ãã¼ãã§è§£æ±ºããªãããã¨ããæå³ã§ã¯ãªãã®ã§ããããããã¾ããã¼ã¸ãã£ãã·ã¥ã«é¢ãã¦ã¯ read/write ã®ã©ã¡ãã®è² è·ãæ¸ãããã«ãã£ã¦è©±ãéã£ã¦æ¥ã¾ãã
ç»å API ã¸ã®ãªã¯ã¨ã¹ãæ°ã«ã¤ãã¦
ç»å API ã®ãªã¯ã¨ã¹ãã¯ã1åãã¨ããã¾ãããå®éã«ã¯ãã£ã¨ããã¾ããæ£ç¢ºãªå¤ãããã«è§£ããªãã®ã§é©å½ã«æ°åã¨ããæ°åãåºãã¦ãã¾ãã¾ãããããããªããã
SQL ã® JOIN ã使ããªãæ¹éã«ã¤ãã¦
ãããè足ã§ãããJOIN ã使ããªããã¨ããã®ã¯åæ£ãåæã¨ããã¨æ¯ãªã®ã§ãããå¿ ããã JOIN ã¯ã¨ãªãæªãã¨ãã話ã§ã¯ããã¾ããã
ãã£ããã¤ã³ããã¯ã¹ãå¹ãããä¸ã§ãããã»ã©ãã¼ã¿éã®å¢å ãè¦è¾¼ã¾ããªããã¼ãã«å士ã§ããã° JOIN ãã¦ãæ§ããªãã§ããããã¾ã JOIN ã¯ã¨ãªã§ãªããã°ãªããªãåºåãé£ããè¨ç®çµæã¨ããã®ããã¡ããããã¾ãã
巨大ãªãã¼ãã«å士ã JOIN ãã¦ããã¨ããããå¯çµåãã¦åæ£æã«å°ãã®ã§ããã¼ã¿éçã«æ¯é çãªãã¼ãã«ã¯ãããããåæ£ãåæã«ãJOIN ã使ããªãæ¹æ³ã§åé¿ããã»ããè¯ããã¨ãã風ã«èãã¦ãã¾ãã
JOIN ã使ãã¨åæ£ã§ããªãã¨ãããã®ã§ããªããã絶対ã«ä½¿ã£ã¦ã¯ãããªãã¨ããæå³ã§ã¯ããã¾ããã
ãã¼ã¯ã¼ããªã³ã¯ã®å®è£ ã«ã¤ãã¦
ãã¼ã¯ã¼ããªã³ã¯ã®å®è£ ã«ã¯ Aho-Corasick ã Double Array TRIE ã®è©±ãåãä¸ãã¾ããããç¾å¨ã®ã¯ã¦ãªãã¤ã¢ãªã¼ãã¯ã¦ãªã°ã«ã¼ãã§ã¯å¥ã®å®è£ ã使ã£ã¦ãã¾ããAho-Corasick, Double Array TRIE ã¯ãããããã¼ã¯ã¼ããªã³ã¯ã®ãããªæ©è½ãé«éã«å®è£ ã§ããä¾ã§ãã£ã¦ãã¯ã¦ãªã§å©ç¨ãã¦ããã®ã¯ã¾ãå¥ã¨ãã風ã«ãç解ãã ããã
ãã¯ãã«ç©ºéã¢ãã«ã¨ Compressed Suffix Arrays ã«ã¤ãã¦
ã¯ã¦ãªããã¯ãã¼ã¯ã®æ¤ç´¢ã¯ PFI ãããéçºãã Sedue ã§å®ç¾ããã¦ãã¾ããSedue 㯠Compressed Suffix Arrays ã軸ã«ããã大è¦æ¨¡ãã¼ã¿ã«å¯¾ãã¦ã¹ã±ã¼ã©ãã«ãªæ¤ç´¢ã¨ã³ã¸ã³ã§ãã(Sedue ã¯ã¢ã«ã´ãªãºã ãåªãã¦ããã ãã§ãªãå®è£ ã®æè¡ããã¤ã¬ãã«ãé«éã§ç´ æ´ãããã¨ã³ã¸ã³ã§ã)
ãã¦ãè¨äºä¸ã§ã¯ãã¯ãã«ç©ºéã¢ãã«ã«å¯¾ã㦠CSA ãæ¯è¼ããã¦ãã¾ããããã㧠CSA ã¨æ¯è¼ãããã®ã¯è»¢ç½®ã¤ã³ããã¯ã¹ã§ãã(ãã¯ãã«ç©ºéã¢ãã«ã¯æ¯è¼å¯¾è±¡ã¨ãã¦ã¯å±¤ãéãã¾ãã) 転置ã¤ã³ããã¯ã¹ã®è¾æ¸ãåãã¡æ¸ãããã㯠N-gram è¾æ¸ã§å®ç¾ããã¨ãã®æ¬ ç¹ã«å¯¾ãã¦ãCSA ãªã©ã®å§ç¸®å ¨æç´¢å¼ãããã¨ãã風ã«ãç解ãã ããã
ãã¯ãã«ç©ºéã¢ãã«ã®è©±ã¯ããã¼ã¿ãã¼ã¹ã§ã¯æ±ãåããªãæ¤ç´¢è¦æ±ãã©ãå¦çããããã¨ããæèã§ã®ç´¹ä»ã«ãªãã¾ãããã¯ãã«ç©ºéã¢ãã«ã¯æ å ±æ¤ç´¢ã ãã§ãªããã¯ã©ã¹ã¿ãªã³ã°ãããã¹ãåé¡ãªã©æ§ã ãªææ³ã®åºç¤ã¨ãªãã¢ãã«ã§ããããã¯ãã¼ã¯ã®ããã¹ãåé¡ã§ããComplement Naive Bayes ã§ã¹ã³ã¢ãªã³ã°ãããã®ã Cosine Similarity ç¸å½ã®ã¢ã«ã´ãªãºã ã§è¶³åããã¦ãã¾ãã
ä¼å ´ã§ã®èªåã®èª¬æãè³ããªãã£ããã®ãå¤ãã£ãã¨åçãã¦ãã¾ããç³ã訳ããã¾ãããã»ãã«ãä½ãééããä¸æãªç¹ãªã©ããã¾ãããæ¯éãã£ã¼ãããã¯ããå¾ ã¡ãã¦ãã¾ãã