¾Ë°í¸®Áò :: FEC.VanderMonde Matrices¸¦ ÀÌ¿ëÇÑ ¿À·ù ¼öÁ¤ | |
Áö±Ý ´Ù¿î·Îµå |
¾Ë°í¸®Áò :: FEC. ¼øÀ§ ¹× ¿ä¾à
±¤°í
- ƯÇã:
- Perl Artistic License
- °¡°Ý:
- FREE
- °Ô½ÃÀÚ À̸§:
- Marc Lehmann
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://www.goof.com/pcg/marc/
¾Ë°í¸®Áò :: FEC. ű×
¾Ë°í¸®Áò :: FEC. ¼³¸í
VanderMonde Matrices¸¦ »ç¿ëÇÏ¿© ¾ÕÀ¸·Î ¿À·ù ¼öÁ¤ Algorithm :: FEC´Â Luigi Rizzo et al.ÀÇ FEC ¶óÀ̺귯¸®¿¡ ´ëÇÑ Perl ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ¹èÆ÷ÆÇÀÇ readme.fec ÆÄÀÏÀ» ÂüÁ¶ÇϽʽÿÀ. ÀÌ ¶óÀ̺귯¸®´Â VanderMonde Matrices¸¦ ±â¹ÝÀ¸·ÎÇÏ´Â °£´ÜÇÑ (encoded_blocks, data_blocks) Áö¿ì°³ Äڵ带 ±¸ÇöÇÕ´Ï´Ù. ÀÎÄÚ´õ´Â SIZE BLOCK_SIZEÀÇ DATA_BLOCKS ºí·ÏÀ» »ç¿ëÇϸç, 0¿¡¼ ENCODED_BLOCKS-1ÀÇ ¼ºê ¼¼Æ®°¡ ¿ø·¡ µ¥ÀÌÅÍÀÇ À籸¼ºÀ» Çã¿ëÇϵµ·Ï 0¿¡¼ ENCODED_BLOCKS-1·Î ¹øÈ£°¡ ¸Å°ÜÁø ENCODED_BLOCKS »óÀÌÇÑ ÀÎÄÚµù µÈ ºí·ÏÀ» »ý¼º ÇÒ ¼öÀÖ´Ù. data_blocks ¹× encoded_block for °ªÀº ´ÙÀ½ ¹æÁ¤½Ä : data_blocks¿¡ º¹Á¾ÇؾßÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ÀϾ °ÍÀ» ¿øÇÑ´Ù¸é ³ª¿¡°Ô ¸ÞÀÏÀ» º¸³»½Ê½Ã¿À. Àμö¾øÀÌ È£ÃâµÇ´Â °æ¿ì ºí·Ï°ú ¿¬°üµÈ ³»ºÎ ÀúÀå¼Ò°¡ ´Ù½Ã ÇØÁ¦µË´Ï´Ù. $ block = $ fec-> encode ($ block_index)´Â 0°ú encoded_blocks-1 (Æ÷ÇÔ) ¿©¾ßÇÏ´Â index block_indexÀÇ ´ÜÀÏ ÀÎÄÚµù µÈ ºí·ÏÀ» ¸¸µì´Ï´Ù. 0¿¡¼ data_blocks-1±îÁöÀÇ ºí·ÏÀº ´Ü¼øÈ÷ ¿ø·¡ µ¥ÀÌÅÍ ºí·ÏÀÇ º¹»çº»ÀÔ´Ï´Ù. ÀÎÄÚµù µÈ ºí·ÏÀº Perl ½ºÄ®¶ó·Î ¸®Åϵ˴ϴ٠(±×·¡¼ ºí·ÏÀÌ ¸Þ¸ð¸®¿¡ ¸Â¾Æ¾ßÇÕ´Ï´Ù.ÀÌ ÆÄÀÏÀÌ ¸ÞÀÏÀ» º¸³»¾ßÇÕ´Ï´Ù. $ fec-> set_decode_blocks (, ) DATA_BLOCKS¸¦ µðÄÚµù ÇÒ Áغñ¸¦ÇÕ´Ï´Ù (array_of_blocks ¸Å°³ º¯¼ö¿¡ ´ëÇÑ set_encode_blocks ÂüÁ¶). ÀϹÝÀûÀ¸·Î ¿ø·¡ µ¥ÀÌÅÍ ºí·ÏÀÌ ¾Æ´Ï±â ¶§¹®¿¡ µÎ ¹ø° ArrayRef·Î À妽º ¹è¿ (0¿¡¼ ExcodeD_Blocks-1±îÁöÀÇ ¹üÀ§)ÀÌ Á¦°øµÇ¾î¾ßÇÕ´Ï´Ù. µÎ ¹è¿ ¸ðµÎ¿¡ ÀÖ¾î¾ßÇÕ´Ï´Ù. Á¤È®È÷ DATA_BLOCKS Ç׸ñ.ÀÌ ¹æ¹ýÀº ºí·ÏÀÌ µðÄÚµù µÈ °á°ú¿¡ÀÖ´Â ¼ø¼¸¦ ¹Ý¿µÇϵµ·Ï (ÇÊ¿äÇÑ °æ¿ì) ºí·Ï ¹× À妽º ¹è¿À» ´Ù½Ã ³ªÅ¸³À´Ï´Ù. À妽º ¹è¿Àº µðÄÚµù µÈ ¼ø¼¸¦ ³ªÅ¸³»¸ç, ÀÌ´Â À妽ºÀÇ n ¹ø° Ç׸ñÀ» ³ªÅ¸³À´Ï´Ù. ¹è¿Àº µðÄÚµù µÈ °á°úÀÇ n ¹ø° µ¥ÀÌÅÍ ºí·Ï¿¡ ÇØ´çÇÕ´Ï´Ù. ¹è¿ÀÇ n ¹ø° À§Ä¡¿¡ ÀúÀåµÈ °ª¿¡´Â ÀÎÄÚµù µÈ µ¥ÀÌÅÍ ºí·ÏÀÇ À妽º°¡ Æ÷ÇԵ˴ϴÙ. DATA_BLOCKSº¸´Ù ÀûÀº À妽º°¡ ÀûÀº ÀÔ·Â ºí·ÏÀÌ ÃÖÁ¾ À§Ä¡·Î À̵¿µË´Ï´Ù. (ºí·Ï K. k)¸¦ ¹èÄ¡ÇÏ´Â µ¿¾È, ±×µé »çÀÌÀÇ °£°ÝÀÌ Ã¼Å© ºí·ÏÀ¸·Î ä¿öÁú °ÍÀÔ´Ï´Ù. µðÄÚµù ÇÁ·Î¼¼½º´Â ÀÌ¹Ì µðÄÚµù µÈ µ¥ÀÌÅÍ ºí·ÏÀ» ¼öÁ¤ÇÏÁö ¾ÊÁö¸¸ üũ ºí·ÏÀ» ¼öÁ¤ÇÕ´Ï´Ù. Áï, indices = À¸·ÎÀÌ ÇÔ¼ö¸¦ È£ÃâÇϸé data_blocks = 3À» »ç¿ëÇϸéÀÌ ¹è¿ÀÌ ¸®Åϵ˴ϴ٠: . Áï, ÀÔ·Â ºí·Ï 0Àº ÆÄÀÏ ºí·Ï 0, ÀÔ·Â ºí·Ï 1¿¡ ÆÄÀÏ ºí·Ï 2 ¹× ÀÔ·Â ºí·Ï 2¿¡ ÇØ´ç ÇϸçÀÌ ¹è¿À» ¹Ýº¹ÇÏ°í ÇØ´ç µ¥ÀÌÅÍ ºí·ÏÀ» ±â·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù (ºñÈ¿À²ÀûÀÌÁö¸¸) ³» $ i (0 .. $ # iDX) if ($ IDX ! = $ i) #ÀÌ ºí·ÏÀ» ¿òÁ÷ÀÌÁö ¾Ê¾Æ? ÀÎÄÚµù µÈ ºí·Ï º¹»ç $ iidx ¸¦ to $ i}}}}} º¹»ç ¹æ¹ýÀº ¿©±â¿¡¼ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼µå´Â set_encode_blocks¿¡ ÀÇÇØ ¼³Á¤µÈ´ë·Î ºí·Ï ¹è¿À» Æı«ÇÕ´Ï´Ù. $ FEC-> ¼ÅÇà (, )Àº set_decode_blocks¿Í µ¿ÀÏÇÕ´Ï´Ù. ºí·ÏÀÌ µðÄÚµù¿¡ ½ÇÁ¦·Î ¼³Á¤µÇÁö ¾Ê¾Ò À½À» Á¦¿ÜÇÏ°í´Â µ¿ÀÏÇÕ´Ï´Ù. ÀÌ ¹æ¹ýÀº ÀϹÝÀûÀ¸·Î »ç¿ëµÇÁö ¾ÊÁö¸¸ ÀçÁ¤·Ä ¹× µðÄÚµù Àü¿¡ ºí·ÏÀ» À̵¿ÇÏ·Á¸é set_decode_blocks¸¦ È£ÃâÇϸé set_decode_blocks¸¦ µÎ ¹ø È£ÃâÇÏ´Â °Íº¸´Ù ¿À¹ö Çìµå°¡ ³·½À´Ï´Ù. $ fec-> µðÄÚµå´Â ºí·ÏÀ» µðÄÚµùÇÕ´Ï´Ù. set_decode_blocks¿¡ ´ëÇÑ ÀÌÀü È£Ãâ·Î ¼³Á¤ÇϽʽÿÀ. ÀÌ ¸Þ¼µå´Â set_decode_blocks¿¡ ÀÇÇØ ¼³Á¤µÈ ºí·Ï ¹è¿À» Æı«ÇÕ´Ï´Ù. $ FEC-> º¹»ç ($ srcBlock, $ dstblock) À¯Æ¿¸®Æ¼ ÇÔ¼ö´Â ÇϳªÀÇ ºí·Ï (set_encode_blocks in set_encode_blocks¿Í °°ÀÌ ÁöÁ¤µÈ °Íó·³)À» º¹»çÇÏ´Â À¯Æ¿¸®Æ¼ ÇÔ¼öÀÔ´Ï´Ù. ÀÌ·¸°ÔÇϸé BTW°¡ ÀÖ½À´Ï´Ù. SET _ * _ ºí·ÏÀ¸·Î ¼³Á¤µÈ ºí·ÏÀ» Æı«ÇÕ´Ï´Ù. ½Ã³ñ½Ã½º ¾Ë°í¸®Áò :: FEC »ç¿ë; ¿ä±¸ »çÇ× : ¡¤ Perl.
¾Ë°í¸®Áò :: FEC. °ü·Ã ¼ÒÇÁÆ®¿þ¾î