Разработка абстрактного типа данных «Простой, статический граф», страница 10

                            foreach (GEdge e in lst)

                                if (e.v_end == vertex_number)

                                    edge = e;

                           // edge = lst.Count == 0 ? null : lst[vertex_idx];

                            break;

                        }

                    case Graph_Type.TYPE_MATRIX:

                        {

                            edge = ((MGraph)gr).matrix[current_elem, vertex_idx];

                            break;

                        }

                }

                return edge;

            }

            set

            {

                current_elem = (int)value;

            }

        }

        public override void next()

        {

            if (current_elem + 1 >= gr.vertexData.Count)

                return;

            while (true)

            {

                current_elem++;

                if (current_elem == gr.vertexData.Count)

                {

                    //begin();

                    break;

                }

                if ( gr.EdgeExists( (int)gr.vertexData[current_elem],vertex_number) )

                    break;

            }

        }

        public override void begin()

        {

            for (int i = 0; i < gr.V; i++)

            {

                if (gr.EdgeExists((int)gr.vertexData[i], vertex_number))

                {

                    current_elem = i;

                    break;

                }

            }

        }

        public override void end()

        {

            for (int i = gr.V-1; i > 0; i--)

            {

                if (gr.EdgeExists((int)gr.vertexData[i], vertex_number))

                {

                    current_elem = i;

                    break;

                }

            }

            }

        }

 

11.  Заключение

В ходе работы, была спроектирована и реализована универсальная программная коллекция «Простой, статический граф» и программный компонент, являющийся клиентским классом для данной коллекции, решающий задачу нахождения кратчайшего пути между двумя вершинами графа. Также разработана программа визуализации структуры графа, которая обеспечивает его визуальный просмотр, просмотр результатов работы всех операций АТД «Простой, статический граф» и итераторов, операций и результатов задачи 1. Было произведено тестирование данного программного комплекса на графе с количеством вершин не превышающем 20. Результаты всех операций правильны. Были получены теоритические и практические знания о работе с разными типами графов, а также решения различных проблем связанных с ними.


12.  Список используемой литературы

1)  Т. Кормен, Ч. Лейзерсон, Р. Ривест Алгоритмы. Анализ и построение. - М: БИНОМ, 2000 г. – 960 с.


2)   

13.  Приложение А

Листинг класса GraphLGraphи MGraph:

   public abstract class Graph

    {

        private int e;

        private int v;

        private Graph_Orientation orientation;

        public Graph_Type type;

        //private System.Collections.ArrayList Nodes = new System.Collections.ArrayList();

        //private System.Collections.ArrayList Edges = new System.Collections.ArrayList();

        public System.Collections.ArrayList vertexCoords = new System.Collections.ArrayList();

        public System.Collections.ArrayList vertexData = new System.Collections.ArrayList();

        public Graph(Graph_Orientation o)

        {

            e = v = 0;

            orientation = o;

        }

        public Graph(int _v, int _e, Graph_Orientation o)

        {

            v = _v;

            e = _e;

            orientation =o;

        }

        public int E

        {

            get

            {

                return e;

            }

            set

            {

                e = value;

            }

        }

        public int V

        {

            get

            {

                return v;

            }

            set

            {

                v = value;

            }

        }

        public Graph_Orientation Orientation