Esempio n. 1
0
 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-графов не равны.")
Esempio n. 2
0
 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)
Esempio n. 3
0
 def checkCycles(self):
     calcWindow = self.getCurrentNodeEditorWidget()
     analyze_graph = Analyzer(calcWindow.scene.nodes,
                              calcWindow.scene.edges)
     # print(anal.edges)
     # print(anal.vertices)
     msg = analyze_graph.checkCycles()
     if msg == '.':
         QMessageBox.warning(self, "Циклы в L-графе", "В графе нет циклов.")
     else:
         QMessageBox.about(self, "Циклы в L-графе", msg)