Алгоритм раскраски графа (точный) — страница 7

  • Просмотров 3869
  • Скачиваний 89
  • Размер файла 133
    Кб

изменения» «Выполнить задачу!» Для редактирования графа нажать кнопку «приступить» и начать редактирование графа(добавление вершин и ребер) после окончания редактирования нажать кнопки «применить изменения» «Выполнить задачу!». Для выхода из программы жмем «Выход». Входные и выходные данные Данная программа является полностью динамической. Она не нуждается во внешних источниках данных. Входными данными служат вводимые

в ходе выполнения программы вершины и соединяющие их ребра. 3.6 Решение контрольных примеров Пример 1:Случай, когда имеется несколько МПП в данном графе. Найден первый МПП (выделен красным цветом). Найден второй МПП (также выделен красным цветом). Пример 2:Граф с одним МПП. Найден максимально полный подграф(на рисунке красным цветом) Пример 3: Граф, состоящий из нескольких компонент. Заключение На основе трех контрольных примеров, мы

получили верные результаты, что позволяет нам сделать вывод о правильной реализации алгоритма программы. СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 1. Методическое пособие по дискретной математике 2. Библиотека MSDN 3. Яблонский С.В. «Введение в дискретную математику» 4. Новиков Ф.А. «Дискретная математика для программиста» ПРИЛОЖЕНИЕ Текст программы // kursovojDlg.cpp : implementation file // #include "stdafx.h" #include "kursovoj.h" #include "kursovojDlg.h" #ifdef _DEBUG #define

new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif int radio=0; int kolv=0; int paint=0; int kolreb=0; struct rebro1 { int n,k; }; struct versH2 { int x,y; }; struct umn1 { int x1,x2; }; versH2 versh[1000]; rebro1 rebro[2000]; int matsm[1000][1000]; umn1 umn[1000]; int mass[1000][100]; int fff[1000][100]; int colvo; int masskol; int colf,columnf; int umnf[1000][100]; int rask,rat; int rav=0; ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void

DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) virtual void OnOK(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CKursovojDlg dialog CKursovojDlg::CKursovojDlg(CWnd* pParent /*=NULL*/) : CDialog(CKursovojDlg::IDD, pParent) { //{{AFX_DATA_INIT(CKursovojDlg) //}}AFX_DATA_INIT // Note that LoadIcon does not

require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CKursovojDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CKursovojDlg) DDX_Control(pDX, IDC_BUTTON4, m_r1); DDX_Control(pDX, IDC_LIST3, m_l3); DDX_Control(pDX, IDC_LIST2, m_l2); DDX_Control(pDX, IDC_LIST1, m_l1); DDX_Control(pDX, IDC_STATIC1, m_n1); DDX_Control(pDX, IDC_BUTTON3, m_sbros); DDX_Control(pDX, IDC_BUTTON2, m_primizm); DDX_Control(pDX, IDC_BUTTON1, m_nach); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CKursovojDlg, CDialog) //{{AFX_MSG_MAP(CKursovojDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_RADIO1, OnRadio1) ON_BN_CLICKED(IDC_RADIO2, OnRadio2)