Skip to content
This repository has been archived by the owner on Dec 28, 2023. It is now read-only.

[task_03] Add problem solution #397

Open
wants to merge 24 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
| 20 | [Романюк Алексей](https://github.com/Gomziakoff) |[ii02320](trunk/ii02320) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | 9|
| 21 | [Скварнюк Давид](https://github.com/Bidway) |[ii02321](trunk/ii02321) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | 9|
| 22 | [Тутина Елизавета](https://github.com/Eliza0756) |[ii02322](trunk/ii02322) | ✅ | ✅ | ✅ | ✅ | | | | | 7|
| 23 | Швороб Владислав | | ✅ | ✅ | ✅ | | | | | | 6|
| 23 | Швороб Владислав | | ✅ | ✅ | ✅ | | | | | | 7|

## Группа ИИ-24
| № | ФИО | Directory name | #0 | #1 | #2 | #3 | #4 | #5 | #6 | #7 | Рейтинг |
Expand Down
Binary file added trunk/II02323/task_03/doc/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added trunk/II02323/task_03/doc/1page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added trunk/II02323/task_03/doc/2page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added trunk/II02323/task_03/doc/3page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added trunk/II02323/task_03/doc/4page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added trunk/II02323/task_03/doc/5page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
109 changes: 109 additions & 0 deletions trunk/II02323/task_03/doc/otchet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<b><p align="center"> Министерство образования Республики Беларусь</p>
<p align="center">Учреждение образования</p>
<p align="center">“Брестский Государственный технический университет”</p>
<p align="center">Кафедра ИИТ</p> </b>
<br><br><br><br><br><br><br>
<p align="center">Лабораторная работа №3</p>
<p align="center">По дисциплине “Общая теория интеллектуальных систем”</p>
<p align="center">Тема: “Разработка редакторов графов”</p>
<br><br><br><br><br>
<b><p align="right">Выполнил:</p></b>
<p align="right">Студент 2 курса</p>
<p align="right">Группы ИИ-23</p>
<p align="right">Швороб В.А.</p>
<b><p align="right">Проверил:</p></b>
<p align="right">Иванюк Д. С.</p>
<br><br><br><br><br>
<p align="center">Брест 2023</p>

---
# Задание
<p>
1. Разработать и реализовать программный продукт, позволяющий
редактировать графовые конструкции различных видов и производить над
ними различные действия. Язык программирования - **C++**.

</p>
2. Редактор должен позволять (задания со <strong>*</strong> являются необязательными):
<ol type='a'>
<li> одновременно работать с несколькими графами (MDI); </li>
<li> <strong>[*]</strong> выделение одновременно нескольких элементов графа, копирование
выделенного фрагмента в clipboard и восстановление из него;</li>
<li> задавать имена графам;</li>
<li> сохранять и восстанавливать граф во внутреннем формате программы;</li>
<li> экспортировать и импортировать граф в текстовый формат (описание
см. ниже);</li>
<li> создавать, удалять, именовать, переименовывать, перемещать узлы;</li>
<li> создавать ориентированные и неориентированные дуги, удалять дуги;</li>
<li> добавлять, удалять и редактировать содержимое узла (содержимое в
виде текста и ссылки на файл);</li>
<li> задавать цвет дуги и узла, образ узла;</li>
<li> <strong>[*]</strong> создавать и отображать петли;</li>
<li> <strong>[*]</strong> создавать и отображать кратные дуги.</li>
</ol>


<p>
3. Программный продукт должен позволять выполнять следующие операции:
<ol type='a'>
<li> выводить информацию о графе:
<ul>
<li> количество вершин, дуг;</li>
<li> степени для всех вершин и для выбранной вершины;</li>
<li> матрицу инцидентности;</li>
<li> матрицу смежности;</li>
<li> является ли он деревом, полным, связанным, эйлеровым, <strong>[*]</strong> планарным;</li>
</ul>
</li>
<li> поиск всех путей (маршрутов) между двумя узлами и кратчайших;</li>
<li> вычисление расстояния между двумя узлами;</li>
<li> вычисление диаметра, радиуса, центра графа;</li>
<li> <strong>[*]</strong> вычисление векторного и декартово произведения двух графов;</li>
<li> <strong>[*]</strong> раскраска графа;</li>
<li> нахождения эйлеровых, <strong>[*]</strong> гамильтоновых циклов;</li>
<li> <strong>[*]</strong> поиск подграфа в графе, со всеми или некоторыми неизвестными
узлами;</li>
<li> <strong>[*]</strong> поиск узла по содержимому;</li>
<li> <strong>[*]</strong> объединение, пересечение, сочетание и дополнение графов;</li>
<li> <strong>[*]</strong> приведение произвольного графа к определенному типу с
минимальными изменениями:
<ul>
<li> бинарное и обычное дерево;</li>
<li> полный граф;</li>
<li> планарный граф;</li>
<li> связанный граф;</li>
</ul>
</li>
</ol>
</p>


4. Формат текстового представления графа:
<ГРАФ> ::= <ИМЯ ГРАФА> : UNORIENT | ORIENT ; <ОПИСАНИЕ УЗЛОВ> ;
<ОПИСАНИЕ СВЯЗЕЙ> .
<ИМЯ ГРАФА> ::= <ИДЕНТИФИКАТОР>
<ОПИСАНИЕ УЗЛОВ> ::= <ИМЯ УЗЛА> [ , <ИМЯ УЗЛА> …]
<ИМЯ УЗЛА> ::= <ИДЕНТИФИКАТОР>
<ОПИСАНИЕ СВЯЗЕЙ> ::= <ИМЯ УЗЛА> -> <ИМЯ УЗЛА> [ , <ИМЯ УЗЛА> …] ;
[<ОПИСАНИЕ СВЯЗЕЙ> …]

# Приложение для работы с графами:

<b>Главнвй экран приложения</b>

![1page](1page.png)

# Добавление вершин:

![2page](2page.png)

# Добавление вершин:

![3page](3page.png)
# Информация о графе:

![1](1.png)

# Импорт и экспорт графа:

![5page](5page.png)
28 changes: 28 additions & 0 deletions trunk/II02323/task_03/src/AppInterface.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from tkinter import Button

def create_buttons(root, menu_add_vertex, menu_add_edge_window, eulerian_cycle_search_function, shortest_path):
# List of Buttons
add_vertex_button = Button(root, text="Добавить вершину", anchor="w", command=menu_add_vertex, font=('Arial', 9), width=15, bg='lightblue', fg='black')
add_edges_button = Button(root, text="Добавить ребро", anchor="w", command=menu_add_edge_window, font=('Arial', 9), width=15, bg='lightblue', fg='black')
euler_cycle_find_button = Button(root, text="Эйлеров цикл", anchor="w", command=eulerian_cycle_search_function, font=('Arial', 9), width=15, bg='lightblue', fg='black')
shortest_way_find_button = Button(root, text="Кратчайший путь", anchor="w", command=shortest_path, font=('Arial', 9), width=15, bg='lightblue', fg='black')

info = Button(root, text="Информация о графе", anchor="w", command=lambda: None, font=('Arial', 9), width=15, bg='lightblue', fg='black')
impirt = Button(root, text="Импорт", anchor="w", command=lambda: None, font=('Arial', 9), width=15, bg='lightblue', fg='black')
export = Button(root, text="Экспорт", anchor="w", command=lambda: None, font=('Arial', 9), width=15, bg='lightblue', fg='black')

add_vertex_button.grid(row=1, column=0, sticky="ew", padx=10, pady=5)
add_edges_button.grid(row=2, column=0, sticky="ew", padx=10, pady=5)
euler_cycle_find_button.grid(row=3, column=0, sticky="ew", padx=10, pady=5)
shortest_way_find_button.grid(row=4, column=0, sticky="ew", pady=5, padx=10)
info.grid(row=5, column=0, sticky="ew", pady=30, padx=10)
impirt.grid(row=6, column=0, sticky="ew", pady=5, padx=10)
export.grid(row=7, column=0, sticky="ew", pady=5, padx=10)

# Canvas Binds

def bind_canvas(root, canvas, node_movement_function, change_name_weight_function, color_change_function, remove):
canvas.bind('<B1-Motion>', node_movement_function)
canvas.bind('<Button-2>', change_name_weight_function)
canvas.bind('<Button-3>', color_change_function)
root.bind('<B3-Motion>', remove)
14 changes: 14 additions & 0 deletions trunk/II02323/task_03/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
cmake_minimum_required (VERSION 3.8)

if (POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

project ("laba3")

add_executable (laba3 "main.cpp" )

if (CMAKE_VERSION VERSION_GREATER 3.12)
set_property(TARGET laba3 PROPERTY CXX_STANDARD 20)
endif()
Binary file not shown.
7 changes: 7 additions & 0 deletions trunk/II02323/task_03/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include <cstdlib>
using namespace std;

int main() {
system("python main.py");
return 0;
}
Loading