Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011 / 2011 / UP_MODPR_.RTF
Скачиваний:
38
Добавлен:
12.03.2015
Размер:
541.34 Кб
Скачать

1. Задание

Найти кратчайший цикл в графе [1 с. 227 задача 5].

2. Описание применения

2.1. Постановка задачи

Разработанная программа находит цикл минимальной длины в заданном графе с количеством вершин n <= 20.

В программе используются следующие определения [1]. Граф - это пара (V, E), где V - конечное непустое множество вершин, а E - множество неупорядоченных пар <u, v> вершин из V, называемых ребрами. Рассматривается класс графов без петель, т. е. ребер, в которых u = v.

Путь, соединяющий вершины u и v, - это последовательность вершин v0 , v1 , ... , vk (k ≥ 0) такая, что v0 = u, vk = v и для любого i (0 i < k) вершины vi и vi+1 соединены ребром.

Длина пути v0 , v1 , ... , vk равна k (количеству ребер). Путь замкнут, если vk = v0 . Путь называется простым, если все его вершины различны. Цикл - это замкнутый путь, в котором все ребра различны.

Очевидно, что искомый цикл минимальной длины является простым циклом, все вершины которого, кроме v0 и vk , попарно различны, поскольку непростой цикл всегда содержит в себе цикл меньшей длины.

Решаемая задача иллюстрируется рис. 2.1 и 2.2. На рис. 2.1. показан граф, содержащий несколько циклов, например: 0, 2, 3, 1, 0 длиной четыре; 1, 3, 4, 2, 0, 1 длиной пять. В нем минимальная длина цикла равна трем. При наличии нескольких циклов минимальной длины программа находит один из них.

0 2 0---¬ 1

--------T---4 ¦ ¦ Циклов нет

¦ ¦ / 3¦ ¦4

¦ ¦ / Кратчайший цикл: 2---+---+---5

¦ ¦/ 3, 2, 4, 3 ¦ ¦

L-------- ¦ L---8

1 3 длина = 3 6 7

Рис. 2.1. Граф с циклами Рис. 2.2. Граф без циклов

Не существуют циклы длиной менее трех. Самый длинный простой цикл (проходящий через все вершины) имеет длину n, т. к. при большей длине путь содержит повторяющиеся вершины.

Таким образом, длина искомого кратчайшего цикла лежит в пределах от 3 до n. Возможен также случай отсутствия циклов в графе (рис. 2.2). Тогда выдается соответствующее сообщение.

2.2. Обращение к программе

Запуск программы производится командой операционной системы MS DOS вида:

pkrc <входной-файл >выходной-файл

где pkrc - имя файла, содержащего исполняемый модуль программы, входной-файл - имя входного файла, выходной-файл - имя вы-ходного файла. Файлы задаются в произвольном порядке. Если входной файл не указан, исходные данные вводятся с клавиатуры, если не указан выходной файл, результаты выводятся на экран дисплея.

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

Входные данные программы представляют собой граф. Он может вводиться из файла, имя которого указывается при запуске программы (см. 2.2). Если в команде запуска программы не указан входной файл, исходные данные вводятся с клавиатуры.

Граф представляется в виде перечня ребер, перед которым указывается количество вершин. Каждое ребро задается парой номеров вершин. Вершины нумеруются от 0 до n-1, где n - количество вершин графа (n <= 20). Ребра можно задавать в произвольном порядке. Все числа разделяются пробелами и/или переводом строки (клавиша <Enter>).

При вводе данных с клавиатуры после ввода всех данных нажимается <Ctrl-Z> (обозначает конец файла) и <Enter>. При вводе из файла в конце текста символы конца файла и перевода строки могут отсутствовать.

Например, граф, показанный на рис. 2.1, можно ввести с клавиатуры следующим образом:

5

0 2

4 2

2 3

4 3

1 3

1 0

<Ctrl-Z><Enter>

Другой вариант ввода:

5 0 2 4 2 2 3 4 3 1 3 1 0<Ctrl-Z><Enter>