def graphEquivalence(self): if self.subwindow_counter != 2: QMessageBox.warning(self, "Равенство языков", "Должно быть два открытых графа.") else: calcWindow = self.getCurrentNodeEditorWidget() first_graph = Analyzer(calcWindow.scene.nodes, calcWindow.scene.edges) self.mdiArea.activateNextSubWindow() calcWindow = self.getCurrentNodeEditorWidget() second_graph = Analyzer(calcWindow.scene.nodes, calcWindow.scene.edges) self.mdiArea.activateNextSubWindow() print("-----Первый граф") first_graph.checkCycles() print("-----Второй граф") second_graph.checkCycles() brackets_first, labels_first, msg = first_graph.buildCore() brackets_second, labels_second, msg = second_graph.buildCore() set_first = set(labels_first) set_second = set(labels_second) if set_first == set_second: QMessageBox.warning(self, "Равенство языков", "Языки L-графов равны.") else: QMessageBox.about(self, "Равенство языков", "Языки L-графов не равны.")
def makeCore(self): calcWindow = self.getCurrentNodeEditorWidget() #print(calcWindow.filename) # if calcWindow.filename == "/Users/ouroboros/Desktop/df5.json": # print("Core(0, 0) : labels :: -> b - > a - >, brackets :: -> (1 -> ( ->.") # print("Core(1, 1) : labels :: -> b - > a -> b -> a - >, brackets :: -> (1 -> )1 -> ( -> ( ->.") # print("Core(1, 1) : labels :: -> b - > b -> a -> a - >, brackets :: -> (1 -> ( -> )1 -> ( ->.") # elif calcWindow.filename == "/Users/ouroboros/Desktop/df6.json": # print("Core(0, 0) : labels :: -> _ -> b - > b - >, brackets :: empty") # print("Core(1, 1) : labels :: -> _ -> a - > b -> a -> b - >, brackets :: -> _ -> ( -> _ -> ) -> _ ->.") analyze_graph = Analyzer(calcWindow.scene.nodes, calcWindow.scene.edges) analyze_graph.checkCycles() brackets, labels, msg = analyze_graph.buildCore() if msg == '': QMessageBox.warning(self, "Ядро L-графа", "Не получилось найти ядро.") else: QMessageBox.about(self, "Ядро L-графа", msg)