Вычисление длины самого длинного простого пути от города А до города В в заданной системе односторонних дорог

Страницы работы

Содержание работы

Министерство Образования Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ

Курсовая работа

по практикуму на ЭВМ: «Структуры данных и алгоритмы»

Факультет:                ПМИ

Группа:                      ПМи-81

Студент:                    Дубина Н.Г.

Преподаватель:         Хиценко В.П.

Новосибирск 2009

1. Условие задачи

              Найти длину самого длинного простого пути от города А до города В в заданной системе односторонних дорог.

2. Анализ задачи

2.1. Исходные данные задачи:

namestart €  город, namestop € город, S-система дорог,

S={(name1i , name2i, vesi)| name1i , name2i  €  город, vesi €  R, i=1,…n},

город = {pi|pi €  {подмножество латинских букв}, j=1,…,20}, где name1i  - город начала дороги name2i  - город, конец дороги, vesi – длина дороги;

2.2. Результат:

dist €  R .

2.3. Решение:

 Математическая модель системы односторонних дорог – это взвешенный ориентированный мультиграф G=(X, U) c весовой функцией w:U       R, причем w(u, v)>0, для любых (u, v) принадлежит  Е. Вершины – города, ребра – односторонние дороги между этими городами. Метка вершины – название города. Дуга (u, v) ведет из вершины u в вершину v причем город соответствующий началу пути – вершина u концу пути – v.  Вес дуги – длина расстояния между городами.

Формальная постановка задачи

              В ориентированном взвешенном мультиграфе найти максимальной длинны простой путь между двумя вершинами.

              Простой путь на графе – это такой маршрут в котором ни одна из вершин не повторяется.

Для поиска такого пути возможно просматривать граф в ширину начиная из вершины x0 – вершины начала пути, помечая вершины  значениями – метками их расстояний от x0 . Метки могут быть временные или окончательные. Временная метка xj – это максимальный по длине путь от x0 до  xj, когда в определении пути на графе учитываются не все маршруты из x0 до xj. Окончательная метка  xj – это максимальной длины путь на графе от x0 до xj. Таким образом в каждый момент времени работы алгоритма некоторые вершины будут иметь окончательные  метки. А остальные их часть – временные.  Алгоритм заканчивается, когда вершина z – вершина конца пути, получает окончательную метку, т.е. максимальный по длине путь от x0 до z.

              Решение данной задачи состоит в поочередном рассмотрении наибольших  длин ребер, выявляя такой путь который являлся бы максимальным.

при dist(x0)=0, метка (namestart)=1, y=x0, ;

  повторять

       если метка = 0 и dist(xi)>dist(namestart)+wi,j

           dist(xi)=  dist(namestart)+wi,j ;

         если  xi €  X и метка(xi)=0 то

      dist(y)=min(dist(xi));

 метка(y)=1;

i=i+1;

пока метка(namestop)=0;

Для решения понадобится матрица весов графа Wij

                  Плюсы представления

1)  Достаточно быстрый поиск максимального по длине пути.

Минусы представления

2)  Расходуется большой объем оперативной памяти.

Основные задачи:

              1) Поиск максимальных по длине путей  между заданными городами в системе дорог S.

              2)Ввод системы дорог.

3. Структуры данных, используемые для представлений исходных данных и результатов задачи.

3.1. Входные данные

Внешнее представление системы односторонних дорог:

<система-дорог>::=<количество-городов><список – дорог>

<список – дорог>::=<дорога>|пробел<дорога><список – дорог>

<дорога>::=<откуда>пробел<куда>

<откуда>::=<название>

<куда>::=<название>

<название>::=<элемент>|<элемент><название>

<длинна - дороги>::=вещественное число

<количество – городов>::=натуральное число

<элемент>::=символ из подмножества латинских букв

Внешнее представление

              Для решения задачи граф представим  в виде его матрицы весов W. Где wi,j – вес ребра, то есть длинна пути между i-ой и j-ой вершинами I,j=1,2…n.

3.2.Выходные данные

 Внешнее представление

dist –действительное число –длина путь между городами

Внутреннее представление

float dist;

4. Алгоритм решения задачи

4.1. Укрупненный алгоритм решения задачи

{ввод информации о системе дорог и формирование матрицы весов;

    namestart  = город начала пути

    namestop = город назначения

      поиск самого длинного пути;

      result  = {города через которые проходит маршрут}

      dist  = максимальная длина пути

}

4.2. Алгоритм поиска максимального пути

{

      for (x €  X){

         метка(x)=0;

         dest(x)=0;

}

    y=x0;

     метка (x0)=1;

    while (метка(z)=0){

  for (x принадлежит X){

              if (метка(x) и dist(x)>dist(y)+wij){

Похожие материалы

Информация о работе