
è€åããŒåå
ããŒã¿åã®åãããã®åã䜿çšããŠè¡šçŸã§ããããŸããŸãªå€ã®æ°ãšåŒã³ãŸãã ããšãã°ãBITåã¯2ã®çŽ¯ä¹ã§ãINT-2 32ãšå ¥åããŸãã è€åããŒã¿åã«ãã¯ãŒãæããã
1ïŒå€ãæ€èšŒããã®ã¯ç°¡åã§ã
ç§ãã¡ã¯ããã«èšç®ã«æ³šæããŸã
ããã§ãéé¢æ°ãèšç®ããã¢ã«ãŽãªãºã ãå¿ èŠã§ã
BigInteger v = value; BigInteger[] vr; for (int i = keys.length - 1; i >= 0; i--) { vr = v.divideAndRemainder(keys[i].cardinality()); keys[i].setOrderValue(vr[1]); v = vr[0]; }
ããªããã£ãããŒã¿åã®çªå·ä»ã
è€åããŒãææ¡ããŸããããå®éã«ééããåã®ãã³ãã©ãŒãäœæããå¿ èŠããããŸãã
- BITåã®å€ã®çªå·ä»ãã¯ç°¡åã§ããfalse-0ãtrue-1ã§ãã
- INTåã®å€ã®çªå·ä»ãã¯ããå°ãè€éã§ããINTå€ïŒ32ããã笊å·ä»ãæŽæ°ïŒã¯-2147483648ã2147483647ã®æ°åã§ãããããã£ãŠãINTåã®çªå·ä»ãã¯
ã ãã¡ãããè¿œå ã¯ãã§ã«è¡ãããŠããã¯ãã§ã
BigIntegerãšå ¥åããŸãã éé¢æ°
ã
- åæ§ã«ã64ãããã®ç¬Šå·ä»ãæŽæ°ã®ååãäœæã§ããŸãïŒ9223372036854775808ãè¿œå ããå¿ èŠããããŸãïŒã
- IEEE 754圢åŒã§è¡šç€ºãããDOUBLE ïŒå粟床浮åå°æ°ç¹ïŒæ°ã«ã¯ã笊å·ä»ã64ãããæŽæ°ãšããŠæ¯èŒã§ããïŒNaNã±0ãªã©ã®å°ããªäŸå€ã䌎ãïŒæ§è³ªããããŸãã ããšãã°ãJavaã§ã¯ãdoubleåã®å€ã®å ŽåãIEEE 754圢åŒã®64ãããã€ã¡ãŒãžã¯ãDouble.doubleToLongBitsã¡ãœããã䜿çšããŠååŸã§ããŸãã
- æåŸã«ãæãè¿ãããªç§ãŸã§ã®æéã決å®ããDATETIMEå€ã¯ããããããUNIXæéããã€ãŸã1970幎1æ1æ¥ã®åå0æããã®ããªç§æ°ãæå®ãã64ããã笊å·ä»ãæŽæ°ã«æžããããšãã§ããŸãã ããšãã°ãJavaã§ã¯ãããã¯Date.getTimeïŒïŒã¡ãœããã䜿çšããŠè¡ãããŸãã
- è¡ïŒ VARCHAR ïŒã«ã¯ãåå¥ã®å€§èŠæš¡ãªäŒè©±ãå¿ èŠã§ãã
ã©ã€ã³ã®çªå·ä»ãïŒæåã®è¿äŒŒïŒ
è¡ã®é·ããå¶éãããŠããªãå Žåãçªå·ä»ããäœæããã¿ã¹ã¯ã¯äžå¯èœã§ããè¡ 'a'ãš 'b'ã®éã«ã¯ãèŸæžåŒé åºã§ç¡éã«å€ãã®è¡ 'aa'ã 'aaa'ã 'aaaa' ...ããããä»»æã®2ã€ã®èªç¶æ°ã®éã«ã¯åžžã«æéæ°ã®èªç¶æ°ã æ°åŠè ã¯ãèŸæžåŒã«é åºä»ããããæååã®ã»ãããšèªç¶æ°ã®ã»ããã®é åºã¯éååã§ãããšèšããŸãã 幞ããªããšã«ãç§ãã¡ã«ç¥ãããŠããDBMSã§ã¯ãã€ã³ããã¯ã¹ã¯éãããé·ãã®è¡ã«ã®ã¿æ§ç¯ã§ããããã«ããåé¡ãæ ¹æ¬çã«å€ãããŸãã
ã¢ã«ãã¡ãããã«å«ãŸããŠããå Žå
ããã§ãåäœã¯ç©ºã®æååã«å¯Ÿå¿ãã
ä»ãä»»æã®æååãæ³åããŠãã ãã
ãã®åŒã®èšŒæ
èªå°ã«ãã£ãŠèªç¶ã«çæãããŸãã 確ãã«ïŒãã
ãå¯äžã®ãªãã·ã§ã³ã¯çªå·0ã®ç©ºã®æååã§ãã
ãã
ã空ã®è¡ã«ã¯çªå·0ãä»ããå1æåã®è¡ã«ã¯çªå·ãä»ããŸã
ã æååãæ¯èŒãããšãã空ã®æååã¯1æåã®æååãããå°ãããªããããåäœãè¿œå ãããŸãïŒ0-''ã1-'a'ã2-'b' ...
ãã
ã
ãããã§ã0-''ã1-'a'ã ããããä»ã§ã¯ãèŸæžåŒã«ãœãŒããããè¡ã®ã¹ããŒã¹ã®è¡ 'a'ãš 'b'ã®éã«ã¯ããã©ãŒã 'a'ã«å ããŠã
ãïŒãAãããaaãããaaaã...ããaabã...ïŒ
ãã®ãããªè¡ã®æ°ã¯çãã
ãæåŸã«åäžæåã®æååçš
æååã«å¥ã®æåãè¿œå ããªããããŸã
ã æåŸã®çšèªãšããŠã察å¿ããéã¿ãæã€ãã®ã·ã³ãã«ã®æ°ïŒé·ãã®è¡ã®æ°ã«çããïŒ
ïŒ æåŸã®æåãç Žæ£ããããšã«ãã£ãŠåŸãããè¡ã¯ãé·ãã®ã©ã®è¡ãããèŸæžç·šéçã«å°ãããªããšããäºå®ã®ããã«ãåè¿œå æåã®æåã®çšèªã«åäœãè¿œå ãããŸã
ã
ãã
ãã
ãã®ãããªè¡ã®æ°ã¯çãã
æååã«å¥ã®æåãè¿œå ããªããããŸã
èšç®ãæé©åããã«ã¯
ãã¡ãããå€ãæºåãããšãã«ãã®åŒãçŽæ¥äœ¿çšããŠãã ãã
éé¢æ°ãèšç®ããããã®ã¢ã«ãŽãªãºã
for (int i = 0; i < m; i++) { r = r.subtract(BigInteger.ONE); cr = r.divideAndRemainder(q[i]); r = cr[1]; int c = cr[0].intValue(); arr[i] = c; if (r.equals(BigInteger.ZERO)) { if (i + 1 < m) arr[i + 1] = END_OF_STRING; break; } }
äžèŽã«ãŒã«ãæã€è¡ã®çªå·ä»ã
ããŒã¿ããŒã¹ãæååå€ããœãŒãããé åºã¯ãå®éã«ã¯åçŽãªèŸæžç·šéã®é åºãšã¯ç°ãªããããããUnicodeç §åèŠåã䜿çšããŸã ã
ããŒã¿ããŒã¹ã䜿çšããŠãããã®ã«ãŒã«ã念é ã«çœ®ããŠæååãæ¯èŒããå Žåãåæåã¯3ã€ã®åŽé¢ã§èæ ®ãããŸããæåèªäœã倧æåãšå°æåïŒã¹ãã«ïŒãã¹ãã«ïŒã¢ã¯ã»ã³ãïŒã§ãã ããšãã°ãã»ãšãã©ã®å Žåããã·ã¢èªã®æåãeãã«ã¯2ã€ã®ã¹ãã«ããªã¢ã³ãããããããããã«2ã€ã®ã¬ãžã¹ã¿ããããŸããeãEã Thisããããã«ãããå°æåãšå€§æåãåºå¥ããã«ã倧æåãšå°æåãåºå¥ããªãïŒã¢ã¯ã»ã³ããåºå¥ããªãïŒããã³å€§æåãšå°æåãåºå¥ããªã㧠"e"ãš ""ãåºå¥ã§ããªããªããŸãã åæã«ãå¥ã®æåãšèŠãªããã®ãå¥ã®æåãæžãå€åœ¢ãšèŠãªããã®ã¯æåçäŒçµ±ã«äŸåããåãã¢ã«ãã¡ãããã䜿çšããèšèªã§ãç°ãªãå ŽåããããŸãã
ããšãã°ããã·ã¢ã®æåçäŒçµ±ã«ãããŠãæåããã®ã¹ããŒã¿ã¹ã«ã€ããŠãŸã æèŠã®çžéãããå Žåããandããšã»ããç°ãªãæåã§ããããšãçã人ã¯ããŸããã éœåžã®ã¢ã«ãã¡ãããé ã®ãªã¹ãã§ã¯ã䞊ã¹æ¿ãã¢ãŒãã«é¢ä¿ãªãããYoshkar-OlaãããIrkutskãã®åŸã«ç¶ããŸãã ãã ããPostgreSQLããŒã¿ããŒã¹ã§ã¢ã¯ã»ã³ããåºå¥ããªãç §åEnglish-USãèšå®ããããŒãã«ã«éœåžã®ãªã¹ããå ¥åããååã§äžŠã¹æ¿ãããšãYzhkar-OlaãIrkutskã«åŸãããšãããããŸãïŒIzhevskã®åŸã§ãïŒ ãã ãã¡ãããéžæãããäžèŽã«ãŒã«ã®ã»ããã¯ããdããç¬ç«ââããã·ã³ãã«ãšããŠã§ã¯ãªãããandããšããæåã®ã¹ãã«ãšããŠèæ ®ããŠããããã§ãã

äžèŽã«ãŒã«ãèæ ®ããŠæååãæ¯èŒããäžè¬çãªã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- æååã¯ãã¬ãžã¹ã¿ããªãã·ã§ã³ã«é¢ä¿ãªãæåããšã«æ¯èŒãããŸãã éããèŠã€ãã£ãå Žåãçµæãè¿ãããŸãïŒããã£ãšããŸãã¯ãããå°ãªããïŒã
- ç §åãã¢ã¯ã»ã³ããåºå¥ããå Žåãåæåã®ããªã¢ã³ãçªå·ãæ¯èŒãããŸãã éããèŠã€ãã£ãå Žåãçµæãè¿ãããŸãã
- ç §åã§å€§æåãšå°æåãåºå¥ãããå Žåãåæåã®ã¬ãžã¹ã¿ãæ¯èŒãããŸãã éããèŠã€ãã£ãå Žåãçµæãè¿ãããŸãã
- ã¢ã«ãŽãªãºã ã®çµäºããããŸã§ã«çºçããŠããªãå Žåãè¡ã¯çãããªããŸãã
ãããã®åŸ®åŠãªç¹ã¯ãã¹ãŠãã¿ã¹ã¯ã®å®è£ ã«äžå¯æ¬ ã§ããé©åãªã°ãªããæäœã¯ãååã«ãã£ãŠè¿ãããå€ãïŒããŒã¿ããŒã¹ã®èŠ³ç¹ããïŒå¢å ããã«ã€ããŠå¢å ããå Žåã«ã®ã¿å¯èœã§ããããã§ãã
ãããã£ãŠããŸããäžèŽèŠåãèæ ®ããããã«æååã®çªå·ä»ãã¢ã«ãŽãªãºã ãå€æŽããå¿ èŠããããŸãã次ã«ãç¹å®ã®ããŒã¿ããŒã¹ã§åäœããããã«ã°ãªããããæãããç°ãªãäžèŽèŠåãèšå®ã§ããå¿ èŠããããŸãã
ãããã®åé¡ã®æåã¯ããã§ã«åŸãããçµæãèæ ®ããŠãæ¯èŒçç°¡åã§ãã ãã¹ãŠã®æååå€ã¯ãæåã®1次å é åãšã¯èŠãªãããŸãã
ããã£ãŠããå Žå
ã©ãã§
åè¿°ã®ååã䜿çšããŠéé¢æ°ãäœæããã®ã¯ç°¡åã§ããæåã«åé¢ããå¿ èŠããããŸã
Javaæšæºã©ã€ãã©ãªã«ã¯ãæœè±¡ã¯ã©ã¹java.text.Collatââorãšãã®å®è£ java.text.RuleBasedCollatââorããããŸãã ãããã®ã¯ã©ã¹ã®ç®çã¯ãæååãããŸããŸãªäžèŽèŠåãšæ¯èŒããããšã§ãã äºåå®çŸ©ãããã«ãŒã«ã®åºç¯ãªã©ã€ãã©ãªãå©çšå¯èœã§ãã æ®å¿µãªããããããã®ã¯ã©ã¹ã¯æååæ¯èŒä»¥å€ã®ç®çã§ã®äœ¿çšã«ã¯é©ããŠããŸãããäžèŽã«ãŒã«ã«é¢ãããã¹ãŠã®æ å ±ã¯ã«ãã»ã«åãããŠãããéåžžã®æ¹æ³ã§ã·ã¹ãã ã©ã€ãã©ãªã䜿çšããŠååŸããããšã¯ã§ããŸããã
ãããã£ãŠãç§ãã¡ã®åé¡ã解決ããããã«ãæ¯èŒã®ã«ãŒã«ã®ã€ã³ã¿ãŒããªã¿ãŒãç¬ç«ããŠäœæããå¿ èŠããããŸããã
RuleBasedCollatââorã¯ã©ã¹ãåŠç¿ãããšããããç°¡åã«ãªããŸããã äž»ãªã¢ã€ãã¢ã¯ããœãŒãèŠåã決å®ããããã®èšèªã§ããããã®æ£åŒãªèª¬æã¯ããã¥ã¡ã³ãã«èšèŒãããŠããŸã ã ãã®èšèªãã©ã®ããã«æ©èœããããç解ããæãç°¡åãªæ¹æ³ã¯ãã«ãŒã«ã®äŸãèŠãããšã§ãã
<,<,<,;,<,<,<,;,<,<,
次ã®æåã¯ãäžèŽèŠåã®èšèªã§å ¬åŒã§ãã
- <-æåã®åé¢ã
- ; -ã¹ãã«ã®åé¢ã
- ã-ã¬ãžã¹ã¿ã®åé¢ã
äžèšã®ãããªåŒã䜿çšããŠãç°ãªãããŒã¿ããŒã¹ã®ç°ãªããããã³ã°ã«å¯Ÿå¿ããã«ãŒã«ãå®çŸ©ã§ããŸãã ãããã³ã°ã«ãŒã«ã®èšèªã¯éåžžã«åå§çã§ããããããã®äžã§åŒã解æããããã«ã 決å®è«çãªæéç¶æ ãã·ã³ãšããŠæ©èœããååãªã¢ã«ãŽãªãºã ããããŸãã ãã®çµæãã«ãŒã«ã®åŒãäžãããããšã次ã®ããšãå¯èœãªã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãååŸããŸã
- æå®ãããã«ãŒã«ã«åŸã£ãŠå€ãååŸããŸã
ïŒæåæ°ïŒã
ïŒãªãã·ã§ã³ã®æ倧æ°ïŒããã³
ïŒæ倧ã¬ãžã¹ã¿æ°ïŒçŽæ¥ããã³éã®çªå·ä»ãé¢æ°ãèšç®ããããã
- ç¹å®ã®æåã«ã€ããŠããã®3ã€ã®ã³ã³ããŒãã³ãïŒã¢ã«ãã¡ãããã®æåçªå·ããªãã·ã§ã³çªå·ãã¬ãžã¹ã¿çªå·ïŒã決å®ããŸãã
- äžããããããªãã«ã®ã³ã³ããŒãã³ãã«å¯ŸããŠãã·ã³ãã«ã決å®ããŸãã
æååå€ã®ååãäœæãããŸãã èšäºã®æåã®éšåã§èª¬æããã¹ããŒã ã«åŸã£ãŠã·ã¹ãã ãçµã¿ç«ãŠãããšãã§ããŸãã
æåŸã®ä»äžã
ã·ã¹ãã ãçµã¿ç«ãŠããããã¹ããéå§ãããåŸãããã€ãã®æ¹åã䌎ãæ©èœãçºèŠãããŸããã
ãŸããå®éã®å®è£ ã«ãããéèŠãªãã¥ã¢ã³ã¹ã¯ãå°ããªã¹ãããã§ã¹ã¯ããŒã«ã¹ã©ã€ããŒã®åããåå¥ã«åŠçããå¿ èŠãããããšã§ãã
åçŽã¹ã¯ããŒã«ããŒã®äžç¢å°ãšäžç¢å°ãã¯ãªãã¯ãããšã1è¡äžãŸãã¯äžã«ã¹ã¯ããŒã«ããŸãã ã¹ã©ã€ããŒã®äžãŸãã¯äžã«ããã¹ã¯ããŒã«ããŒã®ããªãŒãã£ãŒã«ããã¯ãªãã¯ãããšãåºå®ïŒå°ããïŒè¡æ°ãŸã§ã¹ã¯ããŒã«ããŸãã ãããã®å ŽåããŠãŒã¶ãŒã¯ãç»é¢ã«è¡šç€ºããããã¹ãŠã®è¡ãåºå®æ°ã®äœçœ®ã ãã·ããããããšãæåŸ ããŠããŸãã ååãªè£éãã€ã³ããæããªãè£éåšã¯ããŠãŒã¶ãŒã«è¡šç€ºãããç»åãååŸã«ããããããããšã§äºæž¬ã§ããªãåäœãããå¯èœæ§ããããæ確åããåŸãã¹ã¯ããŒã«ããŒã®äœçœ®ã¯ãŠãŒã¶ãŒãæããã®ã«å¯Ÿå¿ããªããªããŸãã
ãã ãããã®å Žåãè£éåšã®äœ¿çšã¯æ£åœåãããŸããã ããŒãã£ãŒã«ãå€ã®ä»¥åã®ã»ãããããã£ãŠããå Žåã¯ãããŒã¿ããŒã¹ãžã®ã¯ã€ãã¯ã¯ãšãªã«ãã£ãŠåã®ïŒãŸãã¯æ¬¡ã®ïŒã¬ã³ãŒããååŸã§ããŸãã ãããæ°åå®è¡ãããšã以åã®ã¬ã³ãŒããŸãã¯åŸç¶ã®ã¬ã³ãŒããååŸã§ããŸããããããã¯ãŸã ãŠãŒã¶ãŒã«ã¯è¡šç€ºãããŸããã
ãã®ããŒã¿ãæœåºããåŸããŠãŒã¶ãŒã«è¡šç€ºããã ãã§ãªãã ã¬ã³ãŒããã«ãŠã³ãããèŠæ±ã«é Œããã«è£éããŒãã«ã«å¥ã®ãã€ã³ããè¿œå ããããšãã§ããŸããåä¿¡ããã¬ã³ãŒãã«ã¯æ¢ç¥ã®å€ã ãåã®ã¬ã³ãŒããšç°ãªãçªå·ãããããã§ãã
å®éã®å®è£ ã«ããããã1ã€ã®éèŠãªãã¥ã¢ã³ã¹ã¯ããŠãŒã¶ãŒãã°ãªããã®ã¹ã¯ããŒã«ãéå§ããåã«è£éããŒãã«ã«ããŒã¿ãå ¥åããå¿ èŠãããããšã§ãã
çµã¿åããçªå·ãé©ãããšã§ã¯ãããŸãã
ãã¹ãã§ã¯ãäœçœ®æ±ºãæã®ã¹ã¯ããŒã«ããŒã®é·ãã®20ã25ïŒ ã®èª€å·®ã¯å¿ççã«èš±å®¹ã§ãããããã以äžã§ã¯ãªãããšã瀺ãããŠããŸãã ãããã£ãŠãã°ãªããã衚瀺ããåŸããŠãŒã¶ãŒã¯ããããŠã³ã¹ãã®æ倧é·ããè£éããŒãã«ã®çµ±èšããŸã èç©ãããŠããªãäœæ¥ã®æåã§ãã¹ã¯ããŒã«ããŒã®é·ãã®20ã25ïŒ ãè¶ ããªãããã«ããããšãæãŸããã
ããã¯ãã°ãªããã®è¡šç€ºåŸã«èµ·åããã䞊åå®è¡ã¹ã¬ããã§å¹ççãªæ¹æ³ã§å®è¡ã§ããŸãã ãã®ã¹ã¬ããã§ã¯ãäžé£ã®æ¹è¯ã¯ãšãªãå®è¡ããããã®çµæãè£éããŒãã«ãè£å ããŸãã 詳现åã¯ãšãªã®ããŒã®çµã¿åããã®å€ã¯ãè£éããŒãã«ã®ã¬ã³ãŒãã®ã·ãªã¢ã«çªå·ã®å€ã®æ倧ã®ã®ã£ããã®äžå€®ã«äœçœ®ãããã³ã«éžæãããŸãã ãã®ããã»ã¹ã¯ãæ倧ã®ã£ããã®å¹ ãç®çã®ãµã€ãºã«çž®å°ãããããå埩åæ°ã®å¶éã«éãããŸã§å®è¡ãããŸãã
å®çšçãªå®è£
ããã§ç€ºããååã«åŸã£ãã°ãªããã¯ãPostgreSQLãDBMSãšããŠäœ¿çšããŠJavaã§å®è£ ãããŸããã è² è·ãã¹ãããŒã¿ã»ããã®1ã€ãšããŠããã·ã¢ã®éèœã®1075429éãåãå«ãKLADRããŒã¿ããŒã¹ã䜿çšããããœãŒãã¯ããŸããŸãªãã£ãŒã«ããšãã®çµã¿åããã«ãã£ãŠå®è¡ãããŸãã ããã§æŠèª¬ãããã¹ãŠã®ååãæ©èœããŸãã åçŽã¹ã¯ããŒã«ããŒã¹ã©ã€ããŒã絶ãã移åããŠããå ŽåããŠãŒã¶ãŒã¯ãã¹ãŠã®ã¬ã³ãŒãããªã¢ã«ã¿ã€ã ã§ã¹ã¯ããŒã«ããŠããããã«é¯èŠããŸããã¹ã¯ããŒã«ã®çµäºçŽåŸïŒãªãã¡ã€ã³ã¡ã³ãã¯ãšãªãããªã¬ãŒãããè£éããŒãã«ã«å¥ã®ããããè¿œå ããããšãïŒãã¹ã¯ããŒã«ããŒã¹ã©ã€ããŒã®äœçœ®ã¯çãè·é¢ããžã£ã³ãããããšã§ãªãã¡ã€ã³ãããŸãã ããžã·ã§ãã³ã°ã䜿çšãããšãç®çã®ãšã³ããªãããã«è¡šç€ºããããã«ãã®äœçœ®ãæå®ãããåŸããã«ã¹ã¯ããŒã«ããŒã¹ã©ã€ããŒãããããèšå®ã§ããŸãã ã°ãªãããšè£éãã€ã³ãã®èç©ãæäœãããšããããŠã³ã¹ãã¯æ¬¡ç¬¬ã«ç®ç«ããªããªããŸãã

***
è¡ãããäœæ¥ã«åºã¥ããŠãç§åŠåºçç©ãæºåããŠããŸãããŸããarxiv.orgã®ãã®èšäºã®ç§åŠçã®åå·ãã«æ £ããããšãã§ããŸãã