Systematic encoding and decoding of chain reaction codes
First Claim
1. A method of encoding data into a chain reaction code having systematic output symbols and non-systematic output symbols, the method comprising:
- generating, from the data, a set of input symbols, the input symbols comprising systematic output symbols;
computing systematic keys for the set of input symbols;
generating, from the set of input symbols and corresponding systematic keys, a plurality of intermediate input symbolsencoding the plurality of intermediate input symbols into one or more non-systematic output symbols, wherein one or more intermediate input symbols are encoded into one non-systematic output symbol, wherein each of the one or more non-systematic output symbols is selected from an alphabet of non-systematic output symbols, and wherein each non-systematic output symbol is generated as a function of one or more of the input symbols,wherein any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered and (b) one or more of the non-systematic output symbols;
wherein computing systematic keys for the plurality of input symbols comprises;
(i) computing L unique keys D(0)-D(L−
1), wherein L is a predefined number;
(ii) constructing a decoding matrix having K columns and L rows, wherein K corresponds to the number of input symbols, and wherein each row corresponds to a function of the key D(j), wherein j is equal to a value between 0 and L−
1;
(iii) initializing a set S to contain no symbols;
(iv) applying chain reaction decoding to the decoding matrix to identify an output node to be added to set S;
(v) adding the output node to set S;
(vi) updating the decoding matrix to remove the output node;
(v) comparing size of set S to K;
(vi) if the size of set S is less than K, repeating steps (iv)-(v); and
(vii) if the size of set S is equal to K, sorting the elements in set S from smallest to largest and using the sorted set S to create the systematic keys.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of encoding data into a chain reaction code includes generating a set of input symbols from input data. Subsequently, one or more non-systematic output symbols is generated from the set of input symbols, each of the one or more non-systematic output symbols being selected from an alphabet of non-systematic output symbols, and each non-systematic output symbol generated as a function of one or more of the input symbols. As a result of this encoding process, any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered, and (b) one or more of the non-systematic output symbols.
337 Citations
20 Claims
-
1. A method of encoding data into a chain reaction code having systematic output symbols and non-systematic output symbols, the method comprising:
-
generating, from the data, a set of input symbols, the input symbols comprising systematic output symbols; computing systematic keys for the set of input symbols; generating, from the set of input symbols and corresponding systematic keys, a plurality of intermediate input symbols encoding the plurality of intermediate input symbols into one or more non-systematic output symbols, wherein one or more intermediate input symbols are encoded into one non-systematic output symbol, wherein each of the one or more non-systematic output symbols is selected from an alphabet of non-systematic output symbols, and wherein each non-systematic output symbol is generated as a function of one or more of the input symbols, wherein any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered and (b) one or more of the non-systematic output symbols; wherein computing systematic keys for the plurality of input symbols comprises; (i) computing L unique keys D(0)-D(L−
1), wherein L is a predefined number;(ii) constructing a decoding matrix having K columns and L rows, wherein K corresponds to the number of input symbols, and wherein each row corresponds to a function of the key D(j), wherein j is equal to a value between 0 and L−
1;(iii) initializing a set S to contain no symbols; (iv) applying chain reaction decoding to the decoding matrix to identify an output node to be added to set S; (v) adding the output node to set S; (vi) updating the decoding matrix to remove the output node; (v) comparing size of set S to K; (vi) if the size of set S is less than K, repeating steps (iv)-(v); and (vii) if the size of set S is equal to K, sorting the elements in set S from smallest to largest and using the sorted set S to create the systematic keys. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method of encoding data into a chain reaction code having systematic output symbols and non-systematic output symbols, the method comprising:
-
generating, from the data, a set of input symbols, the input symbols comprising systematic output symbols; computing systematic keys for the set of input symbols; generating, from the set of input symbols and corresponding systematic keys, a plurality of intermediate input symbols encoding the plurality of intermediate input symbols into one or more non-systematic output symbols, wherein one or more intermediate input symbols are encoded into one non-systematic output symbol, wherein each of the one or more non-systematic output symbols is selected from an alphabet of non-systematic output symbols, and wherein each non-systematic output symbol is generated as a function of one or more of the input symbols, wherein any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered and (b) one or more of the non-systematic output symbols; wherein computing systematic keys for the plurality of input symbols comprises; (i) computing L unique keys D(0)-D(L−
1), wherein L is a predefined number;(ii) determining whether it is possible if K symbols can be decoded using the L keys;
wherein K corresponds to the number of input symbols;(iii) if it is determined that K symbols cannot be decoded using the L keys, aborting the current attempt to compute systematic keys for the plurality of input symbols; (iv) initializing a systematic set, a non-systematic set, and an unvisited set, wherein the systematic set is initialized to be empty, wherein the non-systematic set is initialized to be empty, and wherein the unvisited set is initialized to contain keys D(0)-D(L−
1);(v) removing a key, C, from the unvisited set; (vi) determining whether it is possible that K symbols can be decoded using the union of the unvisited set and the systematic set; (vi) if it is possible to decode K symbols in step (vi), adding key C to the non-systematic set; (vii) if it is not possible to decode K symbols in step (vi), adding key C to the systematic set; (viii) repeating steps (v)-(vii) until the systematic set contains at least K symbols; and (ix) using the systematic set as the systematic keys. - View Dependent Claims (7, 8, 9, 10, 11)
-
-
12. A method of encoding data into a chain reaction code having systematic output symbols and non-systematic output symbols, the method comprising:
-
generating, from the data, a set of input symbols, the input symbols comprising systematic output symbols; computing systematic keys for the set of input symbols; generating, from the set of input symbols and corresponding systematic keys, a plurality of intermediate input symbols encoding the plurality of intermediate input symbols into one or more non-systematic output symbols, wherein one or more intermediate input symbols are encoded into one non-systematic output symbol, wherein each of the one or more non-systematic output symbols is selected from an alphabet of non-systematic output symbols, and wherein each non-systematic output symbol is generated as a function of one or more of the input symbols, wherein any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered and (b) one or wore of the non-systematic output symbols; wherein computing systematic keys for the plurality of input symbols comprises; (i) computing L unique keys D(0)-D(L−
1), wherein L is a predefined number;(ii) constructing a modified decoding matrix having K columns and rows, wherein K corresponds to the number of input symbols, and wherein for any value of j between 0 and L−
1 the row entries along the jth row are computed as a function of the key D(j); and(iii) solving the set of linear equations described by the modified decoding matrix, wherein the systematic keys are computed as a function of the solutions of the linear equations; wherein computing L unique keys is done using a random number generator.
-
-
13. A method of decoding a chain reaction code having systematic output symbols and non-systematic output symbols into a set of input symbols, the input symbols comprising data which is sought, the method comprising:
-
providing a first subset of the set of input symbols, the first subset of input symbols comprising one or more systematic output symbols; providing one or more non-systematic output symbols, wherein each non-systematic output symbol is selected from an alphabet of non-systematic output symbols, and wherein each non-systematic output symbol is generated as a function of one or more of the input symbols; and recovering a remaining subset of the input symbols comprising one or more input symbols not included in the first set of input symbols, the remaining subset of input symbols recovered from;
(i) a predetermined number of non-systematic output symbols;
or (ii) a combination of (a) one or more input symbols from the first subset, and (b) one or more non-systematic output symbols;wherein recovering a remaining subset of the input symbols comprises; (i) creating a matrix B, wherein the number of rows in B corresponds to the number of provided non-systematic output symbols and wherein the number of columns in B corresponds to the number of input symbols; (ii) creating a matrix C, wherein the number of rows in C corresponds to the number of systematic keys and wherein the number of columns in C corresponds to the number of input symbols. (iii) creating a matrix A as the inverse of matrix C; (iv) creating a matrix H from the product of B and A; (v) creating a set E, wherein E is the set of indices of the non-provided systematic symbols; (vi) creating a set R, wherein R is the set of indices of the provided systematic symbols; (vii) dividing matrix H into sub-matrices He and Hr, wherein He corresponds to the indices of the systematic symbols not provided and wherein Hr corresponds to the indices of the systematic symbols provided; (ix) creating vector y from the product of Hr with a vector formed by the provided systematic symbols; (x) creating vector b from the provided non-systematic output symbols and vector y; (xi) solving the system of equations for x, wherein the system of equations is He*x=y+b; and (xii) using x to recover input symbols. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
Specification