Автор работы: Пользователь скрыл имя, 17 Января 2013 в 16:41, курсовая работа
Существует несколько причин нарастания интереса к теории графов. Неоспорим тот факт, что теория графов применяется в таких областях, как физика, химия, теория связи, проектирование вычислительных машин, электротехника, машиностроение, архитектура, исследование операций, генетика, психология, социология, экономика, антропология и лингвистика. Эта теория тесно связана также со многими разделами математики, среди которых — теория групп, теория матриц, численный анализ, теория вероятностей, топология и комбинаторный анализ. Достоверно и то, что теория графов служит математической моделью для всякой системы, содержащей бинарное отношение
ВВЕДЕНИЕ
ПОЛНЫЙ ГРАФ. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Исходные параметры
Матрица смежностей
Исходные параметры
Этапы построения модели
РЕШЕНИЕ ЗАДАЧИ О ГРАФАХ
ОБОСНОВАНИЕ ВЫБОРА ПРОГРАММНЫХ СРЕДСТВ
ОПИСАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ
КОНТРОЛЬНЫЙ ПРИМЕР
СПИСОК ЛИТЕРАТУРЫ
ТЕКСТ ПРОГРАММЫ
//{{AFX_MSG_MAP(
ON_WM_LBUTTONUP()
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_WM_MOUSEMOVE()
ON_WM_RBUTTONUP()
ON_WM_KEYUP()
ON_COMMAND(ID_EDIT_DIALOG, OnEditDialog)
ON_COMMAND(ID_EDIT_
ON_COMMAND(ID_EDIT_TEST_ON_FUL
ON_COMMAND(ID_FILE_NEW, OnFileNew)
ON_COMMAND(ID_SHOW_GRAPH, OnShowGraph)
ON_COMMAND(ID_SHOW_GRAPHS, OnShowGraphs)
ON_COMMAND(ID_SHOW_NGRAPH, OnShowNgraph)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_
ON_COMMAND(ID_FILE_PRINT_
END_MESSAGE_MAP()
//////////////////////////////
// CKursovikMinView construction/destruction
CKursovikMinView::
{
// TODO: add construction code here
const int COUNT = 8;
mode = 0;
const CString fname = "Graph.dat";
CString str;
CFile f;
if(f.Open(fname,CFile::
{
f.Close();
m_graph.Load(fname);
}
else{
MessageBox("Ôàéë "+fname+" íå íàéäåí\nÃðàô
áóäåò ñîçäàí ñëó÷àéíûì
m_graph.Create(COUNT);
m_graph.SetRand(30,150,25,0.5)
}
/*
srand(time(NULL));
for(int i=0;i<COUNT;i++ )
{
str.Format("Point-%i",i);
m_graph.SetV(i,CPoint(20+rand(
}
for(i=0;i<COUNT*COUNT;i++)
if(rand() % 5 == 0) m_graph.SetE(i / COUNT, i % COUNT, 5.0+(1.0+rand())/RAND_MAX);
*/
}
CKursovikMinView::~
{
}
BOOL CKursovikMinView::
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(
}
//////////////////////////////
// CKursovikMinView drawing
void CKursovikMinView::OnDraw(CDC* pDC)
{
CKursovikMinDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
switch(mode){
case 0 :m_graph.Show(pDC,RGB(0,0,0)); break;
case 1 :m_Ngraph.Show(pDC,RGB(0,255,
case 2 :m_graph.Show(pDC,RGB(0,0,0)); break;
default : m_graph.Show(pDC); break;
}
// TODO: add draw code for native data here
}
void CKursovikMinView::
{
CScrollView::OnInitialUpdate()
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 100;
SetScrollSizes(MM_TEXT, sizeTotal);
}
//////////////////////////////
// CKursovikMinView printing
BOOL CKursovikMinView::
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CKursovikMinView::
{
// TODO: add extra initialization before printing
}
void CKursovikMinView::
{
// TODO: add cleanup after printing
}
//////////////////////////////
// CKursovikMinView diagnostics
#ifdef _DEBUG
void CKursovikMinView::AssertValid(
{
CScrollView::AssertValid();
}
void CKursovikMinView::Dump(
{
CScrollView::Dump(dc);
}
CKursovikMinDoc* CKursovikMinView::GetDocument(
{
ASSERT(m_pDocument->IsKindOf(
return (CKursovikMinDoc*)m_pDocument;
}
#endif //_DEBUG
//////////////////////////////
// CKursovikMinView message handlers
void CKursovikMinView::OnFileSave()
{
// TODO: Add your command handler code here
CString fname;
CFileDialog dlg(FALSE,"dat","*.dat");
if(dlg.DoModal()==IDOK)
m_graph.Save(dlg.GetFileName()
}
void CKursovikMinView::OnFileOpen()
{
// TODO: Add your command handler code here
CString fname;
CFileDialog dlg(TRUE,"dat","*.dat");
if(dlg.DoModal()==IDOK)
m_graph.Load(dlg.GetFileName()
Invalidate();
}
void CKursovikMinView::OnLButtonUp(
{
// TODO: Add your message handler code here and/or call default
//m_graph.SetRand(30,250,25,0.
CScrollView::OnLButtonUp(
}
void CKursovikMinView::OnMouseMove(
{
// TODO: Add your message handler code here and/or call default
if(nFlags & MK_RBUTTON) {
m_graph.MoveV(point.x,point.y)
Invalidate();
}
CScrollView::OnMouseMove(
}
void CKursovikMinView::OnRButtonUp(
{
// TODO: Add your message handler code here and/or call default
mode = 0;
m_graph.SetCurV(0);
m_Ngraph.Destroy();
for(int i=0;i<m_graph.V_count;i++)
if((fabs(m_graph.V[i].pt.x-
{ m_graph.SetCurV(i); break; }
Invalidate();
CScrollView::OnRButtonUp(nFlag
}
void CKursovikMinView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
switch(nChar)
{
case '0':
m_graph.SetRand(30,250,25,0.8)
Invalidate();
break;
//default: MessageBox("key = "+nChar); break;
}
CScrollView::OnKeyUp(nChar, nRepCnt, nFlags);
}
void CKursovikMinView::
{
// TODO: Add your command handler code here
CGraphSettinngs dlg;
dlg.Init(&m_graph);
dlg.DoModal();
Invalidate();
}
void CKursovikMinView::
{
// TODO: Add your command handler code here
int i=0,j=0,Vs = m_graph.V_count*m_graph.V_
BOOL IsFull = FALSE;
for(i=0;i<Vs;i++)
m_graph.E[i].state = TRUE;
Invalidate();
}
void CKursovikMinView::OnEditTestOn
{
int i=0,j=0,Vs = m_graph.V_count;
BOOL IsFull = FALSE;
CString str;
for(i=0;i<Vs;i++)
{
for(j=0;j<Vs-i;j++)
if(i != j && (!m_graph.E[i*Vs+j].state || !m_graph.E[j*Vs+i].state)) {IsFull = TRUE; break;}
if(IsFull) break;
}
if(!IsFull) MessageBox("Äàííûé ãðàô - ïîëíûé","Test results",MB_OK);
else{
str.Format("Äàííûé ãðàô - íå ÿâëÿåòñÿ ïîëíûì\nÍåò ñîåäèíåíèÿ âåðøèí (%i,%i)",i,j);
MessageBox(str,"Test results",MB_OK);
}
}
void CKursovikMinView::OnFileNew()
{
// TODO: Add your command handler code here
m_graph.SetRand(30,250,25,0.8)
Invalidate();
}
void CKursovikMinView::OnShowGraph(
{
// TODO: Add your command handler code here
mode = 0;
Invalidate();
}
void CKursovikMinView::
{
// TODO: Add your command handler code here
mode = 0;
/*
m_Ngraph.Destroy();
m_Ngraph = m_graph;
!m_Ngraph;
*/
m_graph.MakeFull();
Invalidate();
}
void CKursovikMinView::
{
// TODO: Add your command handler code here
mode = 1;
m_Ngraph = m_graph;
!m_Ngraph;
Invalidate();
}