Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Розробка програми для пошуку максимально віддалених вершин у графі

Реферат Розробка програми для пошуку максимально віддалених вершин у графі





> w.Write (edges.Count);

for (int i=0; i lt; nodes.Count; i ++)

{

w.Write (nodes [i] .isExists ());

w.Write (nodes [i] .GetPositionX ());

w.Write (nodes [i] .GetPositionY ());

}

for (int i=0; i lt; edges.Count; i ++)

{

int node1, node2;

edges [i] .GetLinkedNodes (out node1, out node2);

w.Write (node1);

w.Write (node2);

}

w.Flush ();

w.Close ();

}


2.6 Методи класу GraphMaxDistanceFinder


. У конструктор класу передається посилання на граф, в якому необхідно проводити пошук шляху, а також, ім'я файлу, що зберігає зображення вершини, яка входить в знайдений шлях:


public GraphPathFinder (ref Graph _graph, string pathNodeImage)

{

graph=_graph;

imgPathNode=Image.FromFile (pathNodeImage);

}


. Метод Draw служить для графічного відображення графа зі знайденим маршрутом на заданому графічному контексті (Даний метод використовується замість методу Draw класу Graph:



public void Draw (ref Graphics g)

{

Pen pen;

Pen normalPen=new Pen (Color.Black, 5);

Pen linkedPen=new Pen (Color.Red, 5);

for (int i=0; i lt; graph.edges.Count; i ++)

{

Point xFrom, xTo;

int node1, node2;

graph.edges [i] .GetLinkedNodes (out node1, out node2);

xFrom=new Point (graph.nodes [node1] .GetPositionX (), graph.nodes [node1] .GetPositionY ());

xTo=new Point (graph.nodes [node2] .GetPositionX (), graph.nodes [node2] .GetPositionY ());

pen=normalPen;

if (pathNodes.Contains (node1) amp; amp; pathNodes.Contains (node2))

pen=linkedPen;

g.DrawLine (pen, xFrom, xTo);

}

for (int i=0; i lt; graph.nodes.Count; i ++)

{

GraphNode node=graph.nodes [i];

if (node.isExists ())

{

NODE_TYPE nodeType=NODE_TYPE.NOT_CONNECTED;// 0 - Not connected, 1 - OK node, 2 - Path node

if (! pathNodes.Contains (i))

foreach (GraphEdge edge in graph.edges)

{

int node1, node2;

edge.GetLinkedNodes (out node1, out node2);

if (node1 == i || node2 == i)

{

nodeType=NODE_TYPE.OK;

break;

}

}

else

nodeType=NODE_TYPE.PATH;

switch (nodeType)

{

case NODE_TYPE.NOT_CONNECTED:

g.DrawImage (graph.imgNode, node.GetPositionX () - graph.imageCenter, node.GetPositionY () - graph.imageCenter);

break;

case NODE_TYPE.OK:

g.DrawImage (graph.imgOkNode, node.GetPositionX () - graph.imageCenter, node.GetPositionY () - graph.imageCenter);

break;

case NODE_TYPE.PATH:

g.DrawImage (imgPathNode, node.GetPositionX () - graph.imageCenter, node.GetPositionY () - graph.imageCenter);

break;

default:

g.DrawImage (graph.imgNode, node.GetPositionX () - graph.imageCenter, node.GetPositionY () - graph.imageCenter);

break;

g.DrawString ((i + 1) .ToString (), graph.font, Brushes.Black, node.GetPositionX () - 12, node.GetPositionY () - 12);


3. Метод GraphPathFinder


namespace Graphs

{

public enum NODE_TYPE

{

NOT_CONNECTED=0,

OK=1,

PATH=2,

FOUND=3,

}

class GraphPathFinder


Назад | сторінка 7 з 11 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Модуль Graph в програмі Turbo Pascal
  • Реферат на тему: Системи, керовані потоком даних. Мова "Dataflow Graph Language" ...
  • Реферат на тему: Розробка Web-додатки з використанням JavaScript каркаса Node.js
  • Реферат на тему: Ukrainian break-through in the European and World strategy of individual pr ...
  • Реферат на тему: Робота з таблицями в Електрон таблицях Microsoft Excel 2010. Редагування фо ...