Costas Array Problem
ã³ã¹ã¿ã¹é ååé¡ãã¨ããã®ãç¥ã£ãã
https://en.wikipedia.org/wiki/Costas_array
ãA review of Costas arraysã
http://www.hindawi.com/journals/jam/2006/026385/abs/
ã³ã¹ã¿ã¹é åã¨ã¯
ãµã¤ãºNã®ã³ã¹ã¿ã¹é
åã¨ã¯ãé·ããNã®é
å f ã§ãã£ã¦ã以ä¸ã®æ¡ä»¶ãæºãããã®ãããã
- f 㯠[0, 1, ..., N-1] ã®permutationã§ãã
D_l = { f[i + l] - f[i] | 0 <= i < N - l }
ã¨ããã¨ããD_l
ã®è¦ç´ ã¯distinctã§ããããå ¨ã¦ã®l(1 <= l < N)
ã§æç«ãã
ãã¨ãã°ãN=4ã¨ããã¨ãã
- f = {0, 1, 3, 2} ã¯ã³ã¹ã¿ã¹é å
- f = {2, 0, 3, 1} 㯠D_1 = {-2, 3, -2} ãªã®ã§ã³ã¹ã¿ã¹é åã§ã¯ãªã
ã³ã¹ã¿ã¹é
åã§ããããã®æ¡ä»¶ãå¹¾ä½çã«è¡¨ãã¨ã
ãNï¼Nã®äºæ¬¡å
ã°ãªããä¸ã«Nåã®ç¹ãé
ç½®ãããã©ã®è¡ã«ãã©ã®åã«ãç¹ã¯1ã¤ãç¹ããç¹ã¸ã®ãã¯ãã«ï¼N(N-1)/2åããï¼ãèããã¨ãããã¹ã¦ã®ãã¯ãã«ã¯äºãã«ç°ãªãã
ã¨ãããã¨ã«ãªãã
ä¸è¨ã®N=4ã®ä¾ãããããã°ãªããçã«æ¸ãã¨æ¬¡ã®ããã«ãªãã
ã³ã¹ã¿ã¹é å â â¡â¡â¡ â¡â â¡â¡ â¡â¡â¡â â¡â¡â â¡ ã³ã¹ã¿ã¹é åã§ãªã â¡â¡â â¡ â â¡â¡â¡ â¡â¡â¡â â¡â â¡â¡
ã³ã¹ã¿ã¹é åãåæãã
ããã¾ã§ã®ã¨ãããN<=29 ã®ã³ã¹ã¿ã¹é
åãå
¨åæããã¦ããã
N=29 ãè¨ç®ãããã®ã¯2011å¹´ãCPUæé366.55å¹´åãå®æé230æ¥ããããããªã
ãResults of the enumeration of Costas arrays of order 29ã
http://www.aimsciences.org/journals/displayArticlesnew.jsp?paperID=6376
åæã®ããã«ä½¿ã£ãææ³ã¯ãN=28 ãå
¨åæããè«æã«ããããæ¸ããã¦ããã¿ããï¼ã¾ã èªãã§ãªãï¼ã
http://eeme.ucd.ie/~kdrakaka/work/publications/047.The_Enumeration_of_Costas_Arrays_of_Order_28_and_Its_Consequences.pdf
Nãã¨ã®ã³ã¹ã¿ã¹é
åã®åæ°ã表ãæ°åã¯ãOEISã«ããã
https://oeis.org/A008404
ãã®åéã®å¤§å®¶ã ã£ãããã Konstantinos Drakakis æ°ã®ãµã¤ã
http://eeme.ucd.ie/~kdrakaka/indexen.htm
ï¼2011年以éã¯ç 究ããå¼éãã¦éèãã¸ãã¹ãã£ã¦ãã£ã½ãï¼
åé¡
æªè§£æ±ºãªåé¡ãããããããã
ãOpen Problems in Costas Arraysã
http://arxiv.org/pdf/1102.5727.pdf
ä¸çªããããããã®ããããµã¤ãºNã®ã³ã¹ã¿ã¹é åã®æ°ã C(N) ã¨ããã¨ãããã¹ã¦ã®N㧠C(N) > 0 ãï¼ãã
ç¾å¨ãã³ã¹ã¿ã¹é åãåå¨ãããã©ãã確ããããã¦ããªãæå°ã®Nã¯32ã
2014å¹´ã«æ±å¤§ã§ãã¹ãã³ã³24æéåããã N=32 ã§1ã¤ãããè¦ã¤ããããããªãã®ãã¨ãããã¨ã§è©¦ããããè¦ã¤ãããªãã£ãã¨ã®ãã¨ã
http://www.cc.u-tokyo.ac.jp/support/press/news/VOL17/No1/11_201501hpc-2.pdf
N=ç´ æ°-1 ã¨ã N=ç´ æ°ã®ç´¯ä¹-2 ã¨ããç¹å®ã®Nã«ã¤ãã¦ã¯ã³ã¹ã¿ã¹é åãçæããã¢ã«ã´ãªãºã ãããã
ç¥ããã¦ããã¢ã«ã´ãªãºã ã«ãã£ã¦çæã§ããªãCostas Arrayã¯ã"sporadic" ã¨å¼ã°ãã¦çéï¼ï¼ï¼ããã¦ããã
OEISã«ãã C(N) ã®æ°åãè¦ã¦ã¿ãã¨ã ãã ãå°ãããªã£ã¦ããã®ã§ãC(N) ã¯0ã«è¿ã¥ããããªæ°ããããã
C(N) ã®ãªã¼ãã¼ã«ã¤ãã¦åãã£ã¦ããã®ã¯ãC(N)/N! = O(1/N)
ã§ãããã¨ããããããã
å®è£ ãã¦ã¿ã
èªåã§ããã³ã¹ã¿ã¹é
åãåæããããã°ã©ã ãç°¡åã«ä½ã£ã¦ã¿ãã
ã¾ãããã¤ã¼ãã« N! éãã®permutationãä½ã£ã¦ããããæ¡ä»¶ããã§ãã¯ããæ¹æ³ã ã¨ãæå
ã§å®è¡ããæ°ã«ãªãã®ã¯N=13ãããã¾ã§ï¼å®è¡ç°å¢ã¯ Macbook Air 2012 2.0GHz Core i7ï¼ã
https://github.com/tomerun/CostasArray/blob/c277f15da4591ac9e685dcd0fcd509d67cdd0e8e/main.cpp
$ time ./solver 10 ans_count:2160 real 0m0.172s user 0m0.166s sys 0m0.003s $ time ./solver 11 ans_count:4368 real 0m2.286s user 0m2.282s sys 0m0.003s $ time ./solver 12 ans_count:7852 real 0m31.387s user 0m31.292s sys 0m0.032s $ time ./solver 13 ans_count:12828 real 7m2.614s user 7m1.114s sys 0m0.513s
èªæãªæåãï¼permutationãä½ãéä¸ã§é½åº¦æ¡ä»¶ãã§ãã¯ãã¦violateãããæåãï¼ã足ãã¨ãN=15ãããã¾ã§ã¯ãããã
https://github.com/tomerun/CostasArray/blob/2db147b220e9e68436e26b4cb862993b2c3b91ef/main.cpp
$ time ./solver 10 ans_count:2160 real 0m0.034s user 0m0.026s sys 0m0.003s $ time ./solver 11 ans_count:4368 real 0m0.143s user 0m0.138s sys 0m0.003s $ time ./solver 12 ans_count:7852 real 0m0.781s user 0m0.776s sys 0m0.003s $ time ./solver 13 ans_count:12828 real 0m4.223s user 0m4.213s sys 0m0.008s $ time ./solver 14 ans_count:17252 real 0m22.039s user 0m22.014s sys 0m0.016s $ time ./solver 15 ans_count:19612 real 2m0.588s user 2m0.299s sys 0m0.113s
ã©ãã¾ã§é«éã«ã§ããããã«ãªãããªã