def setUp(self):
        self.example1 = b.Node(1)

        self.example2 = b.Node(2)
        self.example2.insert(1)
        self.example2.insert(4)
        self.example2.insert(3)
        self.example2.insert(5)
Esempio n. 2
0
 def is_closed(self, F=None):
     if F:
         Link_of_F = Link_of(self, F)
         ridges_set = bst.Node()
         if Link_of_F.n < 2: return True
         for k in range(len(Link_of_F.facets_bin)):
             facet = Link_of_F.facets_bin[k]
             for element in Link_of_F.list_2_pow:
                 if element | facet == facet:
                     ridges_set.insert((element ^ facet, [k]))
         closed = True
         ridges_data_list = []
         ridges_set.TreeToList(ridges_data_list)
         for ridge_data in ridges_data_list:
             if len(ridge_data[1]) != 2:
                 closed = False
                 break
         return closed
     else:
         if not self.FP_bin:
             ridges_set = bst.Node()
             if self.n < 2: return True
             for k in range(len(self.facets_bin)):
                 facet = self.facets_bin[k]
                 for element in self.list_2_pow:
                     if element | facet == facet:
                         ridges_set.insert((element ^ facet, [k]))
             ridges_data_list = []
             ridges_set.TreeToList(ridges_data_list)
         else:
             ridges_data_list = self.FP_bin[self.n - 2]
         closed = True
         for ridge_data in ridges_data_list:
             if len(ridge_data[1]) != 2:
                 closed = False
                 break
         return closed
Esempio n. 3
0
 def list_unclosed_ridges(self):
     if not self.unclosed_ridges:
         ridges_set = bst.Node()
         if self.n < 2: return []
         for k in range(len(self.facets_bin)):
             facet = self.facets_bin[k]
             for element in self.list_2_pow:
                 if element | facet == facet:
                     ridges_set.insert((element ^ facet, [k + 1]))
         ridges_data_list = []
         ridges_set.TreeToList(ridges_data_list)
         unclosed_ridges = []
         for ridge_data in ridges_data_list:
             if len(ridge_data[1]) != 2:
                 unclosed_ridges.append(ridge_data[0])
         unclosed_ridges.sort()
         self.unclosed_ridges = unclosed_ridges
Esempio n. 4
0
 def create_FP(self):
     if not self.FP_bin:
         self.FP_bin = [[] for i in range(self.n)]
         faces_set = [bst.Node() for k in range(self.n)]
         facet_data = [(facet, []) for facet in self.facets_bin]
         faces_set[-1].insertList(facet_data)
         for k in range(self.n - 2, -1, -1):  # dimension
             faces = []
             faces_set[k + 1].TreeToList(faces)
             self.FP_bin[k + 1] = faces.copy()
             for l in range(len(faces)):  # treat every face of dimension k
                 face = faces[l][0]
                 for element in self.list_2_pow[:self.
                                                m]:  # construct the (k-1)-subfaces
                     if element | face == face:
                         subface = element ^ face
                         faces_set[k].insert((subface, [l]))
         vertices = []
         faces_set[0].TreeToList(vertices)
         self.FP_bin[0] = vertices.copy()
Esempio n. 5
0
    def faces_set_to_MNF_set(self):
        if not self.FP_bin:
            self.create_FP()
        temp_faces_list = [list_2_pow[self.m] - 1]
        k = self.m
        subface_set = bst.Node()
        subface_set.insertList(temp_faces_list)
        # we enumerate all the faces until the time we will have the right dimension faces
        while k > self.n:
            subface_set = bst.Node()
            for face in temp_faces_list:  # treat every face of dimension k
                for element in self.list_2_pow[:self.
                                               m]:  # construct the (k-1)-subfaces
                    if element | face == face:
                        subface = element ^ face
                        if not subface_set.findval(subface):
                            if k > self.n or (
                                    k == self.n and
                                (not dichotomie(self.FP_bin[k - 1], subface))):
                                subface_set.insert((subface, []))
            temp_faces_list_data = []
            subface_set.TreeToList(temp_faces_list_data)
            temp_faces_list = [data[0] for data in temp_faces_list_data]

            k = k - 1
        # we then create the set with all subsets of [m] of size <= n not in  the given faces set
        all_non_faces = [bst.Node() for k in range(self.n + 1)]
        all_non_faces[-1] = subface_set
        for k in range(self.n - 1, -1, -1):  # dimension
            faces_data = []
            all_non_faces[k + 1].TreeToList(faces_data)
            faces = [data[0] for data in faces_data]
            for l in range(len(faces)):  # treat every face of dimension k
                face = faces[l]
                for element in self.list_2_pow[:self.
                                               m]:  # construct the (k-1)-subfaces
                    if element | face == face:
                        subface = element ^ face
                        if (not (all_non_faces[k].findval(subface))) and (
                                not dichotomie(self.FP_bin[k],
                                               subface)):  # needs to be fixed
                            all_non_faces[k].insert((subface, [l + 1]))
        MNF_set = bst.Node()
        # Here we will try every face of dimension k
        for k in range(1, self.n + 1):
            faces_to_test_data = []
            all_non_faces[k].TreeToList(faces_to_test_data)
            faces_to_test = [data[0] for data in faces_to_test_data]
            for face_to_test in faces_to_test:
                is_MNF = True
                for element in self.list_2_pow[:self.
                                               m]:  # construct the (k-1)-subfaces
                    if element | face_to_test == face_to_test:
                        subface = element ^ face_to_test
                        if not (dichotomie(subface, self.FP_bin[k - 1])):
                            is_MNF = False
                            break
                if is_MNF:
                    MNF_set.insert((face_to_test, [1]))
        self.MNF_set_bin = []
        MNF_set.TreeToList(self.MNF_set_bin)
        self.MNF_set_bin = self.MNF_set_bin[:][0]
Esempio n. 6
0
def build_tree():
    tree = AVL_tree()  #建立一个树的实体
    for i in range(len(A)):
        node = binary_search_tree.Node(data=A[i], name=i)  #建立一个节点的实体
        tree.add(node)  #将节点加入树中
    return tree
    def test_return_type_error_if_value_is_not_basic_data_type(self):
        with self.assertRaises(TypeError):
            self.example1.insert([])

        with self.assertRaises(TypeError):
            self.example1.insert(b.Node(3))