差分パルス符å·å¤‰èª¿ã¯ä¸»ã«éŸ³å£°ä¿¡å·ã‚’圧縮ã™ã‚‹éš›ã«ç”¨ã„られる圧縮手法ã®ä¸€ã¤ã§ã‚る.
音声信å·ã¯è¨ˆç®—機上ã§ã¯æ•´æ•°åˆ—(インパルス列)ã¨ã—ã¦æ‰±ã‚れる.整数列ã¯å…¥åŠ›ä¿¡å·ã‚’一定時間間隔ã§æ¨™æœ¬åŒ–(サンプリング)ã—,振幅を記録ã—ãŸã‚‚ã®ã§ã‚る.一般ã«ã“ã®æ•´æ•°åˆ—ã¯å‰å¾Œã®å€¤ãŒè¿‘ã„ã¨ã„ã†å‚¾å‘ãŒã‚る.ã“れを利用ã—,å‰å¾Œã®å€¤ã®å·®åˆ†ã‚’符å·åŒ–ã—,圧縮率をå‘上ã•ã›ã‚‹ã®ãŒå·®åˆ†ãƒ‘ルス符å·å¤‰èª¿ã§ã‚る.
本å•é¡Œã§ã¯å·®åˆ†ã®å€¤ã‚’ã‚らã‹ã˜ã‚定ã‚られãŸå€¤ã®é›†åˆã‹ã‚‰é¸ã¶ã“ã¨ã‚’考ãˆã‚‹ï¼Žã“ã®å€¤ã®é›†åˆã‚’コードブックã¨å‘¼ã¶ã“ã¨ã«ã™ã‚‹ï¼Žå¾©å·åŒ–後ã®éŸ³å£°ä¿¡å· yn ã¯ä»¥ä¸‹ã®å¼ã§å®šã‚られる.
yn = yn - 1 + C[kn]
ã“ã“㧠kn ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã«ã‚ˆã£ã¦å‡ºåŠ›ã•ã‚Œã‚‹å‡ºåŠ›ç³»åˆ—, C[j] ã¯ã‚³ãƒ¼ãƒ‰ãƒ–ック㮠j 番目ã®å€¤ã§ã‚る.ãŸã ã— yn ã¯åŠ ç®—ã«ã‚ˆã£ã¦0未満ã®å€¤ã¨ãªã£ãŸå ´åˆã¯0ã«ï¼Œ255より大ãã„値ã¨ãªã£ãŸå ´åˆã¯255ã«ãã‚Œãžã‚Œä¸¸ã‚られる.ã¾ãŸï¼Œ y0 ã®å€¤ã¯128ã¨ã™ã‚‹ï¼Ž
ã‚ãªãŸã®ä»•äº‹ã¯ï¼Œå…¥åŠ›ä¿¡å·ã¨ã‚³ãƒ¼ãƒ‰ãƒ–ックãŒä¸Žãˆã‚‰ã‚ŒãŸã¨ãã«ï¼Œå…ƒã®å…¥åŠ›ä¿¡å·ã¨å¾©å·åŒ–後ã®å‡ºåŠ›ä¿¡å·ã¨ã®å·®ã®äºŒä¹—å’ŒãŒæœ€å°ã¨ãªã‚‹ã‚ˆã†ã«å‡ºåŠ›ç³»åˆ—ã‚’é¸ã‚“ã§ï¼Œãã®ã¨ãã®å·®ã®äºŒä¹—和を出力ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を書ãã“ã¨ã§ã‚る.
例ãˆã°ï¼Œã‚³ãƒ¼ãƒ‰ãƒ–ックã¨ã—㦠{4, 2, 1, 0, -1, -2, -4} ã¨ã„ã†å€¤ã®ã‚»ãƒƒãƒˆã‚’使ã£ã¦ 131, 137 ã¨ã„ã†åˆ—を圧縮ã™ã‚‹å ´åˆï¼Œ y0 = 128, y1 = 128 + 4 = 132, y2 = 132 + 4 = 136 ã¨ã„ã†åˆ—ã«åœ§ç¸®ã™ã‚‹ã¨ 二乗和㌠(131 - 132)^2 + (137 - 136)^2 = 2 ã¨æœ€å°ã«ãªã‚‹ï¼Ž
ã¾ãŸï¼ŒåŒã˜ãコードブックã¨ã—㦠{4, 2, 1, 0, -1, -2, -4} ã¨ã„ã†å€¤ã®ã‚»ãƒƒãƒˆã‚’使ã£ã¦ 131, 123 ã¨ã„ã†åˆ—を圧縮ã™ã‚‹å ´åˆï¼Œ y0 = 128, y1 = 128 + 1 = 129, y2 = 129 - 4 = 125 ã¨ï¼Œå…ˆç¨‹ã®ä¾‹ã¨ã¯é•ã£ã¦ 131 ã«ã‚ˆã‚Šè¿‘ã¥ã +2 を採用ã—ãªã„方㌠(131 - 129) ^ 2 + (123 - 125) ^ 2 = 8 ã¨ã„ã†ã‚ˆã‚Šå°ã•ãªäºŒä¹—å’ŒãŒå¾—られる.
上記 2ã¤ã®ä¾‹ã¯ sample input ã®æœ€åˆã® 2例ã§ã‚る.
入力ã¯è¤‡æ•°ã®ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã‹ã‚‰æ§‹æˆã•ã‚Œã‚‹ï¼Žå„データセットã®å½¢å¼ã¯æ¬¡ã«ç¤ºã™ã¨ãŠã‚Šã§ã‚る.
N M
C1
C2
...
CM
x1
x2
...
xN
最åˆã®è¡Œã¯ï¼Œå…¥åŠ›ãƒ‡ãƒ¼ã‚¿ã‚»ãƒƒãƒˆã®å¤§ãã•ã‚’è¦å®šã™ã‚‹ï¼Ž N ã¯åœ§ç¸®ã™ã‚‹å…¥åŠ›ä¿¡å·ã®é•·ã•(サンプル数)ã§ã‚る. M ã¯ã‚³ãƒ¼ãƒ‰ãƒ–ックã«å«ã¾ã‚Œã‚‹å€¤ã®å€‹æ•°ã§ã‚る. N åŠã³ M ã¯1 ≤ N ≤ 20000,1 ≤ M ≤ 16を満ãŸã™ï¼Ž
ã“ã‚Œã«ç¶šã M è¡Œã¯ï¼Œã‚³ãƒ¼ãƒ‰ãƒ–ックã®è¨˜è¿°ã§ã‚る. Ci ã¯ã‚³ãƒ¼ãƒ‰ãƒ–ックã«å«ã¾ã‚Œã‚‹ i 番目ã®å€¤ã‚’表ã™ï¼Ž Ci ã¯-255 ≤ Ci ≤ 255を満ãŸã™ï¼Ž
ã“ã‚Œã«ç¶šã N è¡Œã¯ï¼Œå…¥åŠ›ä¿¡å·ã®è¨˜è¿°ã§ã‚る. xi ã¯å…¥åŠ›ä¿¡å·ã‚’表ã™æ•´æ•°åˆ—ã® i 番目ã®å€¤ã§ã‚る. xi ã¯0 ≤ xi ≤ 255を満ãŸã™ï¼Ž
データセットã®ä¸ã®å…¥åŠ›é …ç›®ã¯ï¼Œã™ã¹ã¦æ•´æ•°ã§ã‚る.入力ã®çµ‚ã‚Šã¯ï¼Œç©ºç™½æ–‡å—1個ã§åŒºåˆ‡ã‚‰ã‚ŒãŸ2個ã®ã‚¼ãƒã®ã¿ã‹ã‚‰ãªã‚‹è¡Œã§è¡¨ã•ã‚Œã‚‹ï¼Ž
入力ã®å„データセットã«å¯¾ã—ã¦ï¼Œ å…ƒã®å…¥åŠ›ä¿¡å·ã¨å¾©å·åŒ–後ã®å‡ºåŠ›ä¿¡å·ã¨ã®å·®ã®äºŒä¹—å’Œã®æœ€å°å€¤ã‚’一行ã§å‡ºåŠ›ã›ã‚ˆï¼Ž
2 7 4 2 1 0 -1 -2 -4 131 137 2 7 4 2 1 0 -1 -2 -4 131 123 10 7 -4 -2 -1 0 1 2 4 132 134 135 134 132 128 124 122 121 122 5 1 255 0 0 0 0 0 4 1 0 255 0 255 0 0 0
2 8 0 325125 65026