def create_standart_placement(self): helper = Help() code_words = list() for word in self.words: code_word = helper.mult_vector_for_matrix(word, self.G_matrix) code_words.append(code_word) ''' print("code_words:") for code_word in code_words: print(code_word) ''' self.standart_placement.append(code_words) depend_list = [0 for x in range(0, 2 ** self.n)] for code_word in code_words: dec = helper.convert_binary_to_decimal(code_word, self.n) depend_list[dec] = 1 for i in range(0, 2 ** self.r - 1): leader = helper.find_min_weight_in_depend_list(depend_list, self.n) #print("leader = ", leader) coset = list() for code_word in code_words: coset_word = helper.xor(leader, code_word) dec = helper.convert_binary_to_decimal(coset_word, self.n) depend_list[dec] = 1 #print("coset_word = ", coset_word) coset.append(coset_word) self.standart_placement.append(coset) #print("depend_list = ", depend_list) return
def create_depended_cols(self, size, depend_list): helper = Help() Comb = Combinatorics() for i in range(2, self.d): allCombinations = [] Comb.GenerationAllCombinations(allCombinations, size, i) for combination in allCombinations: new_vector = helper.sum_of_vectors(self.H_transpose, combination) dec = helper.convert_binary_to_decimal(new_vector, self.r) #print("dec = ", dec) depend_list[dec] = 1 return
def create_H_matrix(self): helper = Help() Comb = Combinatorics() depend_list = [0 for x in range(0, 2 ** self.r)] depend_list[0] = 1 for i in range(0, self.r): curr_list = [0 for x in range(0, self.r)] curr_list[i] = 1 dec = helper.convert_binary_to_decimal(curr_list, self.r) depend_list[dec] = 1 self.H_transpose.append(curr_list) size = self.r while size < self.n - 1: self.create_depended_cols(size, depend_list) zero_index = depend_list.index(0) new_vector = helper.convert_decimal_to_binary(zero_index, self.r) self.H_transpose.append(new_vector) depend_list[zero_index] = 1 size = size + 1 dep_combination = [j for j in range(0, self.d - 1)] new_vector = helper.sum_of_vectors(self.H_transpose, dep_combination) self.H_transpose.append(new_vector) helper.change_rows_order(self.H_transpose) self.H_matrix = helper.transpose_matrix(self.H_transpose)